📄 miscreceiver.java
字号:
package com.gctech.sms.app;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import java.util.StringTokenizer;
import org.apache.log4j.Logger;
import com.gctech.sms.msg.MOAck;
import com.gctech.sms.msg.MOInfo;
import com.gctech.sms.platform.MODispatcher;
import com.gctech.sms.platform.MyLogger;
import com.gctech.sms.util.MsgIdConverter;
import com.gctech.sms.util.ThreadManager;
import com.gctech.sms.util.Utility;
import com.gctech.util.net.SocketService;
/**
* <p>Title: 应用层消息接收者。</p>
* <p>Description: 应用层接收者,负责接收应用层发过来的MT、订阅请求等信息,
* 为了客户端方便,使用短连接。</p>
* 要保证安全,适合异构系统。
* <p>Copyright: Copyright (c) 2004</p>
* <p>Company: gctech</p>
* @author 王红宝
* @version $Id: AppReceiver.java,v 1.1.1.1 2004/04/21 09:30:41 wanghb Exp $
*/
public class MiscReceiver extends SocketService {
static Map appServices;
/***
* 载入服务。
* */
public static void loadServices(Properties props) {
appServices = new HashMap();
StringTokenizer stk = new StringTokenizer(props.getProperty("com.gctech.sms.app.AppReciever.services"), ",");
for (; stk.hasMoreTokens();) {
String service = stk.nextToken();
Integer serviceId = Integer.decode(props.getProperty("com.gctech.sms.app.AppReciever.services." + service + ".seq"));
String serviceName = props.getProperty("com.gctech.sms.app.AppReciever.services." + service + ".class");
try {
appServices.put(serviceId, Class.forName(serviceName).newInstance());
logger.info("注册服务 ID:" + serviceId + ",服务类名:" + serviceName + " 成功。");
} catch (Exception ex) {
logger.info("注册服务 ID:" + serviceId + ",服务类名:" + serviceName + " 失败。", ex);
}
}
}
public MiscReceiver() {
}
public void run() {
try {
//收到消息
ObjectInputStream in = new ObjectInputStream(sock.getInputStream());
ObjectOutputStream out = new ObjectOutputStream(sock.getOutputStream());
final MOInfo moInfo = (MOInfo) in.readObject();
moInfo.srcPhoneNo = moInfo.srcPhoneNo.trim();
//日志功能,文件和数据库各记一份。
moInfo.strMsgID = MsgIdConverter.convert(moInfo.strMsgID.getBytes()).toString();
logger.info(moInfo);
MyLogger.getInstance().logMo(moInfo);
//回复消息
MOAck objMOAck = new MOAck();
objMOAck.donetime = Utility.getInstance().curTime();
objMOAck.status = 0;
out.writeObject(objMOAck);
out.flush();
//如果不是状态报告
if (moInfo.IsReply == 0) {
//放到线程池中处理一条上行。
ThreadManager.getInstance().execute(new Runnable() {
public void run() {
MODispatcher.getInstance().dispatch(moInfo);
}
});
}
} catch (Throwable ex) {
logger.error(ex, ex);
} finally {
if (sock != null) {
try {
sock.close();
} catch (Throwable ex1) {
logger.error(ex1, ex1);
}
}
}
}
static final Logger logger = Logger.getLogger(MiscReceiver.class);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -