com.ibm.websphere.jtaextensions.NotSupportedException выбрасывается под нагрузкой - PullRequest
0 голосов
/ 14 января 2009

У меня есть приложение, содержащее 4 MDB, каждое из которых получает сообщения SOAP через JMS от MQ. Как только сообщения получены, мы обрабатываем XML в объектную модель и обрабатываем соответствующим образом, что всегда включает либо загрузку, либо сохранение сообщений в базе данных Oracle через Hibernate.

Кроме того, у нас есть кварцевый процесс с пожарами каждую минуту, который может или не может запускать действия, которые также могут считывать или записывать в базу данных, используя Hibernate.

Когда система находится под высокой нагрузкой, то есть обрабатывает большие числа 1k + и потенциально выполняет некоторые операции чтения / записи в базу данных, инициированные нашим кварцевым процессом, мы продолжаем видеть следующее исключение в наших журналах.

=============================================== ================================ в 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 ): в com.integrasp.iatrade.logic.IOLogic.processResponse (IOLogic.java:411)
в 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) в 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) на com.ibm.ejs.jms.listener.ServerSession.connectionConsumerOnMessage (ServerSessio n.java:891) на 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 (неизвестный источник) at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.ja va: 43) в java.lang.reflect.Method.invoke (Method.java:615) в 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 для начала транзакции. Если кто-нибудь знает, почему контейнер может выдавать сообщение, пожалуйста, дайте мне знать.

Заранее спасибо

Karl

Ответы [ 2 ]

0 голосов
/ 23 февраля 2009

Если кому-то было интересно, это был поток, который пытался синхронизировать транзакцию по истечении времени ожидания транзакции.

Я предполагал, что если бы тайм-аут транзакции, то поток был бы уничтожен, однако это не имело место.

Карлу

0 голосов
/ 14 января 2009

Если вам действительно нужна высокая нагрузка, я бы удалил слой Hibernate между вашим приложением и базой данных. Без Hibernate у вас будет меньше движущихся частей и больше контроля.

Это единственный совет, который я могу вам дать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...