我有两台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服务器获取。
有什么建议吗?
你在每台机器上运行客户端,传递'localhost'?或者,你远程运行它,传递一个IP地址? – Thufir
是的,这是正确的。自2012年以来,我做了一些不同的事。现在我使用直接连接到队列管理器,所以我停止使用appcllient。如果我想调用服务器,我使用JAX-RS或JAX-WS。 – kovica
好的,我可能会在那里跟随你的路线;谢谢。 – Thufir