【问题标题】:Spring 3.0 messageListener on weblogic 10.3 - ERROR "Cause: [JMSClientExceptions:055142]Foreign destination"weblogic 10.3上的Spring 3.0 messageListener - 错误“原因:[JMSClientExceptions:055142]外国目的地”
【发布时间】:2011-08-04 19:00:21
【问题描述】:

我正在尝试在 weblogic 10.3 上部署 Spring 3.0.5 messageListener,但无法使其正常工作。

我在 weblogic 上创建了一个简单的 jms quque,但看起来 weblogic 认为我正在尝试以外国客户端的身份连接,即使一切都是本地的?

[WARN] 目标“系统模块!测试队列”的 JMS 消息侦听器调用程序设置失败 - 尝试恢复。原因:[JMSClientExceptions:055142]国外目的地,系统模块!测试队列

这是我的 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>

有人见过这个吗?

【问题讨论】:

    标签: java spring weblogic weblogic-10.x


    【解决方案1】:

    此错误消息并不表示您正在尝试以“外国客户端”的身份进行连接。 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}"/>
    

    它现在工作正常,不会经常抛出该错误。

    【讨论】:

    • 这只是一个标准队列,最初我试图连接到外部队列但没有成功,所以我设置了一个本地队列,这就是我现在卡住的地方。
    • 我还构建了一个简单的 ejb mdb 监听器,并在本地和远程队列上进行了测试,效果很好。
    • 我查看了 JNDI 树,队列(对我来说看起来不错)。绑定名称:jms.testQueue 类:weblogic.jms.common.DestinationImpl
    • Foreign JMS 是 WLS 中的配置连接,仅供参考,不是一种交互方式。
    • 如果您在没有重新启动的情况下将目标类型从外部更改为本地队列,这可能是您的问题。尝试重新启动服务器。
    【解决方案2】:

    外部 JMS 在类路径中需要他们的客户端库(即 Websphere MQ 需要 mq.jar 和另外两个),然后应该配置连接工厂类(否则将使用默认的 Weblogic)等等。

    换句话说,这可能是配置问题,而不是编程问题。

    【讨论】:

    • 但它不是外国的。队列和监听器在一个 weblogic 实例上。
    猜你喜欢
    • 2015-11-18
    • 1970-01-01
    • 1970-01-01
    • 2013-01-29
    • 1970-01-01
    • 1970-01-01
    • 2018-09-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多