org.apache.activemq.ActiveMQConnectionFactory无法强制转换为javax.jms.QueueConnectionFactory

时间:2013-03-08 03:35:37

标签: jms

我已经在我的项目中集成了JMS,并在从servletcontext监听器调用ActiveMQConnectionFactory cannot be cast to javax.jms.QueueConnectionFactory时将异常作为JMS receiver,但它可以从public static void main方法正常工作,并且能够异步地从队列接收消息。我能够使用来自我的网络应用程序的queueconnectionqueuesession将消息发送到队列,并在实现qconnection接口的JMS接收器函数中使用相同的MessageListener方法。 / p>

任何人都可以建议我在网络应用启动时自动启动JMS接收器或消费者的最佳方式是因为我使用servletcontextlistener来自动开始监听消息队列。

JMS queuesenderqueuereceiver都可以使用public static void main方法正常工作,只有在从queuereceiver方法调用contextinitialize后才会启动问题

2 个答案:

答案 0 :(得分:1)

也许this post可以帮到你。

海报说,原因是类路径中有两个版本的ActiveMQ-jar。

在我的情况下,原因是类路径中有两个版本的javax.jms:ActiveMQ附带的版本,以及我用来编译源代码的版本(ActiveMQ应该只是我的应用程序的测试依赖项) )。我将maven依赖javax.jms:jms:1.1的范围从编译改为提供,从我的WAR文件中删除了javax.jms-jar,异常消失了。

答案 1 :(得分:0)

是的,这是一个版本问题,我能够通过使用这些版本的activemq,jms和j2ee依赖来解决这个问题。

ActiveMQ 5.8.0及以上

  • 的ActiveMQ-经纪自营的 5.8.0
  • 的ActiveMQ-客户机的 5.8.0
  • 的geronimo-JMS_的 1.1 _spec-1.1.1
  • Geronimo的J2EE的management_的 1.1 _spec-1.0.1

早期版本的ActiveMQ

  • 的ActiveMQ-核 - 的 5.5.1
  • Geronimo的J2EE的management_的 1.0 _spec-1.0
  • 的geronimo-JMS_的 1.1 _spec-1.1.1
  

检查它的帮助

版本