【问题标题】:Websphere 7 com.ibm.ejs.j2c.ConnectionEventListener.connectionErrorOccurredWebsphere 7 com.ibm.ejs.j2c.ConnectionEventListener.connectionErrorOccurred
【发布时间】:2014-11-04 08:53:30
【问题描述】:

我在 Websphere 7 上部署了一个 CMT MDB,它从 Websphere MQ 7 队列中获取消息,并通过资源适配器将它们发送到外部系统。 消息通过 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)

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

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

【问题讨论】:

  • 您是否正在尝试从 WAS 连接到 JBoss 消息传递? com.jbase.jremote.jca.JRemoteManagedConnection 表明了这一点。
  • 我正在尝试通过资源适配器从 Websphere 连接到 EIS。我拥有的资源适配器包含存档 jremote.jar,其中包括 com.jbase.jremote.jca.JRemoteManagedConnection 类。
  • 扩展日志还显示:Exception (not XA_RB*) from end javax.transaction.xa.XAException: Failed to receive message - Server disconnected at com.jbase.jremote.io.JConnectionImpl.end( Unknown Source) at com.ibm.ejs.j2c.XATransactionWrapper.end(XATransactionWrapper.java:603) at com.ibm.ws.Transaction.JTA.JTAResourceBase.end(JTAResourceBase.java:240) at com.ibm.tx。 jta.RegisteredResources.sendEnd(RegisteredResources.java:1152) at com.ibm.tx.jta.RegisteredResources.distributeEnd(RegisteredResources.java:1126)

标签: ejb ibm-mq websphere-7 message-driven-bean


【解决方案1】:

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

说了这么多,你在日志中看到错误信息的原因是因为tracing is on :),产生异常只是为了获取堆栈跟踪输出到日志文件。永远不会“抛出”异常,处理应照常继续。

【讨论】:

  • 我启用了跟踪以获取有关该问题的更多信息。我还假设资源适配器无法从池中获取连接,但这会阻塞流 MQ-MDB-Resource Adapter-EIS。消息由于通过资源适配器的连接失败,因此无法到达 EIS。在部署了相同 MDB 和相同资源适配器的 Websphere 8.5 上,消息成功到达 EIS。可能是 Websphere 上的配置问题?
  • 我会说这更有可能是与 EIS 系统连接的配置问题。你能比较一下WAS8.5和WAS7系统的配置吗?检查与 EIS 系统的第一次连接尝试,了解它可能未处理的原因。
  • j2cConnectionFactory 在两个 Websphere 版本上是相同的。在它们各自的自定义属性中,它们都引用了 EIS 的相同 ip 和端口
  • 最后,我将 MDB 设置为 Bean 模式,当捕获资源适配器抛出的连接异常时,我将自己回滚到输入队列,以便在重新建立连接后重新处理它们
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-08-13
  • 1970-01-01
  • 1970-01-01
  • 2015-08-15
  • 2017-12-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多