我已经使用ActiveMQ很久了。由于我在Tomcat服务器中的Web应用程序之间进行通信,我在Tomcat的conf
中定义了一些队列,并在tomcat/lib
中拥有所有的库,但我的应用程序使用Spring,更具体地说,是spring-jms和activeMQ-spring库。
如果我把activemq-all-5.11.1.jar
放在lib
中,那么一切都可以工作,但是如果我只是放在单独的jar(broker,client,console,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库中的,所以我不明白为什么有人认为需要与旧版本的代理对话。
1条答案
按热度按时间aiazj4mn1#
您需要包含遗留的OpenWire模块,以便支持与旧的代理版本对话,如果您在项目中包含this dependency,它应该可以工作。