【问题标题】:Spring: JMSTemplate/CachingConnectionFactory deployables unable to start automatically in weblogicSpring:JMSTemplate/CachingConnectionFactory 部署无法在 weblogic 中自动启动
【发布时间】:2015-01-29 05:00:29
【问题描述】:

我最近更改了我的一些应用程序以使用以下内容:

org.springframework.jndi.JndiTemplate  
org.springframework.jms.connection.CachingConnectionFactory   
org.springframework.jms.core.JmsTemplate  

一切正常,我能够部署我的战争文件并将 JMS 消息发送到队列。

但是,当我的托管服务器重新启动时,会发生一些奇怪的事情。可部署组件都将进入失败状态,这需要我手动启动它们。

这在更改为使用缓存连接工厂、jndi 模板和 jms 模板后开始发生。

我的 SpringConfig 文件:

<!-- Service Controller begin -->
<bean id="appUtils" class="com.foo.util.AppUtil" lazy-init="true" />
<bean id="jms_jndiTemplate" class="org.springframework.jndi.JndiTemplate" lazy-init="true">
    <property name="environment">
        <props>
            <prop key="java.naming.factory.initial">#{jmsJndiFactory}</prop>
            <prop key="java.naming.provider.url">#{jmsIp}</prop>
        </props>
    </property>
</bean>
<bean id="jmsUtils" class="com.foo.JmsUtil" >
     <property name="template">
       <bean class="org.springframework.jms.core.JmsTemplate" lazy-init="true">
            <property name="connectionFactory">
                  <bean class="org.springframework.jms.connection.CachingConnectionFactory" lazy-init="true">
                        <property name="sessionCacheSize" value="10" />
                        <property name="targetConnectionFactory">
                            <bean class="org.springframework.jndi.JndiObjectFactoryBean">
                                <property name="jndiTemplate" ref="jms_jndiTemplate" />
                                <property name="jndiName" ref="jmsFactory" />
                            </bean>
                        </property>
                    </bean>
            </property>
        </bean>
     </property>
     <property name="destination">
        <bean class="org.springframework.jndi.JndiObjectFactoryBean" lazy-init="true">
            <property name="jndiTemplate" ref="jms_jndiTemplate" />
            <property name="jndiName" ref="jmsQueue" />
        </bean>
     </property>
 </bean>    

ApplicationContext 文件:

<bean id="jmsQueue" class="java.lang.String" ><constructor-arg value="${jmsQueue.local}" /></bean>
<bean id="jmsFactory" class="java.lang.String" ><constructor-arg value="${jmsFactory.local}" /></bean>
<bean id="jmsJndiFactory" class="java.lang.String" ><constructor-arg value="${jmsJndiFactory.local}" /></bean>
<bean id="jmsIp" class="java.lang.String" ><constructor-arg value="${jmsIp.local}" /></bean>    

applicationProperties 文件:

jmsQueue.local=jms/Queue
jmsFactory.local=jms/ConnectionFactory
jmsJndiFactory.local=weblogic.jndi.WLInitialContextFactory
jmsIp.local=t3://localhost:7031

有人知道为什么会发生这种情况吗?我正在使用 Weblogic。任何帮助将不胜感激。

谢谢!

编辑:忘了提到导致失败状态的错误是

javax.naming.NameNotFoundException: Unable to resolve 'jms.Queue'. Resolved 'jms'; remaining name 'Queue'.

【问题讨论】:

  • 当服务器未完全启动并且尝试访问 JMS/JNDI 时,我看到了类似的情况。您在日志中看到任何其他错误吗?如果这是一个时间问题,您可能需要为您的应用程序设置 Deployment Order,以确保它们在启动过程中稍后出现
  • 您好,感谢回复 在哪里可以找到更多的部署顺序以及在哪里设置?
  • @DisplayNameismissing 另一个错误是java.lang.Exception at weblogic.jndi.internal.VersionHandler.checkGlobalResource(VersionHandler.java:457) at weblogic.jndi.internal.ServerNamingNode.lookupHere(ServerNamingNode.java:187) at weblogic.jndi.internal.BasicNamingNode.lookup(BasicNamingNode.java:206) at weblogic.jndi.internal.BasicNamingNode.lookup(BasicNamingNode.java:220) at weblogic.jndi.internal.WLEventContextImpl.lookup(WLEventContextImpl.java:254) at weblogic.jndi.internal.WLContextImpl.lookup(WLContextImpl.java:412)
  • 如果您打开管理控制台并转到Deployments -&gt; &lt;app name&gt; -&gt; Overview,则有一个部署顺序字段。默认值为 100,但更高的数字将导致在启动过程中稍后发生部署。不幸的是,我认为我之前没有看到您上次评论中的错误
  • @DisplayNameismissing 感谢您的建议,很遗憾设置部署顺序似乎并不能解决此问题。我只是觉得奇怪的是,在更改为 CachingConnectionFactory/JMSTemplate/JndiTemplate 后会发生这种情况。

标签: spring jms weblogic spring-jms jmstemplate


【解决方案1】:

这是一个 JNDI 错误。该消息的意思是“我试图在 JNDI 上下文中找到jms/Queue,但我只找到jms;下面没有Queue 孩子”。

检查您在 WebSphere 中为应用程序配置的资源。

【讨论】:

    猜你喜欢
    • 2018-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多