2009-01-14 123 views
0

我有一个包含4个MDB的应用程序,每个MDB都通过MQ从JMS接收SOAP消息。一旦收到消息,我们将XML处理成对象模型并进行相应的处理,这通常涉及通过Hibernate加载或保存消息到Oracle数据库。com.ibm.websphere.jtaextensions.NotSupportedException在加载时抛出

此外,我们有一个每分钟都会触发的石英进程,可能会或可能不会触发可能使用Hibernate读取或写入数据库的操作。当系统处于高负载状态,即处理大量1k +并且可能执行一些由我们的石英处理触发的数据库读/写时,我们会看到在我们的日志中抛出以下异常。

============================================== ================================= at com.integrasp.iatrade.logic.MessageContextRouting.lookup(MessageContextRouting。java :150) 在com.integrasp.iatrade.logic.RequestResponseManager.findRequestDestination(Reque stResponseManager.java:153)在com.integrasp.iatrade.logic.RequestResponseManager.findRequestDestination(Reque stResponseManager.java:174) 在com.integrasp。 iatrade.logic.IOLogic.processResponse(IOLogic.java:411)< at com.integrasp.iatrade.logic.FxOrderQuoteManager.requestQuote(FxOrderQuoteManage r.java:119) at com.integrasp.iatrade.logic.FxOrderQuoteManager。 processRequest(FxOrderQuoteMana ger.java:682) at com.integrasp.iatrade.l ogic.FxOrderSubmissionManager.processRequest(FxOrderSubm issionManager.java:408) at com.integrasp.iatrade.eo.SubmitOrderRequest.process(SubmitOrderRequest.java:60) at com.integrasp.iatrade.ejb.BusinessLogicRegister.perform(BusinessLogicRegister.j ava:85) at com.integrasp.iatrade.ejb.mdb.OrderSubmissionBean.onMessage(OrderSubmissionBean .java:147) at com.ibm.ejs.jms.listener.MDBWrapper $ PriviledgedOnMessage.run(MDBWrapper.java:30 2 ) at com.ibm.ws.security.util.AccessController.doPrivileged(AccessController.java:63) at com.ibm.ejs.jms.listener.MDBWrapper.callOnMessage(MDBWrapper.java:271) at com.ibm .ejs.jms.listener.MDBWrapper.onMessage(MDBWrapper.java:240) at com.ibm.mq.jms.MQSession.run(MQSession.java:1593) at 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) at com.ibm.ejs.jms.listener.ServerSession.dispatch(ServerSession.java:623) at sun.reflect.GeneratedMethodAccessor79.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.ja va:43) at java.lang.reflect.Method.invoke(Method.java:615) at com.ibm.ejs.jms.listener.ServerSessionDispatcher.dispatch (ServerSessionDispatch er.java:37) at com.ibm.ejs.container.MDBWrapper.onMessage(MDBWrapper.java:96) at com.ibm.ejs.container.MD BWrapper.onMessage(MDBWrapper.java:132) at com.ibm.ejs.jms.listener.ServerSession.run(ServerSession.java:481) at com.ibm.ws.util.ThreadPool $ Worker.run(ThreadPool。的java:1473) 所致:java.lang.reflect.InvocationTargetException 在sun.reflect.GeneratedMethodAccessor42.invoke(未知来源) 在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(WebSphereExtendedJTATransationLookup.java:225) ...30更 产生的原因:在com.ibm.ws.jtaextensions.ExtendedJTATransactionImpl.registerSynchronizationCall backForCurrentTran com.ibm.websphere.jtaextensions.NotSupportedException (ExtendedJTATransactionImpl.java:247)

... 34更

莫非任何身体帮助摆脱com.ibm.websphere.jtaextensions.NotSupportedException意味着什么。 IBM的文档说

“唯一的例外是由事务管理器抛出,如果试图在环境或在同一时间以注册SynchronizationCallback时,此功能不可用。”

我的声音,类似的该容器拒绝休眠呼叫开始交易。如果有人有任何想法,为什么容器可以扔信息,请让我知道。

在此先感谢

卡尔

回答

0

如果有人有兴趣,它是一个线程,试图在事务超时时同步事务。

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

karl

0

如果你真的需要高负载我会删除你的应用程序和数据库之间的休眠层。没有休眠你有更少的移动部分和更多的控制。

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

相关问题