【问题标题】:I'm having an XA_END error while trying to send a message from my banking application T24 to WMQ through my application server JBOSS我在尝试通过我的应用程序服务器 JBOSS 从我的银行应用程序 T24 向 WMQ 发送消息时遇到 XA_END 错误
【发布时间】:2019-08-15 18:13:28
【问题描述】:

我正在设置我使用的银行应用程序 (T24) 来发送和接收来自 IBM MQ 的消息。将应用程序服务器 (JBOSS 7) 连接到 MQ 时出现错误

我已尝试更改 MDB,但无济于事。

这是我的日志文件中的一个 sn-p:

2019-03-22 17:00:17,269 INFO  [org.jboss.as.connector.deployers.RaXmlDeployer] (default-threads - 13) wmq.jmsra.rar: MQJCA4026:Transaction backed out with reason: 'The method 'xa_end' has failed with errorCode '100'.'.
2019-03-22 17:00:17,269 WARN  [org.jboss.jca.core.connectionmanager.pool.strategy.OnePool] (default-threads - 24) IJ000612: Destroying connection that could not be successfully matched: org.jboss.jca.core.connectionmanager.listener.TxConnectionListener@213a8b6c[state=NORMAL managed connection=com.ibm.mq.connector.outbound.ManagedConnectionImpl@3db98551 connection handles=0 lastReturned=1553274017260 lastValidated=1553274017260 lastCheckedOut=1553274017260 trackByTx=false pool=org.jboss.jca.core.connectionmanager.pool.strategy.OnePool@2185ef44 mcp=SemaphoreConcurrentLinkedQueueManagedConnectionPool@52753b07[pool=WMQ Connection Pool] xaResource=XAResourceWrapperImpl@518c200e[xaResource=com.ibm.mq.connector.xa.XARWrapper@67583e6a pad=false overrideRmValue=null productName=IBM MQ productVersion=@(#) MQMBID sn=p910-L180709.TRIAL su=_QGElQYNUEeidSaRkJ_p2Kg pn=com.ibm.mq.connector/src/com/ibm/mq/connector/outbound/ManagedConnectionMetaDataImpl.java jndiName=java:jboss/jms/MQConnectionFactory] txSync=null]
2019-03-22 17:00:17,269 WARN  [com.arjuna.ats.jta] (default-threads - 13) ARJUNA016045: attempted rollback of < formatId=131077, gtrid_length=29, bqual_length=36, tx_uid=0:ffffc0a81701:-783f63b7:5c951441:40a3, node_name=1, branch_uid=0:ffffc0a81701:-783f63b7:5c951441:40b4, subordinatenodename=null, eis_name=java:jboss/jms/MQConnectionFactory > (XAResourceWrapperImpl@44eb1bdd[xaResource=com.ibm.mq.connector.xa.XARWrapper@c57055e pad=false overrideRmValue=null productName=IBM MQ productVersion=@(#) MQMBID sn=p910-L180709.TRIAL su=_QGElQYNUEeidSaRkJ_p2Kg pn=com.ibm.mq.connector/src/com/ibm/mq/connector/outbound/ManagedConnectionMetaDataImpl.java jndiName=java:jboss/jms/MQConnectionFactory]) failed with exception code XAException.XAER_NOTA: javax.transaction.xa.XAException: The method 'xa_rollback' has failed with errorCode '-4'.



    at com.ibm.mq.jmqi.JmqiXAResource.rollback(JmqiXAResource.java:874)
    at com.ibm.mq.connector.xa.XARWrapper.rollback(XARWrapper.java:605)
    at org.jboss.jca.core.tx.jbossts.XAResourceWrapperImpl.rollback(XAResourceWrapperImpl.java:196)
    at com.arjuna.ats.internal.jta.resources.arjunacore.XAResourceRecord.topLevelAbort(XAResourceRecord.java:369)
    at com.arjuna.ats.arjuna.coordinator.BasicAction.doAbort(BasicAction.java:2999)
    at com.arjuna.ats.arjuna.coordinator.BasicAction.doAbort(BasicAction.java:2978)
    at com.arjuna.ats.arjuna.coordinator.BasicAction.Abort(BasicAction.java:1658)
    at com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.cancel(TwoPhaseCoordinator.java:127)
    at com.arjuna.ats.arjuna.AtomicAction.abort(AtomicAction.java:186)
    at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.rollbackAndDisassociate(TransactionImple.java:1282)
    at com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction.rollback(BaseTransaction.java:143)
    at com.arjuna.ats.jbossatx.BaseTransactionManagerDelegate.rollback(BaseTransactionManagerDelegate.java:134)
    at org.jboss.as.ejb3.inflow.MessageEndpointInvocationHandler.afterDelivery(MessageEndpointInvocationHandler.java:69)
    at sun.reflect.GeneratedMethodAccessor46.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.jboss.as.ejb3.inflow.AbstractInvocationHandler.handle(AbstractInvocationHandler.java:60)
    at org.jboss.as.ejb3.inflow.MessageEndpointInvocationHandler.doInvoke(MessageEndpointInvocationHandler.java:135)
    at org.jboss.as.ejb3.inflow.AbstractInvocationHandler.invoke(AbstractInvocationHandler.java:73)
    at com.temenos.tafj.mdb.TransactedMDB$$$endpoint1.afterDelivery(Unknown Source)
    at com.ibm.mq.connector.inbound.AbstractWorkImpl.run(AbstractWorkImpl.java:343)
    at org.jboss.jca.core.workmanager.WorkWrapper.run(WorkWrapper.java:223)
    at org.jboss.threads.SimpleDirectExecutor.execute(SimpleDirectExecutor.java:33)
    at org.jboss.threads.QueueExecutor.runTask(QueueExecutor.java:808)
    at org.jboss.threads.QueueExecutor.access$100(QueueExecutor.java:45)
    at org.jboss.threads.QueueExecutor$Worker.run(QueueExecutor.java:849)
    at java.lang.Thread.run(Thread.java:748)
    at org.jboss.threads.JBossThread.run(JBossThread.java:320)

【问题讨论】:

    标签: jboss jboss7.x ibm-mq


    【解决方案1】:

    可以放心地忽略该错误。

        XAER_NOTA is a valid return from xa_rollback()
        The XA specification indicates that "[a]n RM can also unilaterally roll back and forget a branch any time except after a successful prepare"
    

    【讨论】:

    • 感谢道格的回复。虽然,它很难忽略,因为我的 JBOSS 不断循环并出现相同的错误,并且由于不断循环,我的日志文件填充了 1 GB 以上。此外,我手动放入其中一个队列的任何消息都会立即移动到我的 Back-Out 队列中,jboss 加载并与 MQ 连接。当 JBOSS 连接时,我的银行软件也没有成功向 MQ 发送任何消息。这对我来说很奇怪,因为我刚开始使用 MQ,并认为通过这些 MDB 设置成功地将它连接到 JBOSS 和我的应用程序后,它会起作用。
    • 查看堆栈跟踪,您可以看到'afterDelivery()'。这意味着 MDB 'onMessage()' 已返回。然后事务被回滚。这意味着事务要么在代码中标记为仅回滚,要么发生了导致事务回滚的异常。
    • 感谢道格的回复。对此,我真的非常感激。请再问几个问题。知道什么可能导致事务回滚吗?我一直在网上搜索,但我并没有真正找出导致错误的原因:1(xa_end has failed with error code '100')2.(ARJUNA016045:尝试回滚
    • “正在破坏无法成功匹配的连接”实际上是由于 IBM JCA 客户端代码中的错误。 JMS 会话上的事务匹配检查工作不正常。我认为这在 8.0.0.4 中已修复,但随后在 8.0.0.10 中再次弹出。
    • 哇。这个错误怎么样: wmq.jmsra.rar: MQJCA4026:Transaction backed out with reason: 'The method 'xa_end' has failed with errorCode '100'.'这似乎是问题的根源。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-22
    • 2021-08-22
    • 2016-11-06
    • 1970-01-01
    • 2017-04-08
    • 1970-01-01
    相关资源
    最近更新 更多