【问题标题】:Could not refresh JMS Connection for destination 'queue://inventorydsDestination' - retrying in 5000 ms. Cause: AOP configuration seems to be invalid无法刷新目标“queue://inventorydsDestination”的 JMS 连接 - 5000 毫秒后重试。原因:AOP 配置似乎无效
【发布时间】:2015-12-09 12:28:09
【问题描述】:

当我在 Tomcat 管理器中重新部署应用程序战争时,我遇到了以下异常。例如,在第一次部署时,它会正确连接到外部 ActiveMQ,但是当我在 Tomcat 管理器中停止/启动战争时,会重复抛出以下 execption。在此之后,JMS 不会连接到 ActiveMQ,但出现以下异常:

[2015-09-13T04:03:33.689] | [ERROR] | [inventorydsRequestListenerContainer-1] | [Could not refresh JMS Connection for destination 'queue://inventorydsDestination' - retrying in 5000 ms. Cause: AOP configuration seems to be invalid: tried calling method [public abstract javax.jms.Connection javax.jms.ConnectionFactory.createConnection() throws javax.jms.JMSException] on target [org.springframework.jms.connection.UserCredentialsConnectionFactoryAdapter@168d95c7]; nested exception is java.lang.IllegalArgumentException: java.lang.ClassCastException@2fb6f3c3]

applicationContext-Jms.xml

<bean id="jmsJndiConnectionFactory" class="org.springframework.jndi.JndiObjectFactoryBean">
   <property name="jndiName" value="${inventory.mq.name}"/>
   <property name="lookupOnStartup" value="false"/>
   <property name="cache" value="true" />
   <property name="proxyInterface"  value="javax.jms.QueueConnectionFactory" />
</bean>

<bean id="jmsConnectionFactory" class="org.springframework.jms.connection.CachingConnectionFactory">
    <property name="targetConnectionFactory" ref="jmsJndiConnectionFactory" />
    <property name="sessionCacheSize" value="10" />
</bean>

connectionFactory - JNDI 配置

<bean id="jndiName" class="java.lang.String">
    <constructor-arg value="${inventory.mq.name}"/>
</bean>

<bean id="bindingObject" class="org.springframework.jms.connection.UserCredentialsConnectionFactoryAdapter">
        <property name="targetConnectionFactory" ref="mqConnectionFactory" />
        <property name="username" value="${inventory.activeMQ.username}" />
        <property name="password" value="${inventory.activeMQ.password}" />
</bean>

<bean id="mqConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
    <property name="brokerURL" value="${inventory.activeMQ.brokerurl}" />
</bean>

属性:

inventory.activeMQ.brokerurl=tcp://localhost:61616
inventory.activeMQ.username=admin 
inventory.activeMQ.password=admin
inventory.mq.name=jms/connectionFactory
inventory.queue.type=org.apache.activemq.command.ActiveMQQueue

【问题讨论】:

    标签: activemq spring-jms tomcat8


    【解决方案1】:

    我遇到了类似的问题,发现这是 tomcat 和我的 Web 应用程序之间的类路径问题。我需要在我的 web 应用程序中将 jms 依赖项的范围设置为提供而不是默认值(即编译)。这样,我的 WAR 可部署文件不包含与位于 tomcat lib 文件夹中的 apache-activemq-all jar 中包含的 jms 类发生冲突的另一个 jms jar。

        <dependency>
            <groupId>javax.jms</groupId>
            <artifactId>jms-api</artifactId>
            <version>1.1-rev-1</version>
            <scope>provided</scope>
        </dependency>
    

    【讨论】:

      【解决方案2】:

      在调试模式下跳过所有断点/关闭调试模式或以运行模式运行

      后尝试

      【讨论】:

        猜你喜欢
        • 2014-04-01
        • 2015-11-21
        • 2021-08-30
        • 2019-06-15
        • 2023-01-30
        • 2018-12-19
        • 1970-01-01
        • 2019-12-26
        • 1970-01-01
        相关资源
        最近更新 更多