我们有一个流程,在单个容器托管的事务中,weblogic 10.3.5上的mdb侦听远程jms队列(tibco),进行一些处理,然后在本地weblogic jms队列上丢弃另一条消息。
最近,我们确实从weblogic 10.3.2升级到了10.3.5,并在尝试将消息发送到本地队列时(通过spring jmstemplate)开始看到一个新问题。 我们得到 XAER_PROTO:例程在不适当的上下文中被调用
令人惊讶的是,引发此异常的XAResource是tibco资源。
javax.transaction.xa.XAException 在com.tibco.tibjms.TibjmsXAResource.start(TibjmsXAResource.java:199) 位于weblogic.deployment.jms.WrappedXAResource_com_tibco_tibjms_TibjmsXAResource.start(未知源) 在weblogic.transaction.internal.XAServerResourceInfo.start(XAServerResourceInfo.java:1231) 在weblogic.transaction.internal.XAServerResourceInfo.xaStart(XAServerResourceInfo.java:1164) 在weblogic.transaction.internal.XAServerResourceInfo.enlist(XAServerResourceInfo.java:285) 在weblogic.transaction.internal.XAServerResourceInfo.enlistIfStatic(XAServerResourceInfo.java:184) 在weblogic.transaction.internal.ServerTransactionImpl.enlistStaticallyEnlistedResources(ServerTransactionImpl.java:1580) 在weblogic.transaction.internal.ServerTransactionManagerImpl.dispatchRequest(ServerTransactionManagerImpl.java:565) 在weblogic.messaging.dispatcher.DispatcherServerRef.handleRequest(DispatcherServerRef.java:132) 在weblogic.messaging.dispatcher.DispatcherServerRef.access $ 000(DispatcherServerRef.java:34) 在weblogic.messaging.dispatcher.DispatcherServerRef $ 2.run(DispatcherServerRef.java:111) 在weblogic.work.ExecuteThread.execute(ExecuteThread.java:209) 在weblogic.work.ExecuteThread.run(ExecuteThread.java:178)
在进一步调查(反编译tibco代码)时,tibco XA资源会在认为已经存在事务的情况下抛出此错误。
为什么weblogic在尝试向本地jms队列发送消息时会征募此XA资源并调用start()?
仅在10.3.5中才发生此问题。
任何帮助将不胜感激。