0

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

任何人都可以建议我在 Web 应用程序启动时自动启动 JMS 接收器或使用者的最佳方式是什么,因为我servletcontextlistener习惯于自动开始侦听消息队列。

(两者都可以从方法中正常工作, JMS queuesender并且问题仅在调用from方法后才开始)queuereceiverpublic static void mainqueuereceivercontextinitialize

4

2 回答 2

1

也许这篇文章可以帮助你。

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

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

于 2013-05-19T20:20:17.040 回答
0

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

ActiveMQ 5.8.0 及以上

  • activemq-broker- 5.8.0
  • activemq-client- 5.8.0
  • geronimo-jms_ 1.1 _spec-1.1.1
  • geronimo-j2ee-management_ 1.1 _spec-1.0.1

早期版本的 ActiveMQ

  • activemq-core- 5.5.1
  • geronimo-j2ee-management_ 1.0 _spec-1.0
  • geronimo-jms_ 1.1 _spec-1.1.1

检查它会帮助的版本

于 2015-04-07T12:07:11.433 回答