Hi Stephan (chasch d��tsch? ;-) I thought XA is only necessary when you have transaction running on more than one application server? Am I wrong?
Yes, you're wrong. As soon as you have one single transaction distributed over two different data sources, you need XA. How else can the container assure that the Transaction (for datasource DB and for datasource MDB) is committed at the "same" time?
Question: which attributes did you set? The correct settings for your problem are (in my opinion):
- SLSB CMT RequiresNew
- Entity Bean: CMT, Required
- JMS: transaction: true, ack-method 0
See also J2EE Tutorial
Managing Distributed Transactions: When you create a session in an enterprise bean, the container ignores the arguments you specify, because it manages all transactional properties for enterprise beans. It is still a good idea to specify arguments of true and 0 to the createSession method to make this situation clear:
session = connection.createSession(true, 0);
When you use container-managed transactions, you usually specify the Required transaction attribute for your enterprise bean's business methods.