📄 mmsservicemain.java
字号:
/*
* Created on 2005-3-4
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package com.rainbow.mms.appframe;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Timer;
import java.util.TimerTask;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.criterion.Restrictions;
import com.rainbow.mms.common.MMSServiceCode;
import com.rainbow.mms.common.MmsGatewayInfo;
import com.rainbow.util.tools.HibernateUtil;
/**
* 应用程序主体类。负责启动并管理整个应用。启动顺序:读取配置文件中的配置,读取数据库中该应用的业务代码,
* 读取平台中网关信息配置,启动工作者线程组,启动数据库定时读取Deliver消息的定时器。
* @author Rainbow mms group leader —— TrWorks
*
*/
public class MMSServiceMain {
private Timer dbAccessTimer = null;
private static MMSServiceMain INSTANSE = new MMSServiceMain();
private Logger log = Logger.getLogger(MMSServiceMain.class);
private int workerNum = 4;
private int dbAccessInterval = 1000*3;
private int uniformServiceID = 0;
private String workerClassName = "";
private static Map serviceCodeMap = new HashMap();
private static Map gateWayMap = new HashMap();
/**
* 获得主程序实体
* @return 主程序实体
*/
public static MMSServiceMain getInstance(){
// 加载Log4j的配置
PropertyConfigurator.configure("conf/log4j.properties");
return INSTANSE;
}
/**
* 运行主程序
*/
public void run() {
log.info("启动彩信业务处理程序...");
// 读取数据库配置
ConfigEditor config = ConfigEditor.getInstance();
if (false == config.loadConfig("conf/AppSysConfig.properties")){
log.error("启动彩信业务处理程序失败,加载配置文件失败");
return;
}
// 配置系统参数
workerNum = config.getThreadNum();
dbAccessInterval = config.getDbAccessInterval();
uniformServiceID = config.getUniformServiceID();
workerClassName = config.getWorkerClassName();
log.info("系统配置信息,MmsApp dbAccessInterval: " + dbAccessInterval);
log.info("系统配置信息,MmsApp workerNum: " + workerNum);
log.info("系统配置信息,MmsApp uniformServiceID: " + uniformServiceID);
log.info("系统配置信息,MmsApp workerClassName: " + workerClassName);
// 读取与该业务相关的ServiceCode服务信息
if (false == loadServiceCode()){
log.error("读取与该业务相关的ServiceCode服务信息发生错误!");
return;
}
// 读取与该业务相关的ServiceCode服务信息
if (false == loadGateWayInfo()){
log.error("读取与该业务相关的网关服务信息发生错误!");
return;
}
// 启动工作者线程组
MMSDataWorker[] workers = new MMSDataWorker[workerNum];
Class threadClass = null;
try {
threadClass = Class.forName(workerClassName);
for (int i = 0; i < workerNum; i++){
MMSDataWorker w = (MMSDataWorker)threadClass.newInstance();
w.initWorkers();
Thread t = new Thread(w);
t.setName(i + "号工作线程");
t.start();
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
return;
} catch (InstantiationException e) {
e.printStackTrace();
return;
} catch (IllegalAccessException e) {
e.printStackTrace();
return;
}
log.info("启动了" + workerNum + "个处理线程.");
// 启动数据库定时访问线程
TimerTask dateGetter = new MMSDataGetter();
dbAccessTimer = new Timer();
dbAccessTimer.schedule(dateGetter, 0, dbAccessInterval);
log.info("启动业务处理程序成功!");
}
/**
* 读取与该业务相关的ServiceCode服务信息
* @return true读取成功,false读取失败
*/
private boolean loadServiceCode(){
boolean ok = false;
try{
Session sess = HibernateUtil.currentSession();
Criteria cr = sess.createCriteria(MMSServiceCode.class);
List serviceCodeList = cr.add(Restrictions.eq("uniformID", new Integer(uniformServiceID))).list();
if (serviceCodeList == null || serviceCodeList.size() == 0){
log.error("没有该业务(" + uniformServiceID + ")的ServiceCode信息");
return false;
}
for (int i = 0; i < serviceCodeList.size(); i++){
MMSServiceCode s = (MMSServiceCode)serviceCodeList.get(i);
Integer gwid = new Integer(s.getGateWayID());
serviceCodeMap.put(gwid, s);
}
ok = true;
}
catch(Exception e){
e.printStackTrace();
ok = false;
}
finally{
HibernateUtil.closeSession();
}
return ok;
}
/**
* 读取与该业务相关的网关信息
* @return true读取成功,false读取失败
*/
private boolean loadGateWayInfo(){
boolean ok = false;
try{
Session sess = HibernateUtil.currentSession();
Criteria cr = sess.createCriteria(MmsGatewayInfo.class);
List gatewayList = cr.list();
if (gatewayList == null || gatewayList.size() == 0){
log.error("没有该业务的网关信息");
return false;
}
for (int i = 0; i < gatewayList.size(); i++){
MmsGatewayInfo s = (MmsGatewayInfo)gatewayList.get(i);
Integer gwid = new Integer(s.getGatewayID());
gateWayMap.put(gwid, s);
}
ok = true;
}
catch(Exception e){
e.printStackTrace();
ok = false;
}
finally{
HibernateUtil.closeSession();
}
return ok;
}
/**
* 根据网关号码获得下行的业务代码
* @param gateWayID
* @return
*/
public static String getMtServiceCodeByGatewayID(int gateWayID){
MMSServiceCode s = (MMSServiceCode)MMSServiceMain.serviceCodeMap.get(new Integer(gateWayID));
System.out.println("获得MTServiceCode:" + s.getMtServiceCode());
return s.getMtServiceCode();
}
/**
* 根据网关号码获得下行的源号码
* @param gateWayID
* @return
*/
public static String getMtSrcNumByGatewayID(int gateWayID){
MmsGatewayInfo s = (MmsGatewayInfo)MMSServiceMain.gateWayMap.get(new Integer(gateWayID));
System.out.println("获得SrcNum:" + s.getServiceID());
return s.getServiceID();
}
/**
* 获得工作者线程的数量
* @return
*/
public int getWorkerNum() {
return workerNum;
}
/**
* 主运行
* @param args 暂无效
*/
public static void main(String[] args){
MMSServiceMain app = MMSServiceMain.getInstance();
app.run();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -