在使用 log4j 1.2.17 将消息发送到 IBM MQ 主题时,我很难让 Java Web 应用程序在 IBM WebSphere Application Server 9.0.5.5 上运行。
在 WAS 中,我们最初有一个ConnectionFactory
设置用于与主题进行通信。这就是我们对使用 IBM MQ 队列的其他应用程序所做的事情。但是,这最终给了我以下错误:
java.lang.ClassCastException: com.ibm.ejs.jms.JMSConnectionFactoryHandle incompatible with javax.jms.TopicConnectionFactory
我发现一篇 IBM 文章讨论了与队列类似的问题,解决方案是使用QueueConnectionFactory
. 所以,同样我从使用 a 切换ConnectionFactory
到 a TopicConnectionFactory
。现在我得到这个错误:
java.lang.ClassCastException: com.ibm.ejs.jms.JMSTopicConnectionFactoryHandle incompatible with javax.jms.TopicConnectionFactory
我有另一个使用 log4j2 和队列的 Java web 应用程序。我们ConnectionFactory
在 WAS 中的 Resources > JMS 中进行了设置,就像我们在此应用程序中所做的那样。一切正常。这里唯一的区别是我们使用 log4j 1.2.17 和主题而不是队列。
我无法更改 log4j 的版本,因为它已融入我们拥有的供应商平台。
我检查了正在部署的 WAR 文件,其中只有一个jms.jar
(以及用于 IBM MQ 客户端 9.1.0.0 的 fscontext、providerutil、mq 等 JAR)。jms.jar
因此,没有其他可能是较旧 JMS 版本的竞争者。
任何想法这里可能有什么问题?