Contexto JNDI :: El nombre no JMS obligado en este contexto
Pregunta
Estoy tratando de configurar un servidor JMS (OpenJMS) en una aplicación de primavera y cuando me refiero a los recursos mediante la notación "jms / <> me sale un 'nombre' que no esté obligada excepción.
Cualquier idea de lo que le falta?
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)
El grano se define 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>
Tengo la lib JMS en la ruta de clase y el servidor OpenJMS está en marcha.
Solución
En el web.xml no podíamos hacer referencia al como una interfaz (javax.jms.Topic) tuvimos que utilizar la clase exacta. Este fue un problema con OpenJMS y no con Websphere.
No se permite:
<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>
Otros consejos
Se le parece bien
- ¿No ha configurado los OpenJMS utilizar el mismo árbol JNDI la primavera está mirando - echar un vistazo aquí
- Buscando el camino equivocado en el JNDI. Como un presentimiento, soltar los "JMS /" de la jndiName.
En mi caso tuve que mover los recursos es decir JMS / XXX de server.xml de Tomcat para context.xml y luego reiniciar el gato hizo el truco.
**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>