数据中心与对外平台的积分同步
来源:互联网 发布:摄像制作软件 编辑:程序博客网 时间:2024/04/29 12:25
在公司做的项目,有两个不同的服务器,一个是数据中心,一个是对外平台。数据中心和对外平台中的用户是同步的。也就是说同一个用户可以在对外平台登录,也可以在数据中心登录。但是在给用户增加积分时,只保存在对外平台的数据库中。因此,同一个用户在登录对外平台是可以看到等级(根据积分来的),在数据中心里却看不见,因此要定时的同步对外平台和数据中心的积分数据。
1、写一个配置文件config.properties,用来保存两个数据库的连接信息。
jdbcDriverMysqlFY=com.mysql.jdbc.DriverjdbcUrlMysqlFY=jdbc:mysql://172.18.10.146:3306/shfy_dwpt?characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNulljdbcUserMysqlFY=rootjdbcPasswordMysqlFY=12344jdbcDriverMysqlSJZX=com.mysql.jdbc.DriverjdbcUrlMysqlSJZX=jdbc:mysql://172.18.10.146:3306/shfy_sjzx?characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNulljdbcUserMysqlSJZX=rootjdbcPasswordMysqlSJZX=12344
2、写一个获得配置属性的工具类PropertiesUtil.java。
package com.sudytech.plugs.shfy.jifentongbu;import java.io.IOException;import java.io.InputStream;import java.util.Properties;import java.util.logging.Level;import java.util.logging.Logger;public class PropertiesUtil { private static Properties props = new Properties(); static { ClassLoader loader = PropertiesUtil.class.getClassLoader(); InputStream is = loader.getResourceAsStream("com/sudytech/plugs/shfy/jifentongbu/config.properties"); try { props.load(is); } catch (IOException e) { Logger.getLogger(PropertiesUtil.class.getName()).log(Level.SEVERE, null, e); } } public static String getValue(String key) { return props.getProperty(key); }}
MysqlDaoFY.java
package com.sudytech.plugs.shfy.jifentongbu;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;public class MysqlDaoFY { public static String DRIVER =PropertiesUtil.getValue("jdbcDriverMysqlFY"); public static String URL = PropertiesUtil.getValue("jdbcUrlMysqlFY"); public static String USER =PropertiesUtil.getValue("jdbcUserMysqlFY"); public static String PASSWORD = PropertiesUtil.getValue("jdbcPasswordMysqlFY"); public static Connection getConnection() { Connection conn = null; try { Class.forName(DRIVER); conn = DriverManager.getConnection(URL, USER, PASSWORD); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } return conn; } public static void closeAll(ResultSet rs, Statement stmt, Connection conn) { try { rs.close(); } catch (Exception ex) { //ex.printStackTrace(); } try { stmt.close(); } catch (Exception ex) { //ex.printStackTrace(); } try { conn.close(); } catch (Exception ex) { //ex.printStackTrace(); } } public static int update(Connection conn,String sql, Object[] params) throws Exception { PreparedStatement pstmt = null; try { pstmt = conn.prepareStatement(sql); for (int i = 0; params != null && i < params.length; i++) { pstmt.setObject(i + 1, params[i]); } return pstmt.executeUpdate(); } catch (Exception e) { e.printStackTrace(); throw e; } } public static ResultSet query(Connection conn, String sql, Object[] params) throws Exception { PreparedStatement pstmt = null; ResultSet rs = null; try { pstmt = conn.prepareStatement(sql); for (int i = 0; params != null && i < params.length; i++) { pstmt.setObject(i + 1, params[i]); } rs = pstmt.executeQuery(); } catch (Exception e) { e.printStackTrace(); throw e; } return rs; }}
MysqlDaoSJZX.java
package com.sudytech.plugs.shfy.jifentongbu;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;public class MysqlDaoSJZX { public static String DRIVER =PropertiesUtil.getValue("jdbcDriverMysqlSJZX"); public static String URL = PropertiesUtil.getValue("jdbcUrlMysqlSJZX"); public static String USER =PropertiesUtil.getValue("jdbcUserMysqlSJZX"); public static String PASSWORD = PropertiesUtil.getValue("jdbcPasswordMysqlSJZX"); public static Connection getConnection() { Connection conn = null; try { Class.forName(DRIVER); conn = DriverManager.getConnection(URL, USER, PASSWORD); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } return conn; } public static void closeAll(ResultSet rs, Statement stmt, Connection conn) { try { rs.close(); } catch (Exception ex) { //ex.printStackTrace(); } try { stmt.close(); } catch (Exception ex) { //ex.printStackTrace(); } try { conn.close(); } catch (Exception ex) { //ex.printStackTrace(); } } public static int update(Connection conn,String sql, Object[] params) throws Exception { PreparedStatement pstmt = null; try { pstmt = conn.prepareStatement(sql); for (int i = 0; params != null && i < params.length; i++) { pstmt.setObject(i + 1, params[i]); } return pstmt.executeUpdate(); } catch (Exception e) { e.printStackTrace(); throw e; } } public static ResultSet query(Connection conn, String sql, Object[] params) throws Exception { PreparedStatement pstmt = null; ResultSet rs = null; try { pstmt = conn.prepareStatement(sql); for (int i = 0; params != null && i < params.length; i++) { pstmt.setObject(i + 1, params[i]); } rs = pstmt.executeQuery(); } catch (Exception e) { e.printStackTrace(); throw e; } return rs; }}
4、开始做积分同步了。
package com.sudytech.plugs.shfy.jifentongbu;import java.sql.Connection;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.util.ArrayList;import java.util.List;public class T_POINTS_USERPOINTS { private static String TABLE_NAME = "T_POINTS_USERPOINTS"; private static List<String> sqlString = new ArrayList<String>(); public static void doMethod() { Connection con1 = null, con2 = null; ResultSet rs1 = null,rs2 = null; try { con1 = MysqlDaoFY.getConnection(); StringBuffer querySql1 = new StringBuffer().append("SELECT * FROM " + TABLE_NAME); rs1 = MysqlDaoFY.query(con1, querySql1.toString(), null); con2 = MysqlDaoSJZX.getConnection(); con2.setAutoCommit(false); StringBuffer querySql2 = new StringBuffer(); StringBuffer querySql3 = new StringBuffer(); while(rs1.next()) { querySql2 = new StringBuffer().append("SELECT * FROM " + TABLE_NAME); querySql2.append(" WHERE USERID="+rs1.getInt(3)+" AND MODULEID="+rs1.getInt(4)); //先查看数据中心是否存在符合条件的数据,存在则更新,否则新增加一条 rs2=MysqlDaoSJZX.query(con2, querySql2.toString(), null); if(rs2.next()){//存在,更新 querySql3 = new StringBuffer().append("UPDATE "+TABLE_NAME+" SET SCORE = "+rs1.getInt(2)); querySql3.append(" WHERE USERID = "+rs1.getInt(3));querySql3.append(" AND MODULEID = "+rs1.getInt(4)); }else{//不存在,插入 querySql3 = new StringBuffer().append("INSERT INTO "+TABLE_NAME); querySql3.append(" (SCORE,USERID,MODULEID) VALUES ("); querySql3.append(rs1.getInt(2)+","+rs1.getInt(3)+","+rs1.getInt(4)).append(")"); } sqlString.add(querySql3.toString()); } Statement st = con2.createStatement(); for (String sql : sqlString) { st.execute(sql); System.out.println(sqlString); } con2.commit(); } catch (Exception e) { e.printStackTrace(); try { con2.rollback(); } catch (SQLException ex1) { } } finally { MysqlDaoFY.closeAll(null, null, con1); } } /** * @param args the command line arguments */ public static void main(String[] args) { doMethod(); } }
PointsDataSynServlet.java
package com.sudytech.plugs.shfy.jifentongbu;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import com.sudytech.log.ILog;import com.sudytech.log.LogFactory;public class PointsDataSynServlet extends HttpServlet{ private static ILog _log = LogFactory.getInstance().getLog(PointsDataSynServlet.class); private PointsDataSynThread _PointsThread; @Override public void init() throws ServletException {try { System.out.println("开启积分同步线程。。。");_PointsThread = new PointsDataSynThread();_PointsThread.start();} catch (Exception e) { _log.error("servlet初始化失败", e);} }}
PointsDataSynThread.java
package com.sudytech.plugs.shfy.jifentongbu;import java.util.Timer;import com.sudytech.log.ILog;import com.sudytech.log.LogFactory;public class PointsDataSynThread extends Thread{ private static ILog _log = LogFactory.getInstance().getLog(PointsDataSynThread.class); public PointsDataSynThread() { openTimer(); } private void openTimer() { new Timer().schedule(new MyTask(), 1 * 60, 1 * 60 * 1000 * 60 * 24); } public class MyTask extends java.util.TimerTask { @Override public void run() { T_POINTS_USERPOINTS.doMethod(); } } }
6、最后要在配置文件中加上如下代码。
<!--纺院与数据中心积分同步线程--> <servlet> <servlet-name>PointsDataSynServlet</servlet-name> <servlet-class>com.sudytech.plugs.shfy.pointsSynchronous.PointsDataSynServlet</servlet-class> <load-on-startup>3</load-on-startup> </servlet>
0 0
- 数据中心与对外平台的积分同步
- 电子政务信息交换平台与数据中心的构建
- 构建基于云平台的下一代数据中心
- Mesos:数据中心细粒度的资源共享平台
- docker 平台采用openvpn对外提供服务的部署方法
- 【转载】DEDE与DISCUZ整合积分同步,积分extcredits1(积分),extcredits2(金钱)
- 数据中心的建设与绩效管理
- 数据中心的虚拟化与云计算
- 分布式云数据中心的建设与管理
- 云计算与金融系统的数据中心
- 盘点云数据中心的优势与挑战
- 浅谈数据中心管理平台的三大功能
- 自己想部署和开发的数据中心平台
- 【转帖】浅谈对外包行业与外包公司的认识
- 和式与积分的关系
- 【转载】DEDE与DISCUZ整合积分同步[会员表,积分表
- MongoDB高可用集群配置的方案-对称集群(一致对外)与非对称集群(只有我对外,其它待命)
- Google Calendar 跨平台同步方案(随时同步手机与电脑的日程安排)
- 【编程语言-Java】Java线程创建方式及对比
- 百度地图 使覆盖物显示在地图中心位置
- 国外程序员整理的机器学习资源大全
- 接口
- 【编程语言-Java】ThreadPoolExecutor介绍与实例
- 数据中心与对外平台的积分同步
- Android studio入门经典
- B/S总结
- HDU 2001 计算两点间的距离
- Hive JOIN使用详解
- iosUITextFiled银行卡号格式化
- UML图示与代码对照
- 字符编码详解
- MySQL 水平拆分(读书笔记整理)