[jboss-cvs] JBossAS SVN: r107271 - trunk/connector/src/main/java/org/jboss/resource/connectionmanager.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Mon Aug 2 12:28:55 EDT 2010


Author: jesper.pedersen
Date: 2010-08-02 12:28:54 -0400 (Mon, 02 Aug 2010)
New Revision: 107271

Modified:
   trunk/connector/src/main/java/org/jboss/resource/connectionmanager/InternalManagedConnectionPool.java
   trunk/connector/src/main/java/org/jboss/resource/connectionmanager/JBossManagedConnectionPool.java
   trunk/connector/src/main/java/org/jboss/resource/connectionmanager/TxConnectionManager.java
Log:
[JBAS-7285] Lazy initialization

Modified: trunk/connector/src/main/java/org/jboss/resource/connectionmanager/InternalManagedConnectionPool.java
===================================================================
--- trunk/connector/src/main/java/org/jboss/resource/connectionmanager/InternalManagedConnectionPool.java	2010-08-02 16:07:00 UTC (rev 107270)
+++ trunk/connector/src/main/java/org/jboss/resource/connectionmanager/InternalManagedConnectionPool.java	2010-08-02 16:28:54 UTC (rev 107271)
@@ -87,6 +87,9 @@
 
    /** Whether trace is enabled */
    private final boolean trace;
+   
+   /** The subpool */
+   private JBossManagedConnectionPool.SubPoolContext subPoolContext;
 
    /** Stats */
    private final Counter connectionCounter = new Counter();
@@ -114,6 +117,7 @@
     */
    protected InternalManagedConnectionPool(ManagedConnectionFactory mcf, ConnectionListenerFactory clf, Subject subject,
                                            ConnectionRequestInfo cri, PoolParams poolParams, JBossManagedConnectionPool jmcp,
+                                           JBossManagedConnectionPool.SubPoolContext subPoolContext,
                                            Logger log)
    {
       this.mcf = mcf;
@@ -124,6 +128,7 @@
       this.maxSize = poolParams.maxSize;
       this.jmcp = jmcp;
       this.log = log;
+      this.subPoolContext = subPoolContext;
       this.trace = log.isTraceEnabled();
       this.cls = new ArrayList(this.maxSize);
       this.permits = new Semaphore(this.maxSize, true);
@@ -844,6 +849,11 @@
       return poolParams.minSize;
    }
 
+   public JBossManagedConnectionPool.SubPoolContext getSubPoolContext()
+   {
+      return subPoolContext;
+   }
+
    public static class PoolParams
    {
 	   public int minSize = 0;

Modified: trunk/connector/src/main/java/org/jboss/resource/connectionmanager/JBossManagedConnectionPool.java
===================================================================
--- trunk/connector/src/main/java/org/jboss/resource/connectionmanager/JBossManagedConnectionPool.java	2010-08-02 16:07:00 UTC (rev 107270)
+++ trunk/connector/src/main/java/org/jboss/resource/connectionmanager/JBossManagedConnectionPool.java	2010-08-02 16:28:54 UTC (rev 107271)
@@ -562,7 +562,7 @@
       public SubPoolContext(TransactionManager tm, ManagedConnectionFactory mcf, ConnectionListenerFactory clf, Subject subject,
                             ConnectionRequestInfo cri, PoolParams poolParams, JBossManagedConnectionPool jmcp, Logger log)
       {
-         subPool = new InternalManagedConnectionPool(mcf, clf, subject, cri, poolParams, jmcp, log);
+         subPool = new InternalManagedConnectionPool(mcf, clf, subject, cri, poolParams, jmcp, this, log);
          if (tm != null)
             trackByTx = new TransactionLocal(tm);
       }

Modified: trunk/connector/src/main/java/org/jboss/resource/connectionmanager/TxConnectionManager.java
===================================================================
--- trunk/connector/src/main/java/org/jboss/resource/connectionmanager/TxConnectionManager.java	2010-08-02 16:07:00 UTC (rev 107270)
+++ trunk/connector/src/main/java/org/jboss/resource/connectionmanager/TxConnectionManager.java	2010-08-02 16:28:54 UTC (rev 107271)
@@ -50,6 +50,7 @@
 import org.jboss.resource.JBossResourceException;
 import org.jboss.resource.connectionmanager.xa.XAResourceWrapperImpl;
 import org.jboss.tm.LastResource;
+import org.jboss.tm.TransactionLocal;
 import org.jboss.tm.TransactionTimeoutConfiguration;
 import org.jboss.tm.TxUtils;
 import org.jboss.util.NestedRuntimeException;
@@ -424,6 +425,29 @@
          {
             cls.add(cl);
             cl.enlist();
+            if(!isInterleaving())
+            {
+            	cl.setTrackByTx(true);
+            	InternalManagedConnectionPool imcp = (InternalManagedConnectionPool)cl.getContext();
+            	JBossManagedConnectionPool.SubPoolContext subPool = imcp.getSubPoolContext();
+            	TransactionLocal trackByTx = subPool.getTrackByTx();
+            	try
+            	{
+            		trackByTx.lock();
+            	}
+            	catch (Throwable t)
+                {
+            		rethrowAsSystemException("Unable to begin transaction with JCA lazy enlistment scenario", trackByTx.getTransaction(), t);
+                }            	
+            	try
+            	{
+            		trackByTx.set(cl);
+            	}
+            	finally
+            	{
+            		trackByTx.unlock();
+            	}
+            }
          }
       }
    }



More information about the jboss-cvs-commits mailing list