2012-09-07 252 views
0

我有两台Glassfish 3.1.2服务器在不同的机器上(localhost和192.168.0.5)。我还有一个appclient客户端应用程序,它调用EJB并从JMS队列中获取消息。我必须使用appclient容器,因为如果我想将事务会话用于JMS队列,这是我拥有的唯一选项。从appclient访问远程Glassfish服务器

如果我通过appclient.bat脚本运行在本地主机上appclient我必须提供targetserver参数,像这样的脚本: appclient.bat -targetserver本地主机的罐子appClient.jar -clientArg1 -clientArg2

这使得appclient连接到在本地主机上运行的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服务器获取。

有什么建议吗?

回答

0

找不到解决方案,所以我使用targetserver参数运行appclient批处理文件多次。

+0

你在每台机器上运行客户端,传递'localhost'?或者,你远程运行它,传递一个IP地址? – Thufir

+0

是的,这是正确的。自2012年以来,我做了一些不同的事。现在我使用直接连接到队列管理器,所以我停止使用appcllient。如果我想调用服务器,我使用JAX-RS或JAX-WS。 – kovica

+0

好的,我可能会在那里跟随你的路线;谢谢。 – Thufir