Win a copy of Kotlin in Action this week in the Kotlin forum!
  • Post Reply Bookmark Topic Watch Topic
  • New Topic

MdB timeout / transaction / redelivery issue  RSS feed

sebastien chausson
Posts: 1
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I'm new with Mdb, and I cannot figure out how to setup the transaction/timeout properly :
I defined a MdB that have a long (up to dozens of minutes) processing to execute when it receives a message :
This processing performs many read/write operations in DB (using an injected entityManager in my MdB), and basically, it stops after about 5-6 minutes (I use JBoss 4.2.0 GA), without any particular exception/log in the jboss console. The message is delivered again (because I added a trace in the onMessage() method and I see it again...) and the process start again from the beginning.

I suspected a transaction timeout issue, and gave a try to the jboss specific annotation on the onMessage() method :
but it did'nt change anything on the behavior of my application : here is the the jboss console error :

16:41:40,062 WARN [arjLoggerI18N] [com.arjuna.ats.arjuna.coordinator.BasicAction_58] - Abort of action id -53e0fc88:64e:49904cca:54 invoked while multiple threads active within it.
16:41:40,062 WARN [arjLoggerI18N] [com.arjuna.ats.arjuna.coordinator.CheckedAction_2] - CheckedAction::check - atomic action -53e0fc88:64e:49904cca:54 aborting with 1 threads active!
16:41:40,062 WARN [JDBCExceptionReporter] SQL Error: 0, SQLState: null
16:41:40,062 ERROR [JDBCExceptionReporter] The result set is closed.
16:41:40,078 ERROR [AbstractEntityManagerImpl] Unable to mark for rollback on PersistenceException:
java.lang.IllegalStateException: [com.arjuna.ats.internal.jta.transaction.arjunacore.inactive] [com.arjuna.ats.internal.jta.transaction.arjunacore.inactive] The transaction is not active!
at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.setRollbackOnly(

I tried out to set @TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED) at the MdB level :
Everything works fine if I don't perform the read/write operations on the DB...
If I try to call my Entity manager operations, It fails with following trace :
18:08:47,281 ERROR [JmsServerSession] Unexpected error delivering message {
Header {
jmsDestination : QUEUE.PreLoadingQueue
jmsDeliveryMode : 2
jmsExpiration : 0
jmsPriority : 4
jmsMessageID : ID:3-12341991371091
jmsTimeStamp : 1234199137109
jmsCorrelationID: null
jmsReplyTo : null
jmsType : null
jmsRedelivered : false
jmsProperties : {}
jmsPropReadWrite: false
msgReadOnly : true
producerClientId: ID:3
javax.persistence.TransactionRequiredException: EntityManager must be access within a transaction
at org.jboss.ejb3.entity.ManagedEntityManagerFactory.verifyInTx(
at org.jboss.ejb3.entity.TransactionScopedEntityManager.persist(

What should I do to make it work ? Using a Bean Managed Transaction ?

Many thanks
RaviNada Kiran
Ranch Hand
Posts: 528
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Why are you performing DB operations from your MDB??
  • Post Reply Bookmark Topic Watch Topic
  • New Topic
Boost this thread!