我正在開發一個應用程序,它使用JMS作爲消息傳遞層。我還使用glassfish來託管jms/mq後端。該應用程序能夠使用我最初設置的glassfish 3.1服務器中的連接工廠和主題來進行發佈/訂閱消息。我現在有另一個glassfish實例(4.1),它承載了一套新的應用程序使用的一組新功能,但我仍然需要使用第一個glassfish服務器廣播的消息。客戶使用特定於glassfish 4.1的新庫的事實,我無法直接連接到glassfish1服務器。JMS-從遠程Glassfish接收消息
我按照本教程中關於多服務器環境(https://docs.oracle.com/cd/E19798-01/821-1841/bncfp/index.html)和獨立java客戶端都使用在新的glassfish服務器中設置的連接工廠來連接到舊的glassfish服務器。我知道連接被作出,因爲如果我停下glassfish1,我得到的連接斷開錯誤等
相關的客戶端代碼如下:
System.setProperty("org.omg.CORBA.ORBInitialHost", "10.20.10.52");
System.setProperty("org.omg.CORBA.ORBInitialPort", "3700");
try {
try {
ctx = new InitialContext();
} catch (NamingException ex) {
ex.printStackTrace();
}
ConnectionFactory cf = (ConnectionFactory) ctx.lookup("jms/ConnectionFactory");
Connection connection = cf.createConnection();
jmsContext = cf.createContext(Session.AUTO_ACKNOWLEDGE);
topic = (Topic) ctx.lookup("jms/Topic");
updateShipperConsumer = jmsContext.createConsumer(topic);
jmsProducer = jmsContext.createProducer();
logger.info("Started JMS successfully!");
} catch (NamingException ex) {
ex.printStackTrace();
} catch (JMSException ex) {
Logger.getLogger(LamtecJMSSystemImpl.class.getName()).log(Level.SEVERE, null, ex);
}
}
的JMS /連接工廠JNDI是本地連接工廠在glassfish2上將AddressList屬性設置爲glassfish1:7676。在glassfish1上有一個相應的連接工廠,具有相同的名稱,正如本教程所建議的。查看glassfish1服務器上的imq日誌文件,我看到來自glassfish2的連接已經建立。
我不確定我應該對主題jndi(我本地以及遠程服務器上)進行查找,但我認爲這沒有什麼不同。
根據我上面引用的教程,我已經完成了所有需要配置和代碼明智的工作,但我仍然沒有在客戶端獲得任何jms消息。 任何想法?