为什么我在使用 Spring 和 ActiveMQ 时会收到“无效版本”?

问题描述 投票:0回答:1

我使用ActiveMQ已经有一段时间了。由于我在 Tomcat 服务器中的 Web 应用程序之间进行通信,因此我在 Tomcat 的

conf
中定义了一些队列,并在
tomcat/lib
中拥有所有库,但我的应用程序使用 Spring,更具体地说,是 spring-jms 和 activemq-spring 库。

如果我将

activemq-all-5.11.1.jar
放入
lib
中,那么一切正常,但如果我只是放入单独的罐子(经纪人、客户端、控制台、kahadb、protobuf 和 spring),我会收到以下错误:

javax.jms.JMSException: Could not create Transport. Reason: java.io.IOException: Invalid version: 6, could not load org.apache.activemq.openwire.v6.MarshallerFactory
  at org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:36) ~[activemq-client-5.11.1.jar:5.11.1]
  at org.apache.activemq.ActiveMQConnectionFactory.createTransport(ActiveMQConnectionFactory.java:319) ~[activemq-client-5.11.1.jar:5.11.1]
  at org.apache.activemq.ActiveMQConnectionFactory.createActiveMQConnection(ActiveMQConnectionFactory.java:332) ~[activemq-client-5.11.1.jar:5.11.1]
  at org.apache.activemq.ActiveMQConnectionFactory.createActiveMQConnection(ActiveMQConnectionFactory.java:305) ~[activemq-client-5.11.1.jar:5.11.1]
  at org.apache.activemq.ActiveMQConnectionFactory.createConnection(ActiveMQConnectionFactory.java:245) ~[activemq-client-5.11.1.jar:5.11.1]
  at org.springframework.jms.connection.SingleConnectionFactory.doCreateConnection(SingleConnectionFactory.java:365) ~[spring-jms-4.1.6.RELEASE.jar:4.1.6.RELEASE]

我检查了“v6.MarshallerFactory”类,它似乎与与旧版本的经纪人交谈有关。但是我的代理在 Tomcat 中运行,而我拥有的唯一 ActiveMQ jar 是 Tomcat 库中的那些,所以我不明白为什么有人认为需要与旧版本的代理进行通信。

spring tomcat activemq spring-jms
1个回答
0
投票

您需要包含旧版 OpenWire 模块才能支持与旧代理版本的通信,如果您在项目中包含此依赖项,它应该可以工作。

© www.soinside.com 2019 - 2024. All rights reserved.