[jboss-svn-commits] JBL Code SVN: r32642 - labs/jbosstm/workspace/whitingjr/trunk/performance/src/main/java/org/jboss/jbossts/performance/connectionmanager.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Sun Apr 25 05:46:09 EDT 2010
Author: whitingjr
Date: 2010-04-25 05:46:09 -0400 (Sun, 25 Apr 2010)
New Revision: 32642
Modified:
labs/jbosstm/workspace/whitingjr/trunk/performance/src/main/java/org/jboss/jbossts/performance/connectionmanager/LocalTXCachedDataSource.java
Log:
Completed implementation.
Modified: labs/jbosstm/workspace/whitingjr/trunk/performance/src/main/java/org/jboss/jbossts/performance/connectionmanager/LocalTXCachedDataSource.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/performance/src/main/java/org/jboss/jbossts/performance/connectionmanager/LocalTXCachedDataSource.java 2010-04-24 17:17:01 UTC (rev 32641)
+++ labs/jbosstm/workspace/whitingjr/trunk/performance/src/main/java/org/jboss/jbossts/performance/connectionmanager/LocalTXCachedDataSource.java 2010-04-25 09:46:09 UTC (rev 32642)
@@ -22,10 +22,62 @@
package org.jboss.jbossts.performance.connectionmanager;
+import java.sql.Connection;
+
+import javax.resource.ResourceException;
+import javax.resource.spi.ConnectionRequestInfo;
+import javax.resource.spi.ManagedConnectionFactory;
+
+import org.apache.commons.lang.reflect.FieldUtils;
import org.jboss.resource.adapter.jdbc.local.LocalTxDataSource;
+import org.jboss.resource.connectionmanager.TxConnectionManager;
public class LocalTXCachedDataSource extends LocalTxDataSource
{
+ private TxConnectionManager txConnManager ;
+ public LocalTXCachedDataSource()
+ {
+ }
+
+ @Override
+ public void start() throws Exception
+ {
+ super.start();
+ this.txConnManager = (TxConnectionManager)FieldUtils.readDeclaredField(this, "connectionManager", true);
+ Object datasource = txConnManager.getPoolingStrategy().getManagedConnectionFactory().createConnectionFactory(new CachedLocalTxConnectionManager());
+ FieldUtils.writeDeclaredField(this, "datasource", datasource, true);
+ bindConnectionFactory();
+ }
-
+ public class CachedLocalTxConnectionManager implements javax.resource.spi.ConnectionManager
+ {
+ private ThreadLocal<Object> cachedConnection = new ThreadLocal<Object>();
+ /**
+ *
+ */
+ private static final long serialVersionUID = -3212026083826937031L;
+
+ @Override
+ public Object allocateConnection(ManagedConnectionFactory mcf,
+ ConnectionRequestInfo cxRequestInfo) throws ResourceException
+ {
+ if (null == this.cachedConnection.get())
+ {
+ this.cachedConnection.set(txConnManager.allocateConnection(mcf, cxRequestInfo));
+ }
+ try
+ {
+ if (((Connection)this.cachedConnection.get()).isClosed())
+ {/* renew the connection, the previous user of the connection really did want to close the
+ connection object. */
+ this.cachedConnection.set(txConnManager.allocateConnection(mcf, cxRequestInfo));
+ }
+ }
+ catch (Exception e)
+ {
+ throw new ResourceException(e);
+ }
+ return this.cachedConnection.get();
+ }
+ }
}
More information about the jboss-svn-commits
mailing list