📄 smssender.java
字号:
package com.wireless.sms.unsoap;
import java.math.BigDecimal;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Timer;
import java.util.Vector;
import org.apache.axis.types.URI;
import org.apache.log4j.Logger;
import org.w3c.dom.Element;
import cn.com.chinaunicom.www.schema.cuc.common.v2_1.ChargingInformation;
import cn.com.chinaunicom.www.schema.cuc.common.v2_1.PolicyException;
import cn.com.chinaunicom.www.schema.cuc.common.v2_1.ServiceException;
import cn.com.chinaunicom.www.schema.cuc.common.v2_1.SimpleReference;
import cn.com.chinaunicom.www.schema.cuc.sms.v2_1.DeliveryInformation;
import cn.com.chinaunicom.www.schema.cuc.sms.v2_1.DeliveryStatus;
import cn.com.chinaunicom.www.wsdl.cuc.sms.send.v2_1.service.SendSmsBindingStub;
import cn.com.chinaunicom.www.wsdl.cuc.sms.send.v2_1.service.SendSmsService;
import cn.com.chinaunicom.www.wsdl.cuc.sms.send.v2_1.service.SendSmsServiceLocator;
import com.vasp.HeaderSet;
import com.wireless.sms.gwif.smsagent.entity.UN;
import com.wireless.sms.gwif.smsagent.func.CheckForSend;
import com.wireless.sms.gwif.smsagent.global.GetMoMtGlobalForUsual;
import com.wireless.sms.gwif.smsagent.global.LoggerConstant;
import com.wireless.sms.gwif.smsagent.workthread.ControlWindow;
import com.wireless.sms.gwif.smsagent.workthread.NightSaver;
import com.wireless.sms.gwif.smsagent.workthread.SendMonitor;
import com.wireless.sms.pub.entity.MT;
import com.wireless.sms.pub.mq.MTQueue;
import com.wireless.sms.pub.mq.ObjectQueue;
import com.wireless.sms.unsoap.global.Constant;
import com.wireless.sms.unsoap.global.Util;
import com.wireless.sms.unsoap.workthread.HeaderSetExtend;
public class SMSSender extends Thread{
protected MTQueue mtqueue = GetMoMtGlobalForUsual.mtqueue;
protected ObjectQueue objqueue = ObjectQueue.getInstance();
protected ControlWindow flowWindow = ControlWindow.getInstance();
protected int controlSize = 16;
private Logger mtlog = LoggerConstant.mt_log;
private int period;
private Timer timer = null;
private static SMSSender _instance = null;
private SMSSender(){
}
public static synchronized SMSSender getInstance(){
if(_instance == null){
_instance = new SMSSender();
}
return _instance;
}
public void run(){
this.controlSize = UN.getInstance().getControlSize();
this.period = 1000/UN.getInstance().getFlowControl();
LoggerConstant.stat_log.info("启动 mt 发送...");
if(timer == null){
timer = new Timer(true);
}
timer.schedule(new java.util.TimerTask(){
public void run(){
new Thread(){
public void run(){
processSend();
}
}.start();
// processSend();
}}, 1000, period);
}
public void processSend() {
try {
SendMonitor.getInstance().setSendMTFlag(true);
if (mtqueue.sizeByPriority() <= 0) {
return;
}
// 从队列中取出,进行发送
if (flowWindow.size() < controlSize) { // 允许可以发送
MT mt = (MT) mtqueue.removeByPriority();
MT copy = null;
if (mt != null) {
int checkResult = CheckForSend.getInstance().checkForSend(
mt);
if (checkResult == 2) {
objqueue.add(mt);
} else if (checkResult == 3) {
// mtqueue.add(mt.getMsgLevel(), mt);
NightSaver.getInstance().add(mt);
} else {
mtlog.info("--- 发送 Cmpp Submit 包开始 ---");
try {
copy = (MT) mt.clone();
String sendResult = "";
try {
if(mt.getDestTermID()!=null && mt.getDestTermID().startsWith("86"))
mt.setDestTermID(mt.getDestTermID().substring(2));
if(mt.getFeeTermID()!=null && mt.getFeeTermID().startsWith("86"))
mt.setFeeTermID(mt.getFeeTermID().substring(2));
// 开始调用发送模块
sendResult = sendMessage(mt);
if ("".equalsIgnoreCase(sendResult)) {
mtqueue.add(copy.getMsgLevel(), copy);
return;
}
} catch (ServiceException ex) {//业务异常
Element[] e = ex.getFaultDetails();
for (int i = 0; i < e.length; i++) {
try {
String messageId = "";
String text = "";
String variables = "";
try {
messageId = /*" messageId = "+*/ e[i].getElementsByTagName("messageId")
.item(0).getFirstChild().getNodeValue();
} catch (java.lang.NullPointerException exc) {
}
try {
text = " text = "+ e[i].getElementsByTagName("text")
.item(0).getFirstChild().getNodeValue();
} catch (java.lang.NullPointerException exc) {
}
try {
variables = " variables = "+ e[i].getElementsByTagName("variables")
.item(0).getFirstChild().getNodeValue();
} catch (java.lang.NullPointerException exc) {
}
sendResult = sendResult
+ e[i].getTagName() + messageId + text + variables;
mt.setStatus("B:"+messageId);
Timestamp time = new Timestamp(System.currentTimeMillis());
mt.setRespTime(time.toLocaleString());
objqueue.add(mt);
mtlog.info("mt 发送结果 :" + sendResult);
mtlog.info("从滑动窗口中移除:mt.getMsgID() = " + mt.getMsgID());
flowWindow.remove(mt.getMsgID());
return;
} catch (Exception n) {
mtlog.error("Exception:",n);
}
}
} catch (PolicyException ex) {//策略异常
Element[] e = ex.getFaultDetails();
for (int i = 0; i < e.length; i++) {
try {
String messageId = "";
String text = "";
String variables = "";
try {
messageId = /*" messageId = "+ */e[i].getElementsByTagName("messageId")
.item(0).getFirstChild().getNodeValue();
} catch (java.lang.NullPointerException exc) {
}
try {
text = " text = "+ e[i].getElementsByTagName("text")
.item(0).getFirstChild().getNodeValue();
} catch (java.lang.NullPointerException exc) {
}
try {
variables = " variables = "+ e[i].getElementsByTagName("variables")
.item(0).getFirstChild().getNodeValue();
} catch (java.lang.NullPointerException exc) {
}
sendResult = sendResult
+ e[i].getTagName() + messageId + text + variables;
mt.setStatus("B:"+messageId);
Timestamp time = new Timestamp(System.currentTimeMillis());
mt.setRespTime(time.toLocaleString());
objqueue.add(mt);
mtlog.info("从滑动窗口中移除:mt.getMsgID() = " + mt.getMsgID());
flowWindow.remove(mt.getMsgID());
mtlog.info("mt 发送结果 :" + sendResult);
return;
} catch (Exception n) {
mtlog.error("Exception:",n);
}
}
} catch (Exception e) {
mtlog.error("Exception : ", e);
mtlog.info("从滑动窗口中移除:mt.getMsgID() = " + mt.getMsgID());
flowWindow.remove(mt.getMsgID());
mtqueue.add(copy.getMsgLevel(), copy);
return;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -