如何向Atomikos TransactionStateHandler添加同步



如何在atomicos中向TransactionStateHandler添加同步?默认情况下,它只包含得到空beforeCompletion方法的JdbcRequeueSynchronization

private Throwable notifyBeforeCompletion() {
Throwable cause = null;
Synchronization sync = localPopSynchronization();
while ( sync != null ) {
try {
sync.beforeCompletion ();
} catch ( RuntimeException error ) {
// see case 24246: rollback only
setRollbackOnly();
// see case 115604
// transport the first exception here as return value
if (cause == null) {
cause = error;
} else {
// log the others which may still happen as error - cf. case 115604
LOGGER.logError("Unexpected error in beforeCompletion: ", error);
}               
}
sync = localPopSynchronization();
}
return cause;
}

您可以通过事务对象(在JTA API中(:

UserTransactionManager utm = new UserTransactionManager();
utm.begin(); //optional, skip if you already have a transaction
Transaction tx = utm.getTransaction();
tx.registerSynchronization(...);
...
//commit / rollback per your requirements

希望能帮助

盖伊

最新更新