【发布时间】:2014-08-27 14:55:40
【问题描述】:
我当前的生产 MDB 在版本 WAS 6.1 的 AS/400 上运行。
没有为 MDB 设置 QA 环境,所以我正在进行设置,我在消息队列中插入了一条消息并设置 MDB 以获取消息并处理消息,但 MDB Listner 未启动并给我错误。相同的代码工作正常但它给我的质量检查带来了问题
我正在使用 WebSphere Application Server 8.5.5.1 进行 QA。
[8/27/14 9:47:56:073 EDT] 00000043 MDBListenerIm W WMSG0019E:无法启动 MDB 侦听器 MDBPortalBean,JMSDestination jms/RECEIVER_QUEUE_CONN_FACTORY_QA:java.lang.ClassCastException:com.ibm.ejs.jms.JMSQueueConnectionFactoryHandle与 javax.jms.Destination 不兼容 在 com.ibm.ejs.jms.listener.MDBListenerImpl.createResources(MDBListenerImpl.java:264) 在 com.ibm.ejs.jms.listener.MDBListenerImpl.internalStart(MDBListenerImpl.java:738) 在 com.ibm.ejs.jms.listener.MDBListenerImpl.restart(MDBListenerImpl.java:711) 在 com.ibm.ejs.jms.listener.MDBListenerImpl.alarm(MDBListenerImpl.java:1134) 在 com.ibm.ejs.util.am._Alarm.runImpl(_Alarm.java:151) 在 com.ibm.ejs.util.am._Alarm.run(_Alarm.java:136) 在 com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1862)
【问题讨论】:
-
您能否检查 WebSphere 控制台,并查看您的 EAR 文件的 jndi 映射在生产环境中与 QA 是否相同?在我看来,您已经将对队列的引用映射到连接工厂,反之亦然。
-
我没有设置连接工厂,我使用 JNDI jms/RECEIVER_QUEUE_CONN_FACTORY_QA 设置了队列连接工厂,代码类似于 QueueConnectionFactory queueConnectionFactory = null; JMSLookupFactory jmslookupobj = new JMSLookupFactory(this.m_BusContext, this.m_FtcUsrContxt);
-
好吧。看看这个:www-01.ibm.com/support/docview.wss?uid=swg21385923 似乎符合我们的问题。
-
我将它从 jms/RECEIVER_QUEUE_CONN_FACTORY_QA 更改为 jms/RECEIVER_QUEUE_DEST_QA,这是我的队列的 JNDI 名称,现在出现新错误 WMSG0019E:无法启动 MDB 侦听器 MDBPortalBean,JMSDestination jms/RECEIVER_QUEUE_DEST_QA:com.ibm.msg .client.jms.DetailedJMSException:JMSWMQ0018:无法使用连接模式“客户端”和主机名“webapp.ftc.org(1416)”连接到队列管理器“SENDER_QUEUE_MGR_QA”。检查队列管理器是否已启动,如果在客户端模式下运行,请检查是否有正在运行的侦听器。有关详细信息,请参阅链接的异常。
-
也许您在此端口上有另一个 QM!