【发布时间】:2011-02-01 02:07:17
【问题描述】:
我在远程 glassfish 服务器上创建了一个 JMS 连接工厂,并希望通过本地计算机上的 java 客户端应用程序使用该服务器。我有以下配置来获取上下文和连接工厂:
Properties env = new Properties();
env.setProperty("java.naming.factory.initial", "com.sun.enterprise.naming.SerialInitContextFactory");
env.setProperty("java.naming.factory.url.pkgs", "com.sun.enterprise.naming");
env.setProperty("java.naming.factory.state", "com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl");
env.setProperty("org.omg.CORBA.ORBInitialHost", JMS_SERVER_NAME);
env.setProperty("org.omg.CORBA.ORBInitialPort", "3700");
initialContext = new InitialContext(env);
TopicConnectionFactory topicConnectionFactory = (TopicConnectionFactory) initialContext.lookup("jms/MyConnectionFactory");
topicConnection = topicConnectionFactory.createTopicConnection();
topicConnection.start();
这似乎有效,当我从 glassfish 服务器中删除 ConnectionFactory 时,我收到一个异常,表明无法按预期找到 jms/MyConnectionFactory。
但是,当我随后使用我的 topicConnection 获取主题时,它会尝试连接到 localhost:7676(这会失败,因为我没有在本地运行 glassfish)。
如果我动态创建主题:
TopicSession pubSession = topicConnection.createTopicSession(false, Session.AUTO_ACKNOWLEDGE);
Topic topic = pubSession.createTopic(topicName);
TopicPublisher publisher = pubSession.createPublisher(topic);
Message mapMessage = pubSession.createTextMessage(message);
publisher.publish(mapMessage);
并且 glassfish 服务器没有在本地运行,但是我收到相同的连接被拒绝,但是如果我启动本地 glassfish 服务器,主题是在本地创建的,我可以在 glassfish 管理控制台中看到它们。
如果您问我的本地 glassfish 实例上没有 jms/MyConnectionFactory,它仅在远程服务器上可用。
我看不出我在这里做错了什么以及它为什么要尝试使用 localhost。
有什么想法吗?
干杯,
詹姆斯
【问题讨论】: