我有兩臺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