2011-04-13 78 views
1

我试图在war中部署weblogic 10.3上的Spring 3.0.5 messageListener,并且无法使其工作。Spring 3.0在weblogic 10.3上的messageListener - 错误“原因:[JMSClientExceptions:055142]外部目标”

我已经在weblogic上创建了一个简单的jms quque,但它看起来像weblogic认为我试图连接作为外部客户端,即使一切都是本地的?

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

这里的

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

有人见过这个我的Spring XML!?

回答

1

此错误消息并不表示您尝试连接为“外部客户端”。 WebLogic认为您正在尝试连接到不同的外部目标。

你试图设置什么类型的队列?有些事情可以尝试: 1)尝试浏览JNDI树到目的地以确认其存在并确认类型正确 2)确认您已创建JMS服务器并将其作为目标服务器 3)确认您拥有正确的队列定位

UPDATE:我能够重现和解决这个问题。在我的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}"/> 

,它是工作的罚款,而不是现在不断抛出的错误。

+0

它只是一个标准队列,最初我试图连接到一个外部队列,但没有工作,所以我设置了一个本地队列,这是我现在被卡住的地方。 – alanl 2011-04-13 15:14:34

+0

我还构建了一个简单的ejb mdb侦听器,并在本地和远程队列上测试它,并且它工作正常。 – alanl 2011-04-13 15:27:04

+0

我查找了JNDI树,队列(对我来说看起来OK)。 绑定名称:\t jms.testQueue Class:\t weblogic.jms.common.DestinationImpl – alanl 2011-04-13 15:29:26

0

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

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

+0

但它不是外国人。队列和监听器在一个weblogic实例上。 – alanl 2011-04-13 15:37:38

相关问题