You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by ck...@apache.org on 2011/02/24 14:35:38 UTC
svn commit: r1074140 - in
/jackrabbit/trunk/jackrabbit-jca/src/main/java/org/apache/jackrabbit/jca:
JCAManagedConnection.java JCAManagedConnectionFactory.java
TransactionBoundXAResource.java
Author: ckoell
Date: Thu Feb 24 13:35:38 2011
New Revision: 1074140
URL: http://svn.apache.org/viewvc?rev=1074140&view=rev
Log:
JCR-2901 the transaction handling in container managed environment is broken
Modified:
jackrabbit/trunk/jackrabbit-jca/src/main/java/org/apache/jackrabbit/jca/JCAManagedConnection.java
jackrabbit/trunk/jackrabbit-jca/src/main/java/org/apache/jackrabbit/jca/JCAManagedConnectionFactory.java
jackrabbit/trunk/jackrabbit-jca/src/main/java/org/apache/jackrabbit/jca/TransactionBoundXAResource.java
Modified: jackrabbit/trunk/jackrabbit-jca/src/main/java/org/apache/jackrabbit/jca/JCAManagedConnection.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jca/src/main/java/org/apache/jackrabbit/jca/JCAManagedConnection.java?rev=1074140&r1=1074139&r2=1074140&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jca/src/main/java/org/apache/jackrabbit/jca/JCAManagedConnection.java (original)
+++ jackrabbit/trunk/jackrabbit-jca/src/main/java/org/apache/jackrabbit/jca/JCAManagedConnection.java Thu Feb 24 13:35:38 2011
@@ -57,7 +57,7 @@ public final class JCAManagedConnection
/**
* XAResource instance.
*/
- private final XAResource xaResource;
+ private XAResource xaResource;
/**
* Listeners.
@@ -156,8 +156,8 @@ public final class JCAManagedConnection
*/
public void destroy()
throws ResourceException {
- cleanup();
- session.logout();
+ this.session.logout();
+ this.handles.clear();
}
/**
@@ -170,6 +170,11 @@ public final class JCAManagedConnection
this.session.logout();
this.session = openSession();
this.handles.clear();
+ if (this.mcf.getBindSessionToTransaction().booleanValue() && (this.xaResource instanceof TransactionBoundXAResource)) {
+ ((TransactionBoundXAResource) this.xaResource).rebind((XAResource) session);
+ } else {
+ this.xaResource = (XAResource) session;
+ }
}
}
Modified: jackrabbit/trunk/jackrabbit-jca/src/main/java/org/apache/jackrabbit/jca/JCAManagedConnectionFactory.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jca/src/main/java/org/apache/jackrabbit/jca/JCAManagedConnectionFactory.java?rev=1074140&r1=1074139&r2=1074140&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jca/src/main/java/org/apache/jackrabbit/jca/JCAManagedConnectionFactory.java (original)
+++ jackrabbit/trunk/jackrabbit-jca/src/main/java/org/apache/jackrabbit/jca/JCAManagedConnectionFactory.java Thu Feb 24 13:35:38 2011
@@ -45,7 +45,7 @@ public final class JCAManagedConnectionF
/**
* Flag indicating whether the session should be bound to the
- * transaction lyfecyle.
+ * transaction lifecycle.
* In other words, if this flag is true the handle
* will be closed when the transaction ends.
*/
Modified: jackrabbit/trunk/jackrabbit-jca/src/main/java/org/apache/jackrabbit/jca/TransactionBoundXAResource.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jca/src/main/java/org/apache/jackrabbit/jca/TransactionBoundXAResource.java?rev=1074140&r1=1074139&r2=1074140&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jca/src/main/java/org/apache/jackrabbit/jca/TransactionBoundXAResource.java (original)
+++ jackrabbit/trunk/jackrabbit-jca/src/main/java/org/apache/jackrabbit/jca/TransactionBoundXAResource.java Thu Feb 24 13:35:38 2011
@@ -34,6 +34,16 @@ public class TransactionBoundXAResource
this.xaResource = xaResource;
this.connection = connection;
}
+
+ /**
+ * There is a one-to-one Relation between this TransactionBoundXAResource
+ * and the JCAManagedConnection so the used XAResource must be in sync when it is changed in the
+ * JCAManagedConnection.
+ * @param res
+ */
+ protected void rebind(XAResource res) {
+ this.xaResource = res;
+ }
public void commit(Xid arg0, boolean arg1) throws XAException {
xaResource.commit(arg0, arg1);