JNDI Context :: Nome não JMS obrigado Neste contexto
Pergunta
Eu estou tentando configurar um servidor JMS (openjms) em um aplicativo Primavera e quando me refiro os recursos usando a notação "jms / <> Eu recebo um 'nome' não exceção limite.
Qualquer indício o que está faltando?
javax.naming.NameNotFoundException: Name jms is not bound in this Context
at org.apache.naming.NamingContext.lookup(NamingContext.java:768)
at org.apache.naming.NamingContext.lookup(NamingContext.java:138)
at org.apache.naming.NamingContext.lookup(NamingContext.java:779)
at org.apache.naming.NamingContext.lookup(NamingContext.java:138)
O feijão é definido como:
<bean id="connectionFactory" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiTemplate" ref="jmsProvider"/>
<property name="jndiName" value="jms/RefreshTopic_CF"/>
<property name="resourceRef" value="true" />
</bean>
Eu tenho o lib JMS no caminho de classe eo servidor openjms está em execução.
Solução
No web.xml que não poderia se referir a como uma interface (javax.jms.Topic) tivemos que usar a classe exata. Este foi um problema com openjms e não com Websphere.
Não é permitido:
<resource-ref id="ResourceRef_125180">
<description>Topic</description>
<res-ref-name>jms/MyTopic</res-ref-name>
<res-type>javax.jms.Topic</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
permitido:
<resource-ref id="ResourceRef_125180">
<description>Topic</description>
<res-ref-name>jms/MyTopic</res-ref-name>
<res-type>org.exolab.jms.client.JmsTopic</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
Outras dicas
Parece que você quer
- Não configurado as openjms usar a mesma árvore JNDI a primavera está olhando - ter um olhar aqui
- Olhando para o caminho errado no JNDI. Como um palpite, solte os "jms /" do jndiName.
No meu caso eu tive que mover o recurso ou seja jms / XXX do server.xml do tomcat para context.xml e, em seguida, reiniciar o tomcat fez o truque.
**Create the file <webapp-root>/META-INF/context.xml**.
here`Here is an example:
<Context antiJARLocking="true">
<Resource
name="jms/ConnectionFactory"
auth="Container"
type="org.apache.activemq.ActiveMQConnectionFactory"
description="JMS Connection Factory"
factory="org.apache.activemq.jndi.JNDIReferenceFactory"
brokerURL="tcp://localhost:61616"
brokerName="LocalActiveMQBroker"
useEmbeddedBroker="false"/>
<Resource name="jms/topic/MyTopic"
auth="Container"
type="org.apache.activemq.command.ActiveMQTopic"
factory="org.apache.activemq.jndi.JNDIReferenceFactory"
physicalName="MY.TEST.FOO"/>
<Resource name="jms/queue/MyQueue"
auth="Container"
type="org.apache.activemq.command.ActiveMQQueue"
factory="org.apache.activemq.jndi.JNDIReferenceFactory"
physicalName="MY.TEST.FOO.QUEUE"/>
</Context>
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow