我已经在我的项目中集成了JMS,并在从servletcontext监听器调用ActiveMQConnectionFactory cannot be cast to javax.jms.QueueConnectionFactory
时将异常作为JMS receiver
,但它可以从public static void main
方法正常工作,并且能够异步地从队列接收消息。我能够使用来自我的网络应用程序的queueconnection
和queuesession
将消息发送到队列,并在实现qconnection
接口的JMS接收器函数中使用相同的MessageListener
方法。 / p>
任何人都可以建议我在网络应用启动时自动启动JMS接收器或消费者的最佳方式是因为我使用servletcontextlistener
来自动开始监听消息队列。
(JMS queuesender
和queuereceiver
都可以使用public static void main
方法正常工作,只有在从queuereceiver
方法调用contextinitialize
后才会启动问题
答案 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
检查它的帮助
版本