dain 2005/03/01 18:34:29
Modified: modules/core/src/java/org/openejb/mdb EndpointHandler.java
MDBContainer.java MDBContext.java
MDBInstanceContext.java
MDBInstanceContextFactory.java
MDBInstanceInterceptor.java
Log:
Changed to use new TransactionManagerContext methods managing bean
transactions
Fixed improper handling of bean transactions in StatefulInstanceInterceptor
Removed excessive handling of bean transactions in the SFSB and SLSB vops
Revision Changes Path
1.6 +7 -14
openejb/modules/core/src/java/org/openejb/mdb/EndpointHandler.java
Index: EndpointHandler.java
===================================================================
RCS file:
/home/projects/openejb/scm/openejb/modules/core/src/java/org/openejb/mdb/EndpointHandler.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- EndpointHandler.java 25 Feb 2005 23:06:11 -0000 1.5
+++ EndpointHandler.java 1 Mar 2005 23:34:18 -0000 1.6
@@ -49,21 +49,17 @@
import java.lang.reflect.Method;
import java.util.Map;
-
import javax.ejb.EJBException;
import javax.resource.ResourceException;
import javax.transaction.xa.XAResource;
-import javax.transaction.Transaction;
import net.sf.cglib.proxy.MethodInterceptor;
import net.sf.cglib.proxy.MethodProxy;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.geronimo.core.service.InvocationResult;
-import org.apache.geronimo.transaction.context.InheritableTransactionContext;
import org.apache.geronimo.transaction.context.TransactionContext;
import org.apache.geronimo.transaction.context.TransactionContextManager;
-import org.apache.geronimo.transaction.context.ContainerTransactionContext;
import org.apache.geronimo.transaction.manager.NamedXAResource;
import org.openejb.EJBInterfaceType;
import org.openejb.EJBInvocation;
@@ -174,7 +170,7 @@
EJBInvocation invocation = new
EJBInvocationImpl(EJBInterfaceType.LOCAL, null, methodIndex, args);
// set the transaction context
- TransactionContext transactionContext =
TransactionContext.getContext();
+ TransactionContext transactionContext =
transactionContextManager.getContext();
if (transactionContext == null) {
throw new IllegalStateException("Transaction context has not
been set");
}
@@ -287,7 +283,7 @@
}
// restore the adapter transaction is possible
- TransactionContext.setContext(adapterTransaction);
+ transactionContextManager.setContext(adapterTransaction);
}
adapterClassLoader = null;
beanTransaction = null;
@@ -309,7 +305,7 @@
boolean transactionRequired =
container.isDeliveryTransacted(methodIndex);
// if the adapter gave us a transaction and we are required,
just move on
- if (transactionRequired && adapterTransaction instanceof
InheritableTransactionContext) {
+ if (transactionRequired && adapterTransaction != null &&
adapterTransaction.isInheritable()) {
return;
}
@@ -323,7 +319,7 @@
// start a new container transaction
beanTransaction =
transactionContextManager.newContainerTransactionContext();
if (xaResource != null) {
- ((ContainerTransactionContext)
beanTransaction).getTransaction().enlistResource(xaResource);
+ beanTransaction.enlistResource(xaResource);
}
} else {
// enter an unspecified transaction context
@@ -360,11 +356,8 @@
try {
//TODO is this delist necessary???????
//check we are really in a transaction.
- if (xaResource != null && beanTransaction instanceof
ContainerTransactionContext) {
- Transaction transaction =
((ContainerTransactionContext) beanTransaction).getTransaction();
- if (transaction != null) {
- transaction.delistResource(xaResource,
XAResource.TMSUSPEND);
- }
+ if (xaResource != null &&
beanTransaction.isInheritable() && beanTransaction.isActive()) {
+ beanTransaction.delistResource(xaResource,
XAResource.TMSUSPEND);
}
} catch (Throwable t) {
beanTransaction.setRollbackOnly();
1.25 +2 -2
openejb/modules/core/src/java/org/openejb/mdb/MDBContainer.java
Index: MDBContainer.java
===================================================================
RCS file:
/home/projects/openejb/scm/openejb/modules/core/src/java/org/openejb/mdb/MDBContainer.java,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -r1.24 -r1.25
--- MDBContainer.java 14 Feb 2005 18:32:30 -0000 1.24
+++ MDBContainer.java 1 Mar 2005 23:34:18 -0000 1.25
@@ -75,8 +75,8 @@
import org.apache.geronimo.timer.PersistenceException;
import org.apache.geronimo.timer.ThreadPooledTimer;
import org.apache.geronimo.transaction.TrackedConnectionAssociator;
-import org.apache.geronimo.transaction.UserTransactionImpl;
import org.apache.geronimo.transaction.context.TransactionContextManager;
+import org.apache.geronimo.transaction.context.UserTransactionImpl;
import org.apache.geronimo.transaction.manager.NamedXAResource;
import org.apache.geronimo.transaction.manager.WrapperNamedXAResource;
import org.openejb.TwoChains;
1.8 +2 -2
openejb/modules/core/src/java/org/openejb/mdb/MDBContext.java
Index: MDBContext.java
===================================================================
RCS file:
/home/projects/openejb/scm/openejb/modules/core/src/java/org/openejb/mdb/MDBContext.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- MDBContext.java 14 Feb 2005 18:32:30 -0000 1.7
+++ MDBContext.java 1 Mar 2005 23:34:20 -0000 1.8
@@ -57,7 +57,7 @@
import javax.transaction.UserTransaction;
import javax.xml.rpc.handler.MessageContext;
-import org.apache.geronimo.transaction.UserTransactionImpl;
+import org.apache.geronimo.transaction.context.UserTransactionImpl;
import org.apache.geronimo.transaction.context.TransactionContextManager;
import org.openejb.EJBContextImpl;
import org.openejb.EJBInstanceContext;
1.13 +2 -2
openejb/modules/core/src/java/org/openejb/mdb/MDBInstanceContext.java
Index: MDBInstanceContext.java
===================================================================
RCS file:
/home/projects/openejb/scm/openejb/modules/core/src/java/org/openejb/mdb/MDBInstanceContext.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- MDBInstanceContext.java 25 Feb 2005 23:06:11 -0000 1.12
+++ MDBInstanceContext.java 1 Mar 2005 23:34:20 -0000 1.13
@@ -52,8 +52,8 @@
import javax.ejb.MessageDrivenBean;
import org.apache.geronimo.core.service.Interceptor;
-import org.apache.geronimo.transaction.UserTransactionImpl;
import org.apache.geronimo.transaction.context.TransactionContextManager;
+import org.apache.geronimo.transaction.context.UserTransactionImpl;
import org.openejb.AbstractInstanceContext;
import org.openejb.EJBOperation;
import org.openejb.EJBInvocation;
1.6 +2 -2
openejb/modules/core/src/java/org/openejb/mdb/MDBInstanceContextFactory.java
Index: MDBInstanceContextFactory.java
===================================================================
RCS file:
/home/projects/openejb/scm/openejb/modules/core/src/java/org/openejb/mdb/MDBInstanceContextFactory.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- MDBInstanceContextFactory.java 5 Oct 2004 07:04:01 -0000 1.5
+++ MDBInstanceContextFactory.java 1 Mar 2005 23:34:21 -0000 1.6
@@ -53,7 +53,7 @@
import javax.ejb.MessageDrivenContext;
import org.apache.geronimo.transaction.InstanceContext;
-import org.apache.geronimo.transaction.UserTransactionImpl;
+import org.apache.geronimo.transaction.context.UserTransactionImpl;
import org.apache.geronimo.transaction.context.TransactionContextManager;
import org.apache.geronimo.core.service.Interceptor;
import org.openejb.EJBInstanceFactory;
1.3 +5 -3
openejb/modules/core/src/java/org/openejb/mdb/MDBInstanceInterceptor.java
Index: MDBInstanceInterceptor.java
===================================================================
RCS file:
/home/projects/openejb/scm/openejb/modules/core/src/java/org/openejb/mdb/MDBInstanceInterceptor.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- MDBInstanceInterceptor.java 25 Feb 2005 23:06:11 -0000 1.2
+++ MDBInstanceInterceptor.java 1 Mar 2005 23:34:21 -0000 1.3
@@ -54,6 +54,7 @@
import org.apache.geronimo.core.service.Invocation;
import org.apache.geronimo.core.service.InvocationResult;
import org.apache.geronimo.transaction.InstanceContext;
+import org.apache.geronimo.transaction.context.TransactionContext;
/**
@@ -85,7 +86,8 @@
// initialize the context and set it into the invocation
ejbInvocation.setEJBInstanceContext(ctx);
- InstanceContext oldContext =
ejbInvocation.getTransactionContext().beginInvocation(ctx);
+ TransactionContext transactionContext =
ejbInvocation.getTransactionContext();
+ InstanceContext oldContext = transactionContext.beginInvocation(ctx);
try {
InvocationResult result = next.invoke(invocation);
return result;
@@ -94,7 +96,7 @@
ctx.die();
throw t;
} finally {
- ejbInvocation.getTransactionContext().endInvocation(oldContext);
+ transactionContext.endInvocation(oldContext);
// remove the reference to the context from the invocation
ejbInvocation.setEJBInstanceContext(null);