⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cmppconnectionmanager.java

📁 基于中国网通cngp2.0开发的一个java网关源代码。大家多多公开SP类的网关程序哦
💻 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 + -