public class MessageReceiverFactory {
private static MessageReceiver messageReceiver;
private static RemotableMessageReceiver remotableMessageReceiver;
private static void init() throws ServerReceiverException {
SystemInfo sysInfo = ContextFactory.getSystemConfigContext()
.getSystemInfo();
if (sysInfo.isServer()) {
MessageReceiver mifMessageReceiver = new ServerMessageReceiver();
if (sysInfo.isRemoteable()) {
try {
remotableMessageReceiver = new RMIMessageReceiver(mifMessageReceiver);
} catch (RemoteException e) {
throw new ServerReceiverException(
"bind Message Receiver to port: "
+ sysInfo.getRmiport()
+ " with service name: "
+ sysInfo.getReceiverRmiBindName(), e);
}
}
messageReceiver = new StdMessageReceiver(mifMessageReceiver);
} else {
String rmiHost = sysInfo.getRmiHost();
int rmiPort = sysInfo.getRmiport();
String serviceName = sysInfo.getReceiverRmiBindName();
messageReceiver = createRemoteMesageReceiver(rmiHost, rmiPort,
serviceName);
}
}
public static MessageReceiver createRemoteMesageReceiver(String rmiHost,
int rmiPort, String serviceName) throws ServerReceiverException {
return new RemoteMessageReceiver(rmiHost, rmiPort, serviceName);
}
public synchronized static MessageReceiver getMessageReceiver() throws ServerReceiverException {
if(messageReceiver == null) {
init();
}
return messageReceiver;
}
public static RemotableMessageReceiver getRemoteableMesageReceiver(){
return remotableMessageReceiver;
}
public synchronized static void initMessageReceiver() throws ServerReceiverException {
init();
}
}
|
相关推荐
javax.xml.bind.attachment 此包由基于 MIME 的包处理器实现,该处理器能够解释并创建基于 MIME 的包格式的已优化的二进制数据。 javax.xml.bind.helpers 仅由 JAXB 提供者用于: 提供某些 javax.xml.bind 接口的...
javax.swing 提供一组“轻量级”(全部是 Java 语言)组件,尽量让这些组件在所有平台上的工作方式都相同。 javax.swing.border 提供围绕 Swing 组件绘制特殊边框的类和接口。 javax.swing.colorchooser 包含供 ...
javax.xml.bind.attachment 此包由基于 MIME 的包处理器实现,该处理器能够解释并创建基于 MIME 的包格式的已优化的二进制数据。 javax.xml.bind.helpers 仅由 JAXB 提供者用于: 提供某些 javax.xml.bind 接口的...
javax.swing 提供一组“轻量级”(全部是 Java 语言)组件,尽量让这些组件在所有平台上的工作方式都相同。 javax.swing.border 提供围绕 Swing 组件绘制特殊边框的类和接口。 javax.swing.colorchooser 包含供 ...
javax.xml.bind.attachment 此包由基于 MIME 的包处理器实现,该处理器能够解释并创建基于 MIME 的包格式的已优化的二进制数据。 javax.xml.bind.helpers 仅由 JAXB 提供者用于: 提供某些 javax.xml.bind 接口的...
javax.xml.bind.attachment 此包由基于 MIME 的包处理器实现,该处理器能够解释并创建基于 MIME 的包格式的已优化的二进制数据。 javax.xml.bind.helpers 仅由 JAXB 提供者用于: 提供某些 javax.xml.bind 接口的...
javax.swing 提供一组“轻量级”(全部是 Java 语言)组件,尽量让这些组件在所有平台上的工作方式都相同。 javax.swing.border 提供围绕 Swing 组件绘制特殊边框的类和接口。 javax.swing.colorchooser 包含供 ...
javax.swing 提供一组“轻量级”(全部是 Java 语言)组件,尽量让这些组件在所有平台上的工作方式都相同。 javax.swing.border 提供围绕 Swing 组件绘制特殊边框的类和接口。 javax.swing.colorchooser 包含供 ...
与cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。...
与cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。...