📄 cmppsavedata.java
字号:
package com.wayout.wayoutsp.communication;import java.io.*;import java.util.*;import java.sql.*;import com.wayout.wayoutsp.publics.*;import com.wayout.wayoutsp.communication.*;public class CmppSaveData extends Thread{ private int SAVE_INTERVAL = 5000; private boolean bConnectFlag = false; //获取连接数据库标志 private boolean bShutdownFlag = false; //是否需要提交(即已经有数据) private boolean conn1NeedCommit = false; private boolean conn2NeedCommit = false; private boolean conn3NeedCommit = false; //是否用executeBatch private boolean bMsgExecBatch = true; //是否自动提交 true:YES false:NO private boolean bAutoCommit = false; private volatile Connection conn1 = null; private volatile Connection conn2 = null; private volatile Connection conn3 = null; private volatile PreparedStatement pstmt1 = null;// for submit private volatile PreparedStatement pstmt2 = null;// for report private volatile PreparedStatement pstmt3 = null;// for deliver //地区标志 private static int IsmgSectionFlag = IsmgInfo.IsmgSectionFlag; private String submitSqlStatement = "insert into WL_SYS_TOISMG( NUMTOISMGGUID, "+ "NUMSEQ_SUBMIT_ID, VC2MSG_ID, NUMPK_TOTAL, NUMPK_NUMBER, NUMREGISTERED_DELIVERY, "+ "NUMMSG_LEVEL, VC2SERVICE_ID, NUMFEE_USERTYPE, VC2FEE_TERMINAL_ID, NUMTP_PID, "+ "NUMTP_UDHI, NUMMSG_FMT, VC2MSG_SRC, VC2FEETYPE, VC2FEECODE, "+ "VC2VALID_TIME, VC2AT_TIME, VC2SRC_ID, NUMDESTUSR_TL, VC2DEST_TERMINAL_ID, "+ "NUMMSG_LENGTH, VC2MSG_CONTENT, VC2RESERVE, DATESUBMIT_TIME, NUMSUBMIT_RESULT, "+ "NUMSEND_COUNTER, NUMRECORD_STATUS ,NUMOPERATESEQID,VC2DELIVER_REPORT_STATUS,NUMDISTCODE,VC2ENABLEFLAG)" + "values(SEQ_WL_SYS_TOISMG.nextval, "+ " ?, ?, ?, ?, ?, "+ " ?, ?, ?, ?, ?, " + " ?, ?, ?, ?, ?, " + " ?, ?, ?, ?, ?, " + " ?, ?, ?, sysdate, ?, " + " ?, 0,?,'',?,'Y')"; private String reportSqlStatement = "insert into WL_SYS_FROMISMGRPT( NUMRPTGUID, "+ "NUMMSG_ID, VC2DEST_ID, VC2SERVICE_ID, "+ "VC2SRC_TERMINAL_ID, NUMMSG_LENGTH,VC2REPORTMSG_ID, "+ "VC2REPORTSTAT, VC2REPORTSUBMIT_TIME, VC2REPORTDONE_TIME, VC2REPORTDEST_TERMINAL_ID,NUMREPORTSMSC_SEQUENCE, "+ "VC2RESERVED, NUMRESP_RESULT, DATERECV_TIME, VC2STATUS,NUMDISTCODE,VC2ENABLEFLAG)" + "values(SEQ_WL_SYS_FROMISMGRPT.nextval, "+ " ?, ?, ?, "+ " ?, ?, ?, " + " ?, ?, ?, ?, ?, " + " ?, ?, sysdate, '0',?,'Y')"; private String deliverSqlStatement = "insert into WL_SYS_FROMISMG( NUMFRISMGID, "+ "NUMMSG_ID, VC2DEST_ID, VC2SERVICE_ID, "+ "NUMMSG_FMT, VC2SRC_TERMINAL_ID, NUMREGISTERED_DELIVERY, NUMMSG_LENGTH,VC2MSG_CONTENT, "+ "VC2RESERVED, NUMRESP_RESULT, DATERECV_TIME, VC2STATUS,NUMDISTCODE,VC2ENABLEFLAG )" + "values(SEQ_WL_SYS_FROMISMG.nextval, "+ " ?, ?, ?, "+ " ?, ?, ?, ?, ?, " + " ?, 0, sysdate, '0',?,'Y' )"; public CmppSaveData() { } /** * 写数据线程执行体. * 连接维护<br> * 提交数据 */ public void run() { connectDatabase(); if( bConnectFlag ) System.out.println("Cmpp Save Data Thread started ." ); while( !bShutdownFlag ) { if( !bConnectFlag ){ PublicConstants.writeLog.info("Cmpp Save Data Thread reconnect Db ..." ,0); PublicFuction.threadSleep(PublicConstants.RECONNECTDB_INTERVAL) ; connectDatabase(); continue; } PublicFuction.threadSleep(SAVE_INTERVAL); commitConn1(); commitConn2(); commitConn3(); } //end while //thread exit commitConn1(); commitConn2(); commitConn3(); disconnectConn1(); disconnectConn2(); disconnectConn3(); } private void commitConn1(){ try { if( (conn1 !=null)&&(conn1NeedCommit) ){ synchronized ( pstmt1){ //lock pstmt if( bMsgExecBatch ) pstmt1.executeBatch() ; conn1.commit() ; } //end lock conn1NeedCommit = false; } } catch(Exception e){ PublicConstants.writeLog.error("CmppSaveData conn1 commit:"+e.toString()); if( (bConnectFlag=DatabaseAccess.isConnectDB(conn1))==false ){ disconnectConn1(); conn1 = null; } } } private void commitConn2(){ try{ if( (conn2 !=null)&&(conn2NeedCommit) ){ synchronized ( pstmt2){ //lock pstmt if( bMsgExecBatch ) pstmt2.executeBatch() ; conn2.commit() ; } //end lock conn2NeedCommit = false; } } catch(Exception e){ PublicConstants.writeLog.error("cmppSaveData conn2 commit:"+e.toString()); if( (bConnectFlag=DatabaseAccess.isConnectDB(conn2))==false ){ disconnectConn2(); conn2 = null; } } } private void commitConn3(){ try { if( (conn3 !=null)&&(conn3NeedCommit) ){ synchronized ( pstmt3){ //lock pstmt if( bMsgExecBatch ) pstmt3.executeBatch() ; conn3.commit() ; } //end lock conn3NeedCommit = false; } } catch(Exception e){ PublicConstants.writeLog.error("CmppSaveData conn1 commit:"+e.toString()); if( (bConnectFlag=DatabaseAccess.isConnectDB(conn3))==false ){ disconnectConn3(); conn3 = null; } } } /** * 终止线程 */ public void tStop(){ bShutdownFlag = true; } /** * 连接数据库 * 与数据库建立两个连接 */ public void connectDatabase(){ if(conn1 == null) // Prepare for conn1 { conn1=DatabaseAccess.connectDatabase( PublicConstants.CONNECTION_URL , PublicConstants.DB_USER , PublicConstants.DB_PASS ); if(conn1 != null) { try{ if(bAutoCommit) conn1.setAutoCommit(true); else conn1.setAutoCommit(false); pstmt1=conn1.prepareStatement(submitSqlStatement); }catch(SQLException eSQL) { System.out.println("cmppSaveData prepareStatement conn1 :"+eSQL.toString()); PublicConstants.writeLog.error("cmppSaveData prepareStatement conn1 :"+eSQL.toString()); disconnectConn1(); bConnectFlag=false; } } } if (conn2 == null) // Prepare for conn2 { conn2=DatabaseAccess.connectDatabase( PublicConstants.CONNECTION_URL , PublicConstants.DB_USER , PublicConstants.DB_PASS ); if(conn2 != null) { try{ if(bAutoCommit) conn2.setAutoCommit(true); else conn2.setAutoCommit(false); pstmt2=conn2.prepareStatement(reportSqlStatement); }catch(SQLException eSQL) { System.out.println("CmppSaveData prepareStatement conn2 :"+eSQL.toString()); PublicConstants.writeLog.error("CmppSaveData prepareStatement conn2 :"+eSQL.toString()); disconnectConn2(); bConnectFlag=false; } } } if (conn3 == null) // Prepare for conn3 { conn3=DatabaseAccess.connectDatabase( PublicConstants.CONNECTION_URL , PublicConstants.DB_USER , PublicConstants.DB_PASS ); if(conn3 != null) { try{ if(bAutoCommit) conn3.setAutoCommit(true); else conn3.setAutoCommit(false); pstmt3=conn3.prepareStatement(deliverSqlStatement); }catch(SQLException eSQL) { System.out.println("CmppSaveData prepareStatement conn3:"+eSQL.toString()); PublicConstants.writeLog.error("CmppSaveData prepareStatement conn3 :"+eSQL.toString()); disconnectConn3(); bConnectFlag=false; } } } if( (conn1 !=null ) && (conn2 !=null )&&(conn3 !=null ) ) bConnectFlag=true; } /** * 写Cmpp_Submit消息到数据库 * @param sm ShortMsgcmpp对象 * @return * true :成功 * false:失败 */ public boolean saveCmppSubmitMsg(ShortMsgCmpp sm) { boolean bConnectState=false; if(bConnectFlag == false) return false; try { /** System.out.println("Before save to DB ........."+ "\nsm.headSeqcNo:["+sm.headSeqcNo+"]"+ "\nsm.msgid:["+sm.submit_msg_id+"]"+
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -