JBoss AS 5.1 JMS队列NoInitialContextException

时间:2016-07-07 19:24:02

标签: java jboss jms

我正在尝试了解JBoss中的JMS Queue,但是我遇到了一个错误。我正在关注此页面上的教程:https://docs.jboss.org/jbossas/docs/Server_Configuration_Guide/4/html/JMS_Examples-A_Point_To_Point_Example.html

我在这一行收到错误:Object tmp = iniCtx.lookup("ConnectionFactory")

这是完整的错误:

Jul 7, 2016 3:10:23 PM com.cloudlet.jms.SendRecvClient main
INFO: Begin SendRecvClient, now = 1467918623762
Jul 7, 2016 3:10:23 PM com.cloudet.jms.SendRecvClient sendRecvAsync
INFO: Begin sendRecvAsync
javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file:  java.naming.factory.initial
    at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:645)
    at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:288)
    at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:325)
    at javax.naming.InitialContext.lookup(InitialContext.java:392)
    at com.cloudlet.jms.SendRecvClient.setupPointToPoint(SendRecvClient.java:49)
    at com.cloudlet.jms.SendRecvClient.sendRecvAsync(SendRecvClient.java:67)
    at com.cloudlet.jms.SendRecvClient.main(SendRecvClient.java:106)
Exception in thread "main" java.lang.NullPointerException
    at com.cloudlet.jms.SendRecvClient.sendRecvAsync(SendRecvClient.java:71)
    at com.cloudlet.jms.SendRecvClient.main(SendRecvClient.java:106)

我的代码与提供的链接中的代码完全相同。我查了一下,发现我在JBoss文件夹中需要一些jndi.properties文件。不幸的是,该文件不在JBoss文件夹中。我查看了一些关于它会是什么样子的例子,但每个例子都不同。

我该如何解决这个问题?提前谢谢!

1 个答案:

答案 0 :(得分:0)

通过手动创建具有必要键/值对的Properties对象然后将其传递给InitialContext构造函数来修复它。

JBoss 属性:

Properties properties = new Properties();
properties.put("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
properties.put("java.naming.provider.url", "jnp://localhost:1099");
properties.put("java.naming.factory.url.pkgs", "org.jboss.naming:org.jnp.interfaces");

InitialContext context = new InitialContext(properties);

我从开场文章中提供的链接获得相同的输出。