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.

¿Fue útil?

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>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top