📄 opermanager.java
字号:
package com.wayout.wayoutsp.operation;
import java.util.*;
import com.wayout.wayoutsp.publics.*;
import com.wayout.wayoutsp.communication.*;
import java.io.*;
/**
* <p>Title: OperManager</p>
* <p>Description: 业务模块管理器</p>
* <p>Copyright: Copyright (c) 2002</p>
* <p>Company: wayout</p>
* @author wayout
* @version 1.01
*/
public final class OperManager implements Observer
{
protected final static boolean DEBUG = false;
private static OperManager _instance = new OperManager();
private final Vector _busiModule = new Vector();
/*
* 服务是否已经启动
*/
private boolean serverStarted = false;
/**
* 返回唯一不变对象
* @return OperManager对象
*/
public static OperManager getInstance()
{
if(null == _instance)
{
_instance = new OperManager();
}
return _instance;
}
public void startAllBusiModule()
{
String[] allModule = getAllModule();
if(0 == allModule.length)
{
/** @todo perhaps modify at later */
return;
}
for(int i = 0 ;i < allModule.length; i++)
{
try
{
((Operation)Class.forName(allModule[i]).newInstance()).startAllKindServer();
}
catch (ClassNotFoundException ex)
{
System.err.println("Please reset "+allModule+".class in your CLASSPATH");
System.out.println("");
System.out.println("<BGN>#####################################");
System.out.println("<Reason><BGN>Module loader error.<END>");
System.out.println("System will done later 5 second.");
System.out.println("<END>#####################################");
try
{
Thread.sleep(5000);
}
catch (InterruptedException e)
{
}
System.exit(-1);
}
catch (IllegalAccessException ex)
{
System.err.println("");
}
catch (InstantiationException ex)
{
System.err.println("Please provide a no parameter construction by "+allModule[i]+".class");
System.out.println("");
System.out.println("<BGN>#####################################");
System.out.println("<Reason><BGN>must provide a no prrameter construction<END>");
System.out.println("System will done later 5 second.");
System.out.println("<END>#####################################");
try
{
Thread.sleep(5000);
}
catch (InterruptedException e)
{
}
System.exit(-1);
}
}
}
private String[] getAllModule()
{
String[] arrLocal = new String[0];
Properties prop = new Properties();
try {
String file = PublicConstants.ConfigFile;/*System.getProperty("user.dir")
+File.separator
+"cfg"
+File.separator+"com.wayout.wayoutsp.cf";*/
if(DEBUG)
{
System.out.println(file);
}
prop.load(new java.io.FileInputStream(file));
}
catch (IOException ex)
{
System.err.println("com.wayout.wayoutsp.cf not find in current directory");
System.exit(-1);
}
final int busiModuleCount = Integer.parseInt(prop.getProperty("businessModuleCount"));
System.out.println("busiModuleCount = < "+ busiModuleCount+" >");
arrLocal = new String[busiModuleCount];
for(int i = 0 ;i<busiModuleCount;i++)
{
final String moduleName = prop.getProperty("businessModule."+(i+1));
if(null == moduleName)
{
System.err.println("Please check your config file."+ "<ERROR><BNG>"+"businessModule."+(i+1)+"<END>");
}
arrLocal[i] = moduleName;
}
System.out.println("LOADED BUSINESS MODULE : "+java.util.Arrays.asList(arrLocal));
return arrLocal;
}
/**
* 把观察者加入至观察者队列
* @param oper 要加入的观察者
*/
public synchronized void register(Operation oper)
{
if(!_busiModule.contains(oper))
{
_busiModule.addElement(oper);
}
}
// public static synchronized void addBusiOper(Operation oper)
// {
// getInstance().register(oper);
// }
private OperManager()
{
// startAllBusiModule();
}
/**
* 目前保留
* @param observable
* @param arg
*/
public void update(Observable observable,Object arg)
{}
private boolean notifyAllBusiModule(Object obj)
{
boolean returnVaule = false;
Object[] arrLocal;
synchronized (this)
{
arrLocal = _busiModule.toArray();
}
for (int i = 0; i<arrLocal.length; i++)
{
returnVaule|=((Operation)arrLocal[i]).addPackage(obj);
}
return returnVaule;
}
/**
* 通信模块将显示调用此方法,以便业务处理
* @param obj 要传给业务处理模块的数据
*/
public void handReceiverData(Object obj)
{
if(!notifyAllBusiModule(obj))
{
errorBusiCode(obj);
}
}
public void sendShortMessage(SendDataBean sendBean)
{
/** @todo DEBUG */
CmppConnectionManager.instance().sendToIsmg(sendBean);
if(DEBUG)
{
System.out.println("<MT MESSAGE><BGN>");
System.out.println("<Dest Address><BGN>"+(sendBean.getDestAddrs())[0]+"<END>");
System.out.println("<Source Address><BGN>"+sendBean.srcAddr+"<END>");
System.out.println("<MSG Contents><BGN>"+sendBean.sendData+"<END>");
System.out.println("<MT MESSAGE><END>");
}
}
private void errorBusiCode(Object obj)
{
//modified by dufs@wayoutcom.com 2004-3-31
// SendDataBean sendBean = new SendDataBean();
// sendBean.addDestAddr(((com.wayout.wayoutsp.publics.ReceiveDataBean)obj).srcAddr);
// sendBean.feeType = PublicConstants.TotalHelpFeeType;
// sendBean.infoFee = PublicConstants.TotalHelpInfoFee;
// sendBean.srcAddr = com.wayout.wayoutsp.communication.ComConstants.o_IsmgInfo.spCode;
// sendBean.feeTerminalId=((com.wayout.wayoutsp.publics.ReceiveDataBean)obj).srcAddr;
// sendBean.servieceType = PublicConstants.TotalHelpServieceType;
// sendBean.sendData = "输入有误!请重试";//PublicConstants.TotalHelpMsg;
// sendShortMessage(sendBean);
}
public boolean isServerStarted() {
return serverStarted;
}
public void setServerStarted(boolean serverStarted) {
this.serverStarted = serverStarted;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -