无法将org.apache.activemq.ActiveMQConnectionFactory转换为javax.jms.QueueConnectionFactory
我已经在我的项目中集成了JMS,并且在从servletcontext listener调用无法将org.apache.activemq.ActiveMQConnectionFactory转换为javax.jms.QueueConnectionFactory,jms,Jms,我已经在我的项目中集成了JMS,并且在从servletcontext listener调用JMS接收器时,无法将异常转换为javax.JMS.QueueConnectionFactory,但它在public static void main方法中运行良好,并且能够从队列接收消息异步。我能够使用我的web应用程序中的queueconnection和queuesession将消息发送到队列,并使用JMS接收器函数中相同的qconnection方法,实现MessageListener接口 有谁能告诉我
JMS接收器时,无法将异常转换为javax.JMS.QueueConnectionFactory
,但它在public static void main
方法中运行良好,并且能够从队列接收消息异步。我能够使用我的web应用程序中的queueconnection
和queuesession
将消息发送到队列,并使用JMS接收器函数中相同的qconnection
方法,实现MessageListener
接口
有谁能告诉我,当web应用程序启动时,自动启动JMS接收器或使用者的最佳方式是什么,因为我使用servletcontextlistener
自动开始侦听消息队列
(JMS queuesender和queuereceiver都可以通过public static void main
方法正常工作,只有在从contextinitialize
方法调用queuereceiver
后问题才会出现)也许可以帮助您
海报上说,原因是类路径中有两个版本的ActiveMQ JAR
在我的例子中,原因是类路径中有两个版本的javax.jms:一个是ActiveMQ附带的版本,另一个是我用来编译源代码的版本(ActiveMQ应该只是我的应用程序的测试依赖项)。我将maven依赖项javax.jms:jms:1.1的范围从compile更改为provided,从而从WAR文件中删除了javax.jms-jar,异常消失。是的,有一个版本问题,我能够通过使用这些版本的activemq、jms和j2ee依赖项来解决这个问题 ActiveMQ 5.8.0及以上版本
- activemq代理-5.8.0
- activemq客户端-5.8.0
- geronimo-jms\uu规范-1.1.1
- geronimo-j2ee-management\u规范-1.0.1
- activemq核心-5.5.1
- geronimo-j2ee-management(geronimo-j2ee-management)规范-1.0
- geronimo-jms\uu规范-1.1.1
即使两个JAR都是相同的版本,它也会抛出异常。@Lessing提到的“提供的”范围将在Maven中起作用。如果不使用Maven,不要将jar直接放在WEB-INF/lib中,而是将其包含在编译的构建路径中。