dain 2004/04/14 01:57:27
Modified: modules/core/src/java/org/openejb/transaction
ContainerPolicy.java
Log:
The transactionContext must always be set into the ejbInvocation
Revision Changes Path
1.3 +31 -6
openejb/modules/core/src/java/org/openejb/transaction/ContainerPolicy.java
Index: ContainerPolicy.java
===================================================================
RCS file:
/home/projects/openejb/scm/openejb/modules/core/src/java/org/openejb/transaction/ContainerPolicy.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- ContainerPolicy.java 3 Apr 2004 22:20:11 -0000 1.2
+++ ContainerPolicy.java 14 Apr 2004 05:57:27 -0000 1.3
@@ -123,7 +123,12 @@
public InvocationResult invoke(Interceptor interceptor, EJBInvocation
ejbInvocation, TransactionManager txnManager) throws Throwable {
TransactionContext clientContext = TransactionContext.getContext();
if (clientContext instanceof InheritableTransactionContext) {
- return interceptor.invoke(ejbInvocation);
+ try {
+ ejbInvocation.setTransactionContext(clientContext);
+ return interceptor.invoke(ejbInvocation);
+ } finally {
+ ejbInvocation.setTransactionContext(null);
+ }
}
if (clientContext != null) {
@@ -166,7 +171,12 @@
public InvocationResult invoke(Interceptor interceptor, EJBInvocation
ejbInvocation, TransactionManager txnManager) throws Throwable {
TransactionContext clientContext = TransactionContext.getContext();
if (clientContext != null) {
- return interceptor.invoke(ejbInvocation);
+ try {
+ ejbInvocation.setTransactionContext(clientContext);
+ return interceptor.invoke(ejbInvocation);
+ } finally {
+ ejbInvocation.setTransactionContext(null);
+ }
}
try {
@@ -243,7 +253,12 @@
public InvocationResult invoke(Interceptor interceptor, EJBInvocation
ejbInvocation, TransactionManager txnManager) throws Throwable {
TransactionContext clientContext = TransactionContext.getContext();
if (clientContext instanceof InheritableTransactionContext) {
- return interceptor.invoke(ejbInvocation);
+ try {
+ ejbInvocation.setTransactionContext(clientContext);
+ return interceptor.invoke(ejbInvocation);
+ } finally {
+ ejbInvocation.setTransactionContext(null);
+ }
}
if (ejbInvocation.getType().isLocal()) {
@@ -269,7 +284,12 @@
}
if (clientContext != null) {
- return interceptor.invoke(ejbInvocation);
+ try {
+ ejbInvocation.setTransactionContext(clientContext);
+ return interceptor.invoke(ejbInvocation);
+ } finally {
+ ejbInvocation.setTransactionContext(null);
+ }
}
try {
@@ -307,7 +327,12 @@
public InvocationResult invoke(Interceptor interceptor, EJBInvocation
ejbInvocation, TransactionManager txnManager) throws Throwable {
TransactionContext clientContext = TransactionContext.getContext();
if (clientContext instanceof InheritableTransactionContext) {
- return interceptor.invoke(ejbInvocation);
+ try {
+ ejbInvocation.setTransactionContext(clientContext);
+ return interceptor.invoke(ejbInvocation);
+ } finally {
+ ejbInvocation.setTransactionContext(null);
+ }
}
if (clientContext != null) {