【发布时间】:2015-10-26 09:03:42
【问题描述】:
我的 glassfish4 服务器在 localhost 上运行。
我的 java 客户端是一个从 Eclipse 运行的简单 GUI。
我的 glassfish4 管理控制台向我保证我已经正确配置了 Resources/JMS Resources/Connection Factories/jms/goConnectionFactory。
所以我认为客户端从 glassfish 获取 InitialContext 并使用它来查找“jms/goConnectionFactory。不是真的”是微不足道的,
在阅读了已回答的问题后(所有问题都被其他特殊问题所吸引),我仍然无法连接。
谁能告诉我我需要加载哪些属性才能完成这项工作?
Properties prop = new Properties:
prop.setProperty(Context.INITIAL_CONTEXT_FACTORY,
"com.sun.enterprise.naming.impl.SerialInitContextFactory");
prop.setProperty(Context.URL_PKG_PREFIXES,
"com.sun.enterprise.naming");
prop.setProperty("org.omg.CORBA.ORBInitialPort","3700");
prop.etProperty("org.omg.CORBA.ORBInitialHost","localhost");
System.out.printlin (jndiContext.getClass().getName();
InitialContext jndiContext = new InitialContext (props);
ConnectionFactory =
(ConnectionFactory) jndiContext.lookup("jms/goConnectionFactory");
第一个 printlin() 将其返回到控制台“javax.naming.InitialContext”。
但是 lookup() 周围的 try/catch 块(未显示)捕获 NullPointerException
而且我不知道如何判断我的 InitialContext 对象是来自 glassfish4 服务器的有效对象,还是我使用不正确。
无论如何...... glassfish 服务器和 java GUI 客户端(从 Eclipse 运行)都运行在同一台机器上,这似乎是一种非常通用的安排。因此,我敢肯定,只需一小段代码证明 JMS 有效,这将有助于所有 JMS 新手 — 无需花一周时间寻找无济于事。
注意:我也试过
factory =
(ConnectionFactory)
PortableRemoteObject.narrow(
jndiContext.lookup("jms/goConnectionFactory"),
ConnectionFactory.class
);
但我敢肯定,在我尝试让本地客户端与在其他地方的虚拟服务器上运行的 glassfish4 通信之前,我不会需要它。
我在上面的道具中使用了“localhost:8080”,而不仅仅是“localhost”。结果相同。我得到了某种 InitialContext 对象。但它不会检索 ConnectionFactory。
谁能提供帮助?
【问题讨论】: