首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WebSphere7 com.ibm.ejs.j2c.ConnectionEventListener.connectionErrorOccurred

WebSphere7 com.ibm.ejs.j2c.ConnectionEventListener.connectionErrorOccurred
EN

Stack Overflow用户
提问于 2014-11-04 16:53:31
回答 1查看 665关注 0票数 0

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

代码语言:javascript
复制
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)

如果我在WebSphere 8.5中使用相同的资源适配器部署相同的MDB,它可以正常工作,没有任何错误。因此,我假设这与WebSphere 7以及它无法在连接池中打开/找到连接的方式有关。这不是负载测试,所以不会有太多的资源试图获得空闲连接。

提前感谢您对此问题的任何建议!

EN

回答 1

Stack Overflow用户

发布于 2014-11-04 18:33:49

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

如上所述,您在日志中看到错误消息的原因是因为跟踪处于打开状态:),生成异常只是为了获取堆栈跟踪以输出到日志文件。异常永远不会“抛出”,处理应该照常继续。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26730993

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档