Jndi Context :: اسم JMS غير مرتبط في هذا السياق
سؤال
أحاول تكوين خادم 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>
لا تنتمي إلى StackOverflow