Spring环境下使用多个JMS队列时找不到JMS队列的问题

一个应用,连接两个不同的JMS队列,实际运行时抛出如下异常:

 

 

org.springframework.jms.UncategorizedJmsException: Uncategorized exception occur ed during JMS processing; nested exception is weblogic.jms.common.JMSException:
could not find Server JmsManaged_7030; nested exception is weblogic.jms.common.J MSException: could not find Server JmsManaged_7030
上Weblogic控制台查看运行状态,发现队列配置正确且正常运行,排除配置问题。
分析程序,在JMS配置文件JmsA.xml中发现如下内容:
    <bean id="jmsConnectionFactoryForA" class="org.springframework.jndi.JndiObjectFactoryBean">
         <property name="jndiTemplate" ref="jndiTemplate"/>  
    </bean>  
    <bean id="jndiTemplate" class="org.springframework.jndi.JndiTemplate"> 
 
       ......
  <prop key="java.naming.provider.url"> ${jmsUrlFor A }</prop>
        ......
    </bean> 
    
在JMS配置文件JmsB.xml中发现如下内容:
    <bean id="jmsConnectionFactoryForB" class="org.springframework.jndi.JndiObjectFactoryBean">
          <property name="jndiTemplate" ref="jndiTemplate"/>  
    </bean>  
    <bean id="jndiTemplate" class="org.springframework.jndi.JndiTemplate"> 
        ......
        <prop key="java.naming.provider.url"> ${jmsUrlForB }</prop>
        ......
    </bean> 
问题就发生在 jndiTemplate上。由于默认配置Spring按名字匹配,而系统中定义了不止一个 jndiTemplate ,故无法找到匹配的jndiTemplate,发生问题。将JmsA.xml中将jndiTemplate改为jndiTemplateForA,将JmsB.xml中则改为jndiTemplateForB,并相应修改引用的地方,重新测试OK。
建议:给bean的id命名时要避免重名,通常可以采用添加后缀的形式。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值