2013-08-19 33 views
0

我正在嘗試使用Jboss編寫JMS示例程序。我通過下面的鏈接瞭解如何使用JBoss的JMSAS 7.1.1:JNDI查找JMS連接factroy不起作用

http://docs.jboss.org/jbossmessaging/docs/usermanual-2.0.0.beta1/html/using-jms.html

我越來越而查找的連接工廠即「iniCtx.lookup(」連接工廠「)」

javax.naming.CommunicationException: Receive timed out [Root exception is java.net.SocketTimeoutException: Receive timed out] 
at org.jnp.interfaces.NamingContext.discoverServer(NamingContext.java:1058) 
at org.jnp.interfaces.NamingContext.checkRef(NamingContext.java:1127) 
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:478) 
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:471) 
at javax.naming.InitialContext.lookup(Unknown Source) 
at MessageProducer.main(MessageProducer.java:46) 
Caused by: java.net.SocketTimeoutException: Receive timed out 
at java.net.PlainDatagramSocketImpl.receive0(Native Method) 
at java.net.PlainDatagramSocketImpl.receive(Unknown Source) 
at java.net.DatagramSocket.receive(Unknown Source) 
at org.jnp.interfaces.NamingContext.discoverServer(NamingContext.java:1038) 

異常去原因是,Jboss命名服務未運行(netstat -an不顯示任何端口1099的結果)。 我沒有爲命名服務配置任何特定設置。我讓它採取默認端口1099.

我是否缺少任何配置?請幫助我運行Jboss命名服務。

規格:

的Jboss:AS 7.1.1最終 JRE:1.6 操作系統:Windows 7

回答

2

看來你混的Jboss是帶有手動版本。 AS7不使用JNP和JNDI端口是4447

所以具有獨立,full.xml以下設置

<security-enabled>false</security-enabled> 
... 
<jms-destinations> 
     <jms-queue name="testQueue"> 
      <entry name="queue/test"/> 
      <entry name="java:jboss/exported/jms/queue/test"/> 
     </jms-queue> 
    </jms-destinations> 

我能夠與客戶端連接,代碼如下:

Connection connection = null; 
InitialContext initialContext = null; 
Properties props = new Properties(); 
props.put(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.naming.remote.client.InitialContextFactory"); 
props.put(Context.PROVIDER_URL, "remote://localhost:4447"); 
props.put(Context.SECURITY_PRINCIPAL, "appuser"); 
props.put(Context.SECURITY_CREDENTIALS, "password"); 

try { 
    // Step 1. Create an initial context to perform the JNDI lookup. 
    initialContext = new InitialContext(props); 

    // Step 2. Perfom a lookup on the queue 
    Queue queue = (Queue)initialContext.lookup("jms/queue/test"); 

    // Step 3. Perform a lookup on the Connection Factory 
    ConnectionFactory cf = (ConnectionFactory)initialContext.lookup("jms/RemoteConnectionFactory"); 

    // Step 4.Create a JMS Connection 
    connection = cf.createConnection();