需要简单的代码:Get Glassfish InitialContext&查找ConnectionFactory

时间:2015-08-04 05:12:28

标签: glassfish jms jndi

我的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的所有新手只有一个简单的代码片段来证明它的工作原理 - 而不必花费一周的时间来寻找无用的东西。

注意:我也试过

factory =
      (ConnectionFactory)
        PortableRemoteObject.narrow(
          jndiContext.lookup("jms/goConnectionFactory"),
          ConnectionFactory.class
       );

但是我很确定在我尝试让我的本地客户端与我在其他地方的虚拟服务器上运行的glassfish4交谈之前我不会需要它。

我在上面的道具中使用了“localhost:8080”而不仅仅是“localhost”。结果相同。我得到一些InitialContext对象。但它不会检索ConnectionFactory。

任何人都可以提供任何帮助吗?

1 个答案:

答案 0 :(得分:0)

...
    System.out.printlin (jndiContext.getClass().getName();

    InitialContext jndiContext = new InitialContext (props);
...

第一行不是空指针的原因吗?此时jndiContext尚未初始化。