|
Well the only difference here is that Arjuna deals with the original exception that Hibernate threw; WebLogic does not. This is the code in question (5.0):
@Override
public void beforeCompletion() {
try {
transactionCoordinatorOwner.beforeTransactionCompletion();
}
catch (HibernateException e) {
physicalTransactionDelegate.markRollbackOnly();
throw e;
}
catch (RuntimeException re) {
physicalTransactionDelegate.markRollbackOnly();
throw re;
}
finally {
synchronizationRegistry.notifySynchronizationsBeforeTransactionCompletion();
for ( TransactionObserver observer : observers ) {
observer.beforeCompletion();
}
}
}
Notice specifically that Hibernate throws the original exception. This gets thrown all the way back to your JTA system. The only difference here is, that... your JTA system. WebLogic just "eats" the exception.
|