You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by db...@apache.org on 2008/04/01 22:00:32 UTC
svn commit: r643545 - in /openejb/branches/openejb-3.0:
container/openejb-core/src/main/java/org/apache/openejb/core/transaction/TransactionPolicy.java
server/openejb-client/src/main/java/org/apache/openejb/client/EJBInvocationHandler.java
Author: dblevins
Date: Tue Apr 1 13:00:29 2008
New Revision: 643545
URL: http://svn.apache.org/viewvc?rev=643545&view=rev
Log:
Merging r643179 - http://svn.apache.org/viewvc?rev=643179&view=rev
svn merge -r 643178:643179 https://svn.apache.org/repos/asf/openejb/trunk/openejb3 .
------------------------------------------------------------------------
r643179 | djencks | 2008-03-31 15:12:57 -0700 (Mon, 31 Mar 2008) | 1 line
OPENEJB-782 Further refinements on delivering the apropriate exception to the client on unexpected rollback
------------------------------------------------------------------------
Modified:
openejb/branches/openejb-3.0/container/openejb-core/src/main/java/org/apache/openejb/core/transaction/TransactionPolicy.java
openejb/branches/openejb-3.0/server/openejb-client/src/main/java/org/apache/openejb/client/EJBInvocationHandler.java
Modified: openejb/branches/openejb-3.0/container/openejb-core/src/main/java/org/apache/openejb/core/transaction/TransactionPolicy.java
URL: http://svn.apache.org/viewvc/openejb/branches/openejb-3.0/container/openejb-core/src/main/java/org/apache/openejb/core/transaction/TransactionPolicy.java?rev=643545&r1=643544&r2=643545&view=diff
==============================================================================
--- openejb/branches/openejb-3.0/container/openejb-core/src/main/java/org/apache/openejb/core/transaction/TransactionPolicy.java (original)
+++ openejb/branches/openejb-3.0/container/openejb-core/src/main/java/org/apache/openejb/core/transaction/TransactionPolicy.java Tue Apr 1 13:00:29 2008
@@ -32,6 +32,7 @@
import javax.transaction.RollbackException;
import javax.transaction.NotSupportedException;
import javax.ejb.EJBException;
+import javax.ejb.EJBTransactionRolledbackException;
import java.rmi.RemoteException;
@@ -133,7 +134,7 @@
}
}
- protected void commitTransaction(TransactionContext context, Transaction tx) throws SystemException {
+ protected void commitTransaction(TransactionContext context, Transaction tx) throws SystemException, ApplicationException {
try {
if (txLogger.isInfoEnabled()) {
txLogger.info("TX " + policyToString() + ": Committing transaction " + tx);
@@ -147,7 +148,8 @@
} catch (RollbackException e) {
txLogger.info("The transaction has been rolled back rather than commited: " + e.getMessage());
- throw new EJBException(e);
+ Exception txe = new EJBTransactionRolledbackException("Transaction was rolled back, presumably because setRollbackOnly was called during a synchronization", e);
+ throw new ApplicationException(txe);
} catch (HeuristicMixedException e) {
Modified: openejb/branches/openejb-3.0/server/openejb-client/src/main/java/org/apache/openejb/client/EJBInvocationHandler.java
URL: http://svn.apache.org/viewvc/openejb/branches/openejb-3.0/server/openejb-client/src/main/java/org/apache/openejb/client/EJBInvocationHandler.java?rev=643545&r1=643544&r2=643545&view=diff
==============================================================================
--- openejb/branches/openejb-3.0/server/openejb-client/src/main/java/org/apache/openejb/client/EJBInvocationHandler.java (original)
+++ openejb/branches/openejb-3.0/server/openejb-client/src/main/java/org/apache/openejb/client/EJBInvocationHandler.java Tue Apr 1 13:00:29 2008
@@ -39,6 +39,7 @@
import javax.ejb.EJBObject;
import javax.ejb.EJBHome;
import javax.ejb.NoSuchEJBException;
+import javax.ejb.EJBTransactionRolledbackException;
public abstract class EJBInvocationHandler implements InvocationHandler, Serializable {
@@ -224,6 +225,9 @@
} else {
return new AccessException(e.getMessage());
}
+ }
+ if (!remote && e instanceof EJBTransactionRolledbackException) {
+ return new TransactionRolledbackLocalException(e.getMessage()).initCause(getCause(e));
}
return e;
}