2013-08-19 5 views
0

Я пытаюсь написать образец программы для JMS с помощью Jboss. Я пошел по следующей ссылке для того, как использовать JBoss для JMSAS 7.1.1: JNDI Поиск соединения JMS factroy не работает

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

Я получаю исключение при поиске для ConnectionFactory т.е. "iniCtx.lookup (" ConnectionFactory ")"

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 Naming Service не работает (netstat -an не показывает результат для порта 1099). Я не настраивал какие-либо конкретные настройки для службы именования. Я разрешил ему использовать порт по умолчанию 1099.

У меня отсутствует какая-либо конфигурация? Пожалуйста, помогите мне в запуске службы именования Jboss.

Спецификация:

Jboss: AS 7.1.1 Final 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();