I am currently running JBoss 2.4.4 / Tomcat 4.0.1. I will be migrating to JBoss 3.01 when it is released.
I have a bean which receives a request, gets an XA JMS connection, creates a message, and puts the message into a queue (thereby enlisting the queue in the bean's transaction).
If I make the bean a Session Bean, with Bean-Managed transactions, then everything goes swell.
If I make the bean a Session Bean, with Container-Managed transactions, then everything goes swell.
If I make the bean a Message-Driven Bean, with Bean-Managed transactions, then everything goes swell.
If I make the bean a Message-Driven Bean, with Container-Managed transactions, then we have a problem. JBoss complains about an invalid transaction id when I try to enlist the queue, which is the same message it would give me if I tried to create a transaction outside the scope of an EJB container.
According to standardjboss.xml, message-driven beans are using the exact same transaction interceptor as session beans. However, they use their own special interceptor for bean-managed transactions. Perhaps this interceptor contains special logic that should also be applied for container-managed transactions?
I can create an .ear which illustrates the problem if someone is seriously interested in investigating, but my questions are:
1) Is this a known problem?
2) Is is still a problem in JBoss 3.x?
If anybody cares, I have verified that is problem has been resolved in JBoss 3.0.1.