com.ibm.websphere.jtaextensions.NotSupportedException, возникающий под нагрузкой

StackOverflow https://stackoverflow.com/questions/442697

Вопрос

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

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

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

============================================================================= ============================Java: 150) на com.integrasp.iatrade.logic.requestresponsemanager.findrequestdestination (requepe stresponsemanager.java:153) на com.integrasp.iatrade.logic.requestresponsemanager.findrequestdestination. .logic.iologic.processresponse (iologic.java:411) <br /> at com.integrasp.iatrade.logic.fxordecoatemanager.requestquote (fxorderquotemanage r.java:119) на com.integrasp.iatrade.logic.fxordemanage.processrequest. Fxorderquotemana ger.java:682) в com.integrasp.iatrade.logic.fxordersubmissionmanager.processrequest (fxordersubm issionmanager.java:408) на com.integrasp.iatrade.eo.submitrovequest.process (formitorerrecevest. .iatrade.ejb.businesslogicegirgister.perform (businessLogicGister.j Ava: 85) на com.integrasp.iatrade.ejb.mdb.ordersubmissionbean.onmessage (ordersubmissionbean .java: 147) на com.ibm.ejs.jms.listener.mdbrapper. Privaledgedonmessage.run (mdbwrapper.java:30 2) на com.ibm.ws.security.util.accesscontroller.doprivileged (accesscontroller.java:63) на com.ibm.jms.listener.mdbwrapper.callonmessage (mdbwrapper.jms.listener.mdbwrapper.callonmessage (mdbwrapper. : 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.serversessession.connectionconsumeronmessage (serversessio n.java:891) на com.ibm.ejs.jms.listener.serversession.onmessage (серверы) .java: 656) в com.ibm.ejs.jms.listener.serversessession.dispatch (serversession.java:623) на sun.reflect.generatedmethodaccessor79.invoke (неизвестный источник) на sun.reflect.delegatingmethodaccessor 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.serversessess.run (serversessession.java: 481) на com.ibm.ws.util.threadpool $ caber.run (threadpool.java:1473) вызвано:java.lang.reflect.invocationTargetException на sun.reflect.generatedMethodaccessor42.invoke (неизвестный источник) в Sun.Reflect.DelegatingMethodaccessOrimpl.invoke (DelegatingMethodaccessOrimpl.ja va: 43) на Java.Lang.Lang. 615) в org.hibernate.transaction.websphereexendendjtatransactionlookup $ transactionmana geradapter $ transactionAdapter.registersynchronication (websphereextendendjtatransa ctionlookup.java:225) ...Еще 30 вызвано:com.ibm.websphere.jtaextensions.notsupportedException at com.ibm.ws.jtaextensions.extendendjtatransactionImpl.registersynchronizationCall BackforCurrentTran (ExtendendJtatransActionImpl.Java:247)

...еще 34

Может ли кто-нибудь помочь пролить свет на то, что означает com.ibm.websphere.jtaextensions.NotSupportedException.В документации IBM говорится

«Исключение выдается диспетчером транзакций, если предпринимается попытка зарегистрировать SynchronizationCallback в среде или в то время, когда эта функция недоступна."

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

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

Карл

Это было полезно?

Решение 2

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

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

Карл

Другие советы

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top