当前位置: 首页 > 知识库问答 >
问题:

Websphere 7 com.ibm.ejs.j2c.ConnectionEventListener.ConnectionErrorOccured

许茂才
2023-03-14

我在WebSphere7上部署了CMT MDB,它从WebSphereMQ7队列获取消息,并通过资源适配器将消息发送到外部系统。在消息通过MDB逻辑并尝试通过资源适配器与外部系统建立连接之后,我得到了错误:

Connection Error Request Stack: java.lang.Throwable 
    at com.ibm.ejs.j2c.ConnectionEventListener.connectionErrorOccurred(ConnectionEventListener.java:441)
    at com.jbase.jremote.jca.EventNotifier$1.notify(Unknown Source)
    at com.jbase.jremote.jca.JRemoteManagedConnection.notify(Unknown Source)
    at com.jbase.jremote.jca.JRemoteManagedConnection.isAlive(Unknown Source)
    at com.jbase.jremote.jca.JRemoteManagedConnectionFactory.matchManagedConnections(Unknown Source)
    at com.ibm.ejs.j2c.PoolManager.getMCWrapperFromMatch(PoolManager.java:3909)
    at com.ibm.ejs.j2c.PoolManager.claimVictim(PoolManager.java:3784)
    at com.ibm.ejs.j2c.PoolManager.reserve(PoolManager.java:2474)
    at com.ibm.ejs.j2c.ConnectionManager.allocateMCWrapper(ConnectionManager.java:1064)
    at com.ibm.ejs.j2c.ConnectionManager.allocateConnection(ConnectionManager.java:701)
    at com.jbase.jremote.jca.JRemoteConnectionFactoryImpl.getConnection(Unknown Source)
    at com.jbase.jremote.jca.JRemoteConnectionFactoryImpl.getConnection(Unknown Source)
    at com.temenos.tocf.grouping.mdb.MessageGroupingMDB.processRequest(MessageGroupingMDB.java:192)
    at com.temenos.tocf.grouping.mdb.MessageGroupingMDB.sendMessage(MessageGroupingMDB.java:166)
    at com.temenos.tocf.grouping.mdb.MessageGroupingMDB.onMessage(MessageGroupingMDB.java:123)
    at com.ibm.ejs.container.MessageEndpointHandler.invokeMdbMethod(MessageEndpointHandler.java:1093)
    at com.ibm.ejs.container.MessageEndpointHandler.invoke(MessageEndpointHandler.java:778)
    at $Proxy28.onMessage(Unknown Source)
    at com.ibm.mq.connector.inbound.MessageEndpointWrapper.onMessage(MessageEndpointWrapper.java:131)
    at com.ibm.mq.jms.MQSession$FacadeMessageListener.onMessage(MQSession.java:147)
    at com.ibm.msg.client.jms.internal.JmsSessionImpl.run(JmsSessionImpl.java:2598)
    at com.ibm.mq.jms.MQSession.run(MQSession.java:862)
    at com.ibm.mq.connector.inbound.WorkImpl.run(WorkImpl.java:229)
    at com.ibm.ejs.j2c.work.WorkProxy.run(WorkProxy.java:399)
    at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1662)

如果我在WebSphere8.5中使用相同的资源适配器部署相同的MDB,它不会出错。所以我假设它与WebSphere7有关,以及它无法在连接池中打开/查找连接的方式。这不是一个负载测试,所以不会有太多的资源试图获得免费连接。

提前感谢任何关于这个问题的建议!

共有1个答案

慕容聪
2023-03-14

看起来您的MDB正在尝试使用com.jbase资源适配器获取连接,而IBM JCA正在空闲池中搜索任何匹配的连接。它调用com.jbase resource adapters matchManagedConnection方法,并且资源适配器执行了一个isAlive检查,然后调用您可以在堆栈顶部看到的ConnectionErrorReconded回调。当资源适配器希望JCA组件从池中删除“坏的”连接时,即您连接到的资源已停止或网络连接已删除时,就会发生这种情况。

说了以上所有的内容,您之所以在日志中看到错误消息,是因为跟踪打开了:),生成异常只是为了获得要输出到日志文件的堆栈跟踪,异常从来不会‘抛出',处理应该正常继续。

 类似资料:

相关问答

相关文章

相关阅读