This week's book giveaway is in the General Computing forum. We're giving away four copies of Arduino in Action and have Martin Evans, Joshua Noble, and Jordan Hochenbaum on-line! See this thread for details.
As part of my application implementation I am doing following
1. MDB gets triggered when system finds message in Q 2. MDB calls Stateless Session Bean 3. Stateless Session Beans performs operations on CMP Entiry Beans as well as BMP entity beans in following sequence UserTransaction tx = getSessionContext().getUserTransaction(); tx.start(); try{ Perform operation with CMP Entity Bean 1 Perform operation with another Stateless Session Bean Perform operation with CMP Entity Bean 2 Perform operation with CMP Entity Bean 3 Perform operation with BMP Entity Bean 4 } finally{ try { if (tx.getStatus() != javax.transaction.Status.STATUS_MARKED_ROLLBACK){ tx.rollback(); } else { tx.commit(); } }
If there a problem in BMP, I want all operations to roll back.
Am I doing anything wrong? Because I am getting problem in my BMP (last step) saying that "illegal attempt to use multiple resources that have only one-phase capability".
You need to check the database driver classes configured for your datasource. They should be XA Drivers. For example, for Oracle database one should use oracle.jdbc.xa.client.OracleXADataSource.