Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

JMS e ActiveMQ: Aula 2 (Invalid broker URL)

Eu estou tentando executar o código inicial do vídeo da aula 2 e estou recebendo a seguinte mensagem de erro:

Exception in thread "main" javax.naming.NamingException: Invalid broker URL
    at org.apache.activemq.jndi.ActiveMQInitialContextFactory.getInitialContext(ActiveMQInitialContextFactory.java:67)
    at javax.naming.spi.NamingManager.getInitialContext(Unknown Source)
    at javax.naming.InitialContext.getDefaultInitCtx(Unknown Source)
    at javax.naming.InitialContext.init(Unknown Source)
    at javax.naming.InitialContext.<init>(Unknown Source)
    at br.com.gilberto.jms.TesteConsumidor.main(TesteConsumidor.java:10)

Estou com as libs: activemq-all-5.12 .jar javax.jms.jar

O arquivo jndi.properties está idêntico ao proposto no vídeo:

java.naming.factory.initial = org.apache.activemq.jndi.ActiveMQInitialContextFactory

# Use the following property to configure the default connector 
java.naming.provider.url = tcp://localhost:61616 

# Use the following property to specify the JNDI name the connection factory 
# should appear as. 
#connectionFactoryNames = connectionFactory, queueConnectionFactory, topicConnectionFactry 

# Register some queues in JNDI using the form: 
# queue.[jndiName] = [physicalName] 
queue.MyQueue = example.MyQueue 


# Register some topics in JNDI using the form: 
# topic.[jndiName] = [physicalName] 
topic.MyTopic = example.MyTopic

Alguma dica de onde estou errando?

5 respostas

Você pode tentar usar: netstat -a para verificar se o processo do activemq foi iniciado. Ou tente verificar se você pode acessar seu activemq usando a página admin: localhost:8161/admin/queues.jsp

O processo foi iniciado sim. o ActiveMQ está ativo e não entendo o motivo da mensagem de erro.

Se puder ajudar alguém a me responder, este erro ocorre logo na criação do contexto inicial.

solução!

Não entendi o motivo, mas assim que eu substituí o conteúdo do arquivo JNDI que eu copiei anteriormente da página http://activemq.apache.org/jndi-support.html pelo conteúdo do endereço https://github.com/apache/activemq/blob/master/activemq-unit-tests/src/test/resources/jndi.properties, o erro não ocorreu mais.

Apenas para complementar, percebi que um espaço em branco no final da linha "localhost:61616" foi o causador do erro reportado.

Notei também que um espaço em branco após "org.apache.activemq.jndi.ActiveMQInitialContextFactory" ocorre o erro

Exception in thread "main" javax.naming.NoInitialContextException: Cannot instantiate class: org.apache.activemq.jndi.ActiveMQInitialContextFactory  [Root exception is java.lang.ClassNotFoundException: org.apache.activemq.jndi.ActiveMQInitialContextFactory ]

Portanto aconselho SEMPRE verificar este tipo de detalhe nestas linhas de configuração para que não ocorra erros bobos.