加载时抛出com.ibm.websphere.jtaextensions.NotSupportedException

时间:2009-01-14 11:56:59

标签: oracle hibernate transactions websphere deadlock

我有一个包含4个MDB的应用程序,每个MDB都通过MQ从JMS接收SOAP消息。收到消息后,我们将XML处理为对象模型并相应地处理,这总是涉及通过Hibernate将消息加载或保存到Oracle数据库。

此外,我们每分钟都有一个带有火灾的石英进程可能触发或不触发,因此也可以使用Hibernate读取或写入数据库。

当系统处于高负载状态时,即处理大量1k +并可能执行由我们的石英处理触发的某些数据库读/写时,我们会在日志中看到以下异常。

=============================================== ================================ 在com.integrasp.iatrade.logic.MessageContextRouting.lookup(MessageContextRouting.java:150) at com.integrasp.iatrade.logic.RequestResponseManager.findRequestDestination(Reque stResponseManager.java:153)at com.integrasp.iatrade.logic.RequestResponseManager.findRequestDestination(Reque stResponseManager.java:174) 在com.integrasp.iatrade.logic.IOLogic.processResponse(IOLogic.java:411)< br />在com.integrasp.iatrade.logic.FxOrderQuoteManager.requestQuote(FxOrderQuoteManage r.java:119) 在com.integrasp.iatrade.logic.FxOrderQuoteManager.processRequest(FxOrderQuoteMana ger.java:682) 在com.integrasp.iatrade.logic.FxOrderSubmissionManager.processRequest(FxOrderSubm issionManager.java:408) 在com.integrasp.iatrade.eo.SubmitOrderRequest.process(SubmitOrderRequest.java:60) 在com.integrasp.iatrade.ejb.BusinessLogicRegister.perform(BusinessLogicRegister.j ava:85) at com.integrasp.iatrade.ejb.mdb.OrderSubmissionBean.onMessage(OrderSubmissionBean .java:147) 在com.ibm.ejs.jms.listener.MDBWrapper $ PriviledgedOnMessage.run(MDBWrapper.java:30 2) 在com.ibm.ws.security.util.AccessController.doPrivileged(AccessController.java:63) 在com.ibm.ejs.jms.listener.MDBWrapper.callOnMessage(MDBWrapper.java:271) 在com.ibm.ejs.jms.listener.MDBWrapper.onMessage(MDBWrapper.java:240) 在com.ibm.mq.jms.MQSession.run(MQSession.java:1593) 在com.ibm.ejs.jms.JMSSessionHandle.run(JMSSessionHandle.java:970) at com.ibm.ejs.jms.listener.ServerSession.connectionConsumerOnMessage(ServerSessio n.java:891) at com.ibm.ejs.jms.listener.ServerSession.onMessage(ServerSession.java:656) 在com.ibm.ejs.jms.listener.ServerSession.dispatch(ServerSession.java:623) at sun.reflect.GeneratedMethodAccessor79.invoke(未知来源) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.ja va:43) 在java.lang.reflect.Method.invoke(Method.java:615) 在com.ibm.ejs.jms.listener.ServerSessionDispatcher.dispatch(ServerSessionDispatch er.java:37) 在com.ibm.ejs.container.MDBWrapper.onMessage(MDBWrapper.java:96) 在com.ibm.ejs.container.MDBWrapper.onMessage(MDBWrapper.java:132) 在com.ibm.ejs.jms.listener.ServerSession.run(ServerSession.java:481) 在com.ibm.ws.util.ThreadPool $ Worker.run(ThreadPool.java:1473) 引起:java.lang.reflect.InvocationTargetException at sun.reflect.GeneratedMethodAccessor42.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.ja va:43) 在java.lang.reflect.Method.invoke(Method.java:615) at org.hibernate.transaction.WebSphereExtendedJTATransactionLookup $ TransactionMana gerAdapter $ TransactionAdapter.registerSynchronization(WebSphereExtendedJTATransa ctionLookup.java:225) ......还有30多个 引起:com.ibm.websphere.jtaextensions.NotSupportedException 在com.ibm.ws.jtaextensions.ExtendedJTATransactionImpl.registerSynchronizationCall backForCurrentTran(ExtendedJTATransactionImpl.java:247)

... 34更多

任何人都可以帮助了解com.ibm.websphere.jtaextensions.NotSupportedException的含义。 IBM文档说

“如果尝试在环境中或在此功能不可用时注册SynchronizationCallback,则事务管理器抛出异常。”

对我而言,听起来容器正在拒绝hibernates调用以启动事务。如果有人知道容器为什么会抛出信息,请告诉我。

提前致谢

卡尔

2 个答案:

答案 0 :(得分:0)

如果你真的需要高负载我会删除你的应用程序和数据库之间的Hibernate层。如果没有Hibernate,您可以减少移动部件和控制。

这是我能给你的唯一建议。

答案 1 :(得分:0)

如果有人感兴趣,那么当交易超时时,这是一个试图同步交易的线程。

我曾假设如果事务超时,那么线程就会被杀死,但事实并非如此。

卡尔