我在不同的机器(本地主机和 192.168.0.5)上有两台 Glassfish 3.1.2 服务器。我还有一个 appclient 客户端应用程序,它调用 EJB 并从 JMS 队列中获取消息。我必须使用 appclient 容器,因为如果我想使用事务处理会话到 JMS 队列,这是我唯一的选择。
如果我通过 appclient.bat 脚本在 localhost 上运行 appclient,我必须向脚本提供 targetserver 参数,如下所示: appclient.bat -targetserver localhost -jar appClient.jar -clientArg1 -clientArg2
这使得 appclient 连接到在 localhost 上运行的 Glassfish。现在我想在我的客户端 java 应用程序中连接到 192.168.0.5 上的 Glassfish,而 appclient 连接到 locahost。
我已经尝试将参数设置为 InitialContext,但它们没有被采用。
Properties props = new Properties();
props.setProperty("java.naming.factory.initial", "com.sun.enterprise.naming.impl.SerialInitContextFactory");
props.setProperty("java.naming.factory.url.pkgs", "com.sun.enterprise.naming");
props.setProperty("java.naming.factory.state", "com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl");
props.setProperty("org.omg.CORBA.ORBInitialHost", sourceURL);
props.setProperty("org.omg.CORBA.ORBInitialPort", "3700");
InitialContext ic = new InitialContext(props);
对 EJB、JMS 队列等的引用总是取自由 targetserver 参数指定的 Glassfish 服务器。
有什么建议么?