2016-07-07 159 views
0

我想了解JBoss中的JMS隊列,但是我遇到了一個錯誤。我下面這個頁面上的教程:https://docs.jboss.org/jbossas/docs/Server_Configuration_Guide/4/html/JMS_Examples-A_Point_To_Point_Example.htmlJBoss AS 5.1 JMS隊列NoInitialContextException

我得到這一行的錯誤: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文件夾中。我查了一些例子,看看會是什麼樣子,但每個例子都不一樣。

我該如何解決這個問題?提前致謝!

回答

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); 

我從在開封后所提供的鏈接輸出相同。