我们正在使用jboss-6.1.0.Final
(Community Edition)来运行与股票市场相关的应用程序(EJB2.1应用程序/ MDB)。
基本上我们的环境有两个应用服务器(主服务器和辅助服务器)和Oracle(版本10,标准版)作为数据库。 主服务器和辅助服务器都收集了新订单请求,并通过JBoss Hornet Queue发送到证券交易所。
只有Primary负责通过查看JBoss Hornet Queue来挑选/处理上述新订单请求的执行报告。有些日子我们注意到,在通过主服务器处理这些执行报告时,没有处理一些执行报告(大约1000个中的1个或2个)。 例外详情如下。 以下是例外情况:
11:39:40,378 WARN [jta] ARJUNA-16037 Could not find new XAResource to use for recovering non-serializable XAResource < formatId=131076, gtrid_length=29, bqual_length=28, tx_uid=0:ffffc0a8cb27:126a:56ab4746:ac846, node_name=1, branch_uid=0:ffffc0a8cb27:126a:56ab4746:ac84b, eis_name=unknown eis name >
11:39:40,410 INFO [jta] ARJUNA-16013 Rolling back < 131076, 29, 28, 0000000000-1-1-64-88-5339001810686-8571700177-83490000000000-1-1-64-88-5339001810686-8571700177-78 >
11:39:41,425 WARN [jta] ARJUNA-16036 commit on < formatId=131076, gtrid_length=29, bqual_length=28, tx_uid=0:ffffc0a8cb27:126a:56ab4746:1107ad, node_name=1, branch_uid=0:ffffc0a8cb27:126a:56ab4746:1107b2, eis_name=unknown eis name > (org.jboss.resource.adapter.jdbc.xa.XAManagedConnection@55e02042) failed with exception $XAException.XAER_NOTA: oracle.jdbc.xa.OracleXAException
at oracle.jdbc.xa.OracleXAResource.checkError(OracleXAResource.java:1040) [:Oracle JDBC Driver version - "10.2.0.5.0"]
at oracle.jdbc.xa.client.OracleXAResource.commit(OracleXAResource.java:573) [:Oracle JDBC Driver version - "10.2.0.5.0"]
at org.jboss.resource.adapter.jdbc.xa.XAManagedConnection.commit(XAManagedConnection.java:279) [:6.1.0.Final]
at com.arjuna.ats.internal.jta.resources.arjunacore.XAResourceRecord.topLevelCommit(XAResourceRecord.java:442) [:6.1.0.Final]
at com.arjuna.ats.arjuna.coordinator.BasicAction.doCommit(BasicAction.java:2789) [:6.1.0.Final]
at com.arjuna.ats.arjuna.coordinator.BasicAction.doCommit(BasicAction.java:2705) [:6.1.0.Final]
at com.arjuna.ats.arjuna.coordinator.BasicAction.phase2Commit(BasicAction.java:1788) [:6.1.0.Final]
at com.arjuna.ats.arjuna.coordinator.BasicAction.End(BasicAction.java:1481) [:6.1.0.Final]
at com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.end(TwoPhaseCoordinator.java:99) [:6.1.0.Final]
at com.arjuna.ats.arjuna.AtomicAction.commit(AtomicAction.java:159) [:6.1.0.Final]
at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.commitAndDisassociate(TransactionImple.java:1158) [:6.1.0.Final]
at com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction.commit(BaseTransaction.java:119) [:6.1.0.Final]
at com.arjuna.ats.jbossatx.BaseTransactionManagerDelegate.commit(BaseTransactionManagerDelegate.java:75) [:6.1.0.Final]
at org.jboss.ejb.plugins.inflow.MessageEndpointInterceptor.endTransaction(MessageEndpointInterceptor.java:434) [:6.1.0.Final]
at org.jboss.ejb.plugins.inflow.MessageEndpointInterceptor.finish(MessageEndpointInterceptor.java:294) [:6.1.0.Final]
at org.jboss.ejb.plugins.inflow.MessageEndpointInterceptor.after(MessageEndpointInterceptor.java:213) [:6.1.0.Final]
at org.jboss.ejb.plugins.inflow.MessageEndpointInterceptor.invoke(MessageEndpointInterceptor.java:124) [:6.1.0.Final]
at org.jboss.proxy.ClientMethodInterceptor.invoke(ClientMethodInterceptor.java:74) [:6.1.0.Final]
at org.jboss.proxy.ClientContainer.invoke(ClientContainer.java:101) [:6.1.0.Final]
at $Proxy493.afterDelivery(Unknown Source) at org.hornetq.ra.inflow.HornetQMessageHandler.onMessage(HornetQMessageHandler.java:287) [:6.1.0.Final]
at org.hornetq.core.client.impl.ClientConsumerImpl.callOnMessage(ClientConsumerImpl.java:866) [:6.1.0.Final]
at org.hornetq.core.client.impl.ClientConsumerImpl.access$100(ClientConsumerImpl.java:44) [:6.1.0.Final]
at org.hornetq.core.client.impl.ClientConsumerImpl$Runner.run(ClientConsumerImpl.java:983) [:6.1.0.Final]
at org.hornetq.utils.OrderedExecutorFactory$OrderedExecutor$1.run(OrderedExecutorFactory.java:100) [:6.1.0.Final]
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [:1.6.0_30]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [:1.6.0_30]
at java.lang.Thread.run(Thread.java:662) [:1.6.0_30]
11:39:41,457 WARN [HornetQMessageHandler] Unable to call after delivery: javax.resource.ResourceException: javax.transaction.HeuristicMixedException
at org.jboss.ejb.plugins.inflow.MessageEndpointInterceptor.after(MessageEndpointInterceptor.java:217) [:6.1.0.Final]
at org.jboss.ejb.plugins.inflow.MessageEndpointInterceptor.invoke(MessageEndpointInterceptor.java:124) [:6.1.0.Final]
at org.jboss.proxy.ClientMethodInterceptor.invoke(ClientMethodInterceptor.java:74) [:6.1.0.Final]
at org.jboss.proxy.ClientContainer.invoke(ClientContainer.java:101) [:6.1.0.Final]
at $Proxy493.afterDelivery(Unknown Source) at org.hornetq.ra.inflow.HornetQMessageHandler.onMessage(HornetQMessageHandler.java:287) [:6.1.0.Final]
at org.hornetq.core.client.impl.ClientConsumerImpl.callOnMessage(ClientConsumerImpl.java:866) [:6.1.0.Final]
at org.hornetq.core.client.impl.ClientConsumerImpl.access$100(ClientConsumerImpl.java:44) [:6.1.0.Final]
at org.hornetq.core.client.impl.ClientConsumerImpl$Runner.run(ClientConsumerImpl.java:983) [:6.1.0.Final]
at org.hornetq.utils.OrderedExecutorFactory$OrderedExecutor$1.run(OrderedExecutorFactory.java:100) [:6.1.0.Final]
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [:1.6.0_30]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [:1.6.0_30]
at java.lang.Thread.run(Thread.java:662) [:1.6.0_30]
Caused by: javax.transaction.HeuristicMixedException
at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.commitAndDisassociate(TransactionImple.java:1166) [:6.1.0.Final]
at com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction.commit(BaseTransaction.java:119) [:6.1.0.Final]
at com.arjuna.ats.jbossatx.BaseTransactionManagerDelegate.commit(BaseTransactionManagerDelegate.java:75) [:6.1.0.Final]
at org.jboss.ejb.plugins.inflow.MessageEndpointInterceptor.endTransaction(MessageEndpointInterceptor.java:434) [:6.1.0.Final]
at org.jboss.ejb.plugins.inflow.MessageEndpointInterceptor.finish(MessageEndpointInterceptor.java:294) [:6.1.0.Final]
at org.jboss.ejb.plugins.inflow.MessageEndpointInterceptor.after(MessageEndpointInterceptor.java:213) [:6.1.0.Final]
... 12 more