📄 cmppconnectionmanager.java
字号:
package cn.netjava.cngpclient.connection;
import java.util.*;
import java.net.*;
import java.io.*;
import java.util.logging.*;
import java.util.Random;
import cn.netjava.cngpclient.log.LogManage;
import cn.netjava.cngpclient.publics.*;
/**
* 通信连结管理器
* 中国网通短信网关客户端--蓝杰实训项目
* @author www.NetJava.cn
*
*/
public class CmppConnectionManager {
public CmppConnectionManager() {
cmppConnMangerinit();
startSaveDataThread();
connectIsmg();
startMaintanceThread();
}
private void connectIsmg() {
connectCmppSubmit(IsmgInfo.ismgIp, IsmgInfo.ismgMtPort,
ComConstants.SEND_ONLY, IsmgInfo.sp_Ip);// 10+i); //flag =1
// 接收型连接 RECV_SEND
PublicFuction.threadSleep(500);
}
/**
* 获取Cmpp连接管理器的静态实例.
*
* @return CmppConnectionManager
*/
public static synchronized CmppConnectionManager instance() {
if (mbcpCM == null)
mbcpCM = new CmppConnectionManager();
return mbcpCM;
}
public boolean connectCmppSubmit(String ip, int port, byte bindtype,
String spip) {// int iii) {
int ret;
try {
if (connectionSubmit == null)
connectionSubmit = new CmppConnection(ip, port, bindtype, spip);
connectionSubmit.start();
if (connectionSubmit.connect())
connectionSubmit.Login();
return true;
} catch (NullPointerException e) {
LogManage.ins().myLog.severe(bindtype + " CNGP Create Connetion "
+ e.toString());
return false;
} catch (Exception e) {
LogManage.ins().myLog.severe(bindtype + " CNGP Create Connetion "
+ e.toString());
return false;
}
}
private static void cmppConnMangerinit() {
try {
ComConstants.IsmgSendConNum = 1; // Integer.parseInt(
// DatabaseAccess.instance().getOneSYSPara("ISMG_SENDNUM")
// );
ComConstants.IsmgRecvConNum = 1; // Integer.parseInt(
// DatabaseAccess.instance().getOneSYSPara("ISMG_RECVNUM")
// );
ComConstants.CmppRESEND_COUNT = 2;// Integer.parseInt(
// DatabaseAccess.instance().getOneSYSPara("CMPP_RESEND_NUM")
// );
ComConstants.CmppRESEND_INTERVAL = 30;// Integer.parseInt(
// DatabaseAccess.instance().getOneSYSPara("CMPP_RESEND_INT_SEC")
// );
ComConstants.CmppRESEND_LIVETIME = 60;// Integer.parseInt(
// DatabaseAccess.instance().getOneSYSPara("CMPP_RESEND_LIVETIME")
// );
loadCfgFileForCom();
} catch (Exception rce) {
}
}
private static boolean loadCfgFileForCom() {
ComConstants.Foxsplastversion = 12;
ComConstants.CmppVECTOR_NUM = 10000;
ComConstants.CmppRCVSOCK_TIMEOUT = 30000;
ComConstants.CmppRESEND_SLEEPTIME = 10000;
ComConstants.CmppMAINTANCE_SLEEPTIME = 5000;
ComConstants.CmppSAVEDATA_SLEEPTIME = 1000;
return true;
}
public boolean sendToIsmg(SendDataBean sendDataBean) {
int i = 1;
java.util.StringTokenizer stk = new StringTokenizer(
sendDataBean.sendData, "##");
int stkCount = stk.countTokens();
while (stk.hasMoreTokens()) {
stkCount--;
i++;
ShortMsgCmpp cmpp_sm = new ShortMsgCmpp();
try {
cmpp_sm.headCmdID = CmppConstants.Cmpp_Submit;
cmpp_sm.headSeqcNo = ComConstants.getSeqNo();
cmpp_sm.submit_destusr_tl = (byte) sendDataBean
.getDestAddrNum();
cmpp_sm.msgMode = sendDataBean.registeredDelivery;
cmpp_sm.msgSubmitDest = sendDataBean.getDestAddrs();
cmpp_sm.msgSrcAddr = sendDataBean.srcAddr;
cmpp_sm.msgServiceType = sendDataBean.servieceType;
cmpp_sm.subType = sendDataBean.subType;
cmpp_sm.msgContent = stk.nextToken();// sendDataBean.sendData;
if (cmpp_sm.msgContent.length() > 70)
cmpp_sm.msgContent = cmpp_sm.msgContent.substring(0, 68);
cmpp_sm.msgLength = (byte) cmpp_sm.msgContent.getBytes().length;
cmpp_sm.msgFeeType = sendDataBean.feeType;
cmpp_sm.msgInfoFee = sendDataBean.infoFee;
cmpp_sm.msgPriority = sendDataBean.msgLevel;
cmpp_sm.feeTerminalId = sendDataBean.feeTerminalId;
cmpp_sm.msgFeeUserType = sendDataBean.feeUserType;
cmpp_sm.msgPkTotal = sendDataBean.pkTotal;
cmpp_sm.msgPkNumber = sendDataBean.pkNumber;
cmpp_sm.spId = sendDataBean.msgSrc;
cmpp_sm.msgDataCoding = sendDataBean.dataCoding;
cmpp_sm.tpPId = sendDataBean.tpPId;
cmpp_sm.tpUdhi = sendDataBean.tpUdhi;
cmpp_sm.submit_msg_id = "0";
cmpp_sm.msgProtocolId = 0;
cmpp_sm.msgValidityPeriod = "00000000000000000";
cmpp_sm.msgSchedule = "00000000000000000";
cmpp_sm.msgDeliverTime = "";
cmpp_sm.msgReserve = "";
if (CmppConnectionManager.instance().send(cmpp_sm) == 0
&& stkCount <= 0) {
return true;
}
if (i > 10)
return true;
} catch (Exception exp) {
LogManage.ins().myLog.logp(Level.WARNING, "", "",
" Msg send error:\n" + "error is: " + exp
+ " destAddr: " + cmpp_sm.msgDestAddr + "\n"
+ " msgContent: " + cmpp_sm.msgContent + "\n"
+ exp.getMessage());
}
}
return false;
}
public int send(ShortMsgCmpp cmpp_sm) {
if (!connectionSubmit.getStatus().equals(ComConstants.WORKING)) {
LogManage.ins().myLog.logp(Level.WARNING, "", "",
" CNGP conn status error ");
return -1;
}
connectionSubmit.send(cmpp_sm);
return 0;
}
public void startSaveDataThread() {
saveCmppData = new CmppSaveData();
}
public void startMaintanceThread() {
String str;
Thread internalThread;
Runnable r = new Runnable() {
public void run() {
LogManage.ins().myLog.logp(Level.INFO, "", "",
" Cmpp Maintance Thread started .");
PublicFuction.threadSleep(10000);
int i = 0;
while (!myShutdownFlag) {
try {
PublicFuction.threadSleep(3000);
if (connectionSubmit.getStatus() == ComConstants.NOTCONNECTED) {
connectionSubmit.disconnect();
if (connectionSubmit.connect())
connectionSubmit.Login();
}
if (i >= 300) {
LogManage.ins().myLog.logp(Level.INFO, "", "",
" Not submit ");
i = 0;
}
i++;
} catch (Exception e) {
LogManage.ins().myLog.logp(Level.SEVERE, "", "",
" mainstance Thread exit !!! " + e.toString());
}
}
}
};
internalThread = new Thread(r);
internalThread.start();
}
public void shutdownCmpp() {
}
public int getSize() {
return myconnection.size();
}
public Enumeration getCmppConnections() {
return myconnection.elements();
}
private int mysize;
private static Hashtable myconnection;
private ServerSocket mysvrsock;
private boolean myShutdownFlag = false;
private Timer timerMbcp = null;
private static CmppConnectionManager mbcpCM = null;
public static CmppSaveData saveCmppData;
public static CmppConnection connectionSubmit;
private static CmppConnection sendThread;
private static CmppConnection recvThread;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -