如何让WSO2应用服务器使用Activemq

How to get WSO2 Application Server to use Activemq

我已经在这上面浪费了 2 天时间,现在在破坏了一个工作的 WSO 系统以回到基础知识之后放弃了,只是 WSO2 AS + Activemq。

我只是无法让 jms 传输正常工作。

我一直收到这个错误

TID: [0] [AS] [2015-06-01 13:20:12,179] ERROR {org.apache.axis2.engine.ListenerManager} - Couldn't initialize the jmstransport listener {org.apache.axis2.engine.ListenerManager} {org.apache.axis2.transport.base.BaseTransportException: JNDI lookup of name TopicConnectionFactory returned a org.apache.activemq.ActiveMQConnectionFactory while a interface javax.jms.ConnectionFactory was expected}

我已经尝试了 WSO2 AS 附带的安装说明和 AS 附带的银行示例。

我在谷歌上搜索了太多解决方案,包括不将 geronimo 库一直放在 AS lib 目录中,解压 activemq-all jar 以从中删除 jms class 并重新打包,但仍然同样的问题。

我从银行样本中读到的最后一件事是,这个错误是由于我的 class 路径中有多个 geronimo class 副本引起的,但我已经搜索了该路径,但事实并非如此是的,除非它被嵌入到其他 class 包中。

我去年使用的以前版本的 AS 和 activemq 开箱即用,但这是不可能的。

谁能告诉我如何让 WSO2 产品与 activemq 一起工作,然后再放弃整个架构并使用其他开箱即用的东西?

多次重装终于找到问题

原来问题出在acvtivemq-all jar上,我之前也是这样,不带jms包重新打包解决的

然而,在对 fs 进行最后一次绝望的擦除之后,我注意到原始的 activemq-all jar 已从 wso2as/repository/components/lib 目录复制到 wso2as/repository/components/dropin 目录,因此仍在类路径。我讨厌这样做的系统:)

从 dropin 目录中删除该 jar 后,服务器启动时没有错误。