Question

J'ai une application contenant 4 MDB dont chacune reçoit des messages SOAP via JMS de MQ. Une fois les messages reçus, nous traitons le XML dans un modèle objet et traitons en conséquence, ce qui implique toujours de charger ou de sauvegarder des messages dans une base de données Oracle via Hibernate.

De plus, nous avons un processus quartz avec des incendies chaque minute pouvant ou non déclencher des actions pouvant également lire ou écrire dans la base de données à l'aide d'Hibernate.

Lorsque le système est soumis à une charge élevée, c’est-à-dire qu’il traite de grands nombres de 1k + et effectue éventuellement des lectures / écritures de bases de données déclenchées par notre processus quartz, nous continuons de voir l’exception suivante être lancée dans nos journaux.

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

... 34 autres

Tout corps peut-il aider à faire la lumière sur ce que signifie com.ibm.websphere.jtaextensions.NotSupportedException. La documentation IBM indique

" L'exception est levée par le gestionnaire de transactions siune tentative d'enregistrement d'un SynchronizationCallback dans un environnement ou à un moment où cette fonction n'est pas disponible est effectuée. "

Ce qui me semble que le conteneur rejette un appel de veille prolongée pour démarrer une transaction. Si quelqu'un a une idée sur la raison pour laquelle le conteneur pourrait lancer le message, veuillez me le faire savoir.

Merci d'avance

Karl

Était-ce utile?

La solution 2

Si quelqu'un était intéressé, c'était un fil de discussion qui tentait de synchroniser la transaction lorsque son délai de traitement était dépassé.

J'avais supposé que si le délai de transaction était écoulé, le fil de discussion aurait été tué, mais ce n'était pas le cas.

karl

Autres conseils

Si vous avez vraiment besoin d'une charge importante, je supprimerais la couche Hibernate entre votre application et la base de données. Sans Hibernate, vous avez moins de pièces mobiles et plus de contrôle.

C'est le seul conseil que je puisse vous donner.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top