我试图在 war 中的 weblogic 10.3 上部署 Spring 3.0.5 messageListener,但无法使其工作。
我在 weblogic 上创建了一个简单的 jms quque,但看起来 weblogic 认为我正在尝试作为外部客户端进行连接,即使一切都是本地的?
[WARN] Setup of JMS message listener invoker failed for destination 'System Module!Test Queue' - trying to recover. Cause: [JMSClientExceptions:055142]Foreign destination, System Module!Test Queue
这是我的 spring xml
<!-- connection factory -->
<jee:jndi-lookup id="jmsConnectionFactory" jndi-name="weblogic.jms.ConnectionFactory"
expose-access-context="true" />
<!-- weblogic jms queue -->
<jee:jndi-lookup id="testQueue" jndi-name="jms.testQueue" expose-access-context="true"/>
<!-- my onMessage listener bean -->
<bean id="jobNotificationQueueListener" class="com.xxx.component.jms.JobNotificationQueueListener" />
<!-- spring container -->
<bean id="jobNotificationQueueContainer"
class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="jmsConnectionFactory" />
<property name="destination" ref="testQueue" />
<property name="messageListener" ref="jobNotificationQueueListener" />
<property name="sessionAcknowledgeModeName" value="AUTO_ACKNOWLEDGE" />
<property name="sessionTransacted" value="true" />
</bean>
有人见过这个吗?
最佳答案
此错误消息并不表示您正在尝试作为“外部客户端”进行连接。 WebLogic 认为您正在尝试连接到外部目标,这是不同的。
您想要设置什么类型的队列?一些值得尝试的事情: 1) 尝试浏览 JNDI 树到目的地以确认其存在并确认类型正确 2) 确认您已创建 JMS 服务器并将其定位到有问题的服务器 3) 确认您的队列定位正确
更新:我能够重现并解决这个问题。在我的 ApplicationContext 文件中,我曾经有这样的配置:
<jee:jndi-lookup id="eventQueue" jndi-name="${jms.event.queue.name}" expose-access-context="true"/>
我把它改为:
<jee:jndi-lookup id="eventQueue" jndi-name="${jms.event.queue.name}"/>
现在工作正常,不会不断抛出该错误。
关于java - weblogic 10.3 上的 Spring 3.0 messageListener - 错误 "Cause: [JMSClientExceptions:055142]Foreign destination",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5650983/