I have an EJB of 5 entity beans and 5 corresponding session beans. The only methods are to
create an instance of an entity (it is a toy test case). All 5 entities must be created
together due to FK constraints (each is created by invoking the 'create' method on
the corresponding session bean). It works fine when invoked in a UserTransaction from a
remtoe Java client program.
I also have an RA and MDB that implement JCA inbound transactions. In response to
requests, the RA creates an XID and creates an execution context in which the MDB is
invoked, which invokes the EJBs methods.
At the end, the RA tries to end (+ prepare + commit) the transaction, but this is failing
because arjuna tries to update one of the created records but cannot find it, despite it
logging earlier that it INSERTed it and that it found it using SELECT (I hand check each
FK constraint in the SB's create method).
AFAIK this means that the end is being executed in the wrong thread/context as otherwise
it should find it (again).
So, my questions are: is there any other reason the update could fail? how might I track
down what's going wrong (I have turned on arjuna's DEBUG but it doesn't give
enough detail for this)?
FWIW, the actual exception is:
| 2009-05-19 09:50:42,557 DEBUG
[org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreEntityCommand.AddressEB] Executing SQL: UPDATE
ADDRESS SET CITY=?, STATE=?, SUBURB_CODE=?, COUNTRY=?, TELEPHONE=?, EMAIL=?, cname=? WHERE
LINE1=?
| 2009-05-19 09:50:42,561 DEBUG [com.arjuna.ats.jta.logging.logger]
BaseTransaction.getStatus
| 2009-05-19 09:50:52,014 DEBUG [com.arjuna.ats.jta.logging.logger]
TransactionImple.setRollbackOnly
| 2009-05-19 09:50:52,014 WARN [com.arjuna.ats.arjuna.logging.arjLoggerI18N]
[com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator_2]
TwoPhaseCoordinator.beforeCompletion - failed for
com.arjuna.ats.internal.jta.resources.arjunacore.SynchronizationImple@1971f66
| javax.ejb.EJBException: Update failed. Expected one affected row: rowsAffected=0,
id=875 Main St
| at
org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreEntityCommand.execute(JDBCStoreEntityCommand.java:169)
| at
org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager.storeEntity(JDBCStoreManager.java:666)
| at
org.jboss.ejb.plugins.CMPPersistenceManager.storeEntity(CMPPersistenceManager.java:428)
| :
| :
| :
|
TIA!
View the original post :
http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4231925#...
Reply to the post :
http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&a...