From commits-return-10897-apmail-jackrabbit-commits-archive=jackrabbit.apache.org@jackrabbit.apache.org Thu Feb 24 13:36:07 2011 Return-Path: Delivered-To: apmail-jackrabbit-commits-archive@www.apache.org Received: (qmail 36540 invoked from network); 24 Feb 2011 13:36:07 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 24 Feb 2011 13:36:07 -0000 Received: (qmail 9244 invoked by uid 500); 24 Feb 2011 13:36:07 -0000 Delivered-To: apmail-jackrabbit-commits-archive@jackrabbit.apache.org Received: (qmail 9138 invoked by uid 500); 24 Feb 2011 13:36:04 -0000 Mailing-List: contact commits-help@jackrabbit.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@jackrabbit.apache.org Delivered-To: mailing list commits@jackrabbit.apache.org Received: (qmail 9130 invoked by uid 99); 24 Feb 2011 13:36:03 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 24 Feb 2011 13:36:03 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 24 Feb 2011 13:36:00 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id A534B23889B2; Thu, 24 Feb 2011 13:35:38 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1074140 - in /jackrabbit/trunk/jackrabbit-jca/src/main/java/org/apache/jackrabbit/jca: JCAManagedConnection.java JCAManagedConnectionFactory.java TransactionBoundXAResource.java Date: Thu, 24 Feb 2011 13:35:38 -0000 To: commits@jackrabbit.apache.org From: ckoell@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20110224133538.A534B23889B2@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org 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);