我正在开发一个应用程序,它使用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消息。 任何想法?