سؤال

أحاول تكوين خادم JMS (OpenJMS) في تطبيق ربيع وعندما أحيل الموارد باستخدام التدوين "JMS / <> أحصل على استثناء" اسم ".

أي فكرة ما هو مفقود؟

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)

يتم تعريف الفول على النحو التالي:

<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>

لدي JMS Lib في مسار الفصل ويتم تشغيل خادم OpenJMS.

هل كانت مفيدة؟

المحلول

في web.xml لم نتمكن من إحالة الواجهة (javax.jms.topic) كان علينا استخدام الفئة الدقيقة. كانت هذه مشكلة مع Openjms وليس مع WebSphere.

غير مسموح:

<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>

مسموح:

<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>

نصائح أخرى

يبدو أنك أيضا

  • لم تكفيح OpenJMS لاستخدام نفس شجرة JNDI في الربيع يبحث في - إلقاء نظرة هنا
  • تبحث عن المسار الخطأ في JNDI. كحد أقصى، إسقاط "JMS /" من Jndiname.

في حالتي، اضطررت إلى نقل المورد أي JMS / XXX من Server.xml من Tomcat إلى Context.xml ثم إعادة تشغيل Tomcat الحيلة.

    **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>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top