From a568a084b3161b2ebd1e4e19d17e813ae312d65f Mon Sep 17 00:00:00 2001
From: wenshao
Date: Fri, 13 May 2011 07:06:11 +0000
Subject: [PATCH] =?UTF-8?q?=E6=A0=BC=E5=BC=8F=E5=8C=96=E4=BB=A3=E7=A0=81?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
git-svn-id: http://code.alibabatech.com/svn/druid/trunk@48 b9813039-fb51-4c41-a8b9-e21c2acb5095
---
.../alibaba/druid/pool/DruidDataSource.java | 4 +-
.../druid/pool/PoolableConnection.java | 2 +-
.../xa/DataSourceXAConnectionFactory.java | 30 +++++-----
.../druid/pool/xa/DruidXADataSource.java | 2 +-
.../pool/xa/LocalXAConnectionFactory.java | 9 ++-
.../druid/pool/xa/ManagedConnection.java | 58 +++++++++----------
.../druid/pool/xa/ManagedDataSource.java | 54 +++++++++--------
.../druid/pool/xa/TransactionContext.java | 47 +++++++--------
.../pool/xa/TransactionContextListener.java | 1 -
.../druid/pool/xa/TransactionRegistry.java | 29 +++++-----
.../druid/pool/xa/XAConnectionFactory.java | 30 +++++-----
.../druid/stat/JdbcConnectionStat.java | 2 +-
.../bvt/pool/DruidDataSourceFilterTest.java | 15 ++---
.../alibaba/druid/pool/benckmark/Case0.java | 28 ++++-----
14 files changed, 156 insertions(+), 155 deletions(-)
diff --git a/src/main/java/com/alibaba/druid/pool/DruidDataSource.java b/src/main/java/com/alibaba/druid/pool/DruidDataSource.java
index 79c990f3ea..8a8557bba0 100644
--- a/src/main/java/com/alibaba/druid/pool/DruidDataSource.java
+++ b/src/main/java/com/alibaba/druid/pool/DruidDataSource.java
@@ -515,14 +515,14 @@ public class DruidDataSource extends DruidDataAbstractSource implements DruidDat
if (timeBetweenEvictionRunsMillis > 0) {
Thread.sleep(timeBetweenEvictionRunsMillis);
}
-
+
ConnectionHolder first = null;
lock.lock();
try {
if (count <= 0) {
continue;
}
-
+
if (count <= maxIdle) {
highWater.await();
continue;
diff --git a/src/main/java/com/alibaba/druid/pool/PoolableConnection.java b/src/main/java/com/alibaba/druid/pool/PoolableConnection.java
index bde2134a54..3b940f612b 100644
--- a/src/main/java/com/alibaba/druid/pool/PoolableConnection.java
+++ b/src/main/java/com/alibaba/druid/pool/PoolableConnection.java
@@ -416,7 +416,7 @@ public class PoolableConnection implements PooledConnection, Connection {
if (holder == null) {
return true;
}
-
+
return conn.isClosed();
}
diff --git a/src/main/java/com/alibaba/druid/pool/xa/DataSourceXAConnectionFactory.java b/src/main/java/com/alibaba/druid/pool/xa/DataSourceXAConnectionFactory.java
index 4ba166aad1..036b5c7b81 100644
--- a/src/main/java/com/alibaba/druid/pool/xa/DataSourceXAConnectionFactory.java
+++ b/src/main/java/com/alibaba/druid/pool/xa/DataSourceXAConnectionFactory.java
@@ -24,37 +24,39 @@ import java.sql.SQLException;
/**
* An implementation of XAConnectionFactory which uses a real XADataSource to obtain connections and XAResources.
- *
+ *
* @author Dain Sundstrom
* @version $Revision$
*/
public class DataSourceXAConnectionFactory implements XAConnectionFactory {
+
protected TransactionRegistry transactionRegistry;
- protected XADataSource xaDataSource;
- protected String username;
- protected String password;
+ protected XADataSource xaDataSource;
+ protected String username;
+ protected String password;
/**
- * Creates an DataSourceXAConnectionFactory which uses the specified XADataSource to create database
- * connections. The connections are enlisted into transactions using the specified transaction manager.
- *
+ * Creates an DataSourceXAConnectionFactory which uses the specified XADataSource to create database connections.
+ * The connections are enlisted into transactions using the specified transaction manager.
+ *
* @param transactionManager the transaction manager in which connections will be enlisted
* @param xaDataSource the data source from which connections will be retrieved
*/
- public DataSourceXAConnectionFactory(TransactionManager transactionManager, XADataSource xaDataSource) {
+ public DataSourceXAConnectionFactory(TransactionManager transactionManager, XADataSource xaDataSource){
this(transactionManager, xaDataSource, null, null);
}
/**
- * Creates an DataSourceXAConnectionFactory which uses the specified XADataSource to create database
- * connections. The connections are enlisted into transactions using the specified transaction manager.
- *
+ * Creates an DataSourceXAConnectionFactory which uses the specified XADataSource to create database connections.
+ * The connections are enlisted into transactions using the specified transaction manager.
+ *
* @param transactionManager the transaction manager in which connections will be enlisted
* @param xaDataSource the data source from which connections will be retrieved
* @param username the username used for authenticating new connections or null for unauthenticated
* @param password the password used for authenticating new connections
*/
- public DataSourceXAConnectionFactory(TransactionManager transactionManager, XADataSource xaDataSource, String username, String password) {
+ public DataSourceXAConnectionFactory(TransactionManager transactionManager, XADataSource xaDataSource,
+ String username, String password){
if (transactionManager == null) throw new NullPointerException("transactionManager is null");
if (xaDataSource == null) throw new NullPointerException("xaDataSource is null");
@@ -66,6 +68,7 @@ public class DataSourceXAConnectionFactory implements XAConnectionFactory {
/**
* Gets the username used to authenticate new connections.
+ *
* @return the user name or null if unauthenticated connections are used
*/
public String getUsername() {
@@ -74,6 +77,7 @@ public class DataSourceXAConnectionFactory implements XAConnectionFactory {
/**
* Sets the username used to authenticate new connections.
+ *
* @param username the username used for authenticating the connection or null for unauthenticated
*/
public void setUsername(String username) {
@@ -82,6 +86,7 @@ public class DataSourceXAConnectionFactory implements XAConnectionFactory {
/**
* Sets the password used to authenticate new connections.
+ *
* @param password the password used for authenticating the connection or null for unauthenticated
*/
public void setPassword(String password) {
@@ -111,4 +116,3 @@ public class DataSourceXAConnectionFactory implements XAConnectionFactory {
return connection;
}
}
-
diff --git a/src/main/java/com/alibaba/druid/pool/xa/DruidXADataSource.java b/src/main/java/com/alibaba/druid/pool/xa/DruidXADataSource.java
index 3af14e5c21..ba47bd5f11 100644
--- a/src/main/java/com/alibaba/druid/pool/xa/DruidXADataSource.java
+++ b/src/main/java/com/alibaba/druid/pool/xa/DruidXADataSource.java
@@ -124,7 +124,7 @@ public class DruidXADataSource extends DruidDataSource {
// Create the XADataSource instance using the configured class name if it has not been set
if (xaDataSourceInstance == null) {
- Class xaDataSourceClass = null;
+ Class> xaDataSourceClass = null;
try {
xaDataSourceClass = Class.forName(xaDataSource);
} catch (Throwable t) {
diff --git a/src/main/java/com/alibaba/druid/pool/xa/LocalXAConnectionFactory.java b/src/main/java/com/alibaba/druid/pool/xa/LocalXAConnectionFactory.java
index 29c7e69fa0..74a1b40ce4 100644
--- a/src/main/java/com/alibaba/druid/pool/xa/LocalXAConnectionFactory.java
+++ b/src/main/java/com/alibaba/druid/pool/xa/LocalXAConnectionFactory.java
@@ -46,8 +46,13 @@ public class LocalXAConnectionFactory implements XAConnectionFactory {
* @param connectionFactory the connection factory from which connections will be retrieved
*/
public LocalXAConnectionFactory(TransactionManager transactionManager, ConnectionFactory connectionFactory){
- if (transactionManager == null) throw new NullPointerException("transactionManager is null");
- if (connectionFactory == null) throw new NullPointerException("connectionFactory is null");
+ if (transactionManager == null) {
+ throw new NullPointerException("transactionManager is null");
+ }
+
+ if (connectionFactory == null) {
+ throw new NullPointerException("connectionFactory is null");
+ }
this.transactionRegistry = new TransactionRegistry(transactionManager);
this.connectionFactory = connectionFactory;
diff --git a/src/main/java/com/alibaba/druid/pool/xa/ManagedConnection.java b/src/main/java/com/alibaba/druid/pool/xa/ManagedConnection.java
index 83ba3545b5..730fc57ecd 100644
--- a/src/main/java/com/alibaba/druid/pool/xa/ManagedConnection.java
+++ b/src/main/java/com/alibaba/druid/pool/xa/ManagedConnection.java
@@ -154,35 +154,35 @@ public class ManagedConnection extends PoolableConnection {
}
protected void transactionComplete() {
-// transactionContext = null;
-//
-// // if we were using a shared connection, clear the reference now that the transaction has completed
-// if (isSharedConnection) {
-// // for now, just set the delegate to null, it will be created later if needed
-// setDelegate(null);
-// isSharedConnection = false;
-// }
-//
-// // if this connection was closed during the transaction and there is still a delegate present close it
-// Connection delegate = getDelegateInternal();
-// if (isClosed() && delegate != null) {
-// try {
-// setDelegate(null);
-//
-// // don't actually close the connection if in a transaction
-// if (!delegate.isClosed()) {
-// // don't use super.close() because it calls passivate() which marks the
-// // the connection as closed without returning it to the pool
-// delegate.close();
-// }
-// } catch (SQLException ignored) {
-// // not a whole lot we can do here as connection is closed
-// // and this is a transaction callback so there is no
-// // way to report the error
-// } finally {
-// _closed = true;
-// }
-// }
+ // transactionContext = null;
+ //
+ // // if we were using a shared connection, clear the reference now that the transaction has completed
+ // if (isSharedConnection) {
+ // // for now, just set the delegate to null, it will be created later if needed
+ // setDelegate(null);
+ // isSharedConnection = false;
+ // }
+ //
+ // // if this connection was closed during the transaction and there is still a delegate present close it
+ // Connection delegate = getDelegateInternal();
+ // if (isClosed() && delegate != null) {
+ // try {
+ // setDelegate(null);
+ //
+ // // don't actually close the connection if in a transaction
+ // if (!delegate.isClosed()) {
+ // // don't use super.close() because it calls passivate() which marks the
+ // // the connection as closed without returning it to the pool
+ // delegate.close();
+ // }
+ // } catch (SQLException ignored) {
+ // // not a whole lot we can do here as connection is closed
+ // // and this is a transaction callback so there is no
+ // // way to report the error
+ // } finally {
+ // _closed = true;
+ // }
+ // }
throw new RuntimeException("TODO");
}
diff --git a/src/main/java/com/alibaba/druid/pool/xa/ManagedDataSource.java b/src/main/java/com/alibaba/druid/pool/xa/ManagedDataSource.java
index 4af72305dc..d5b7939145 100644
--- a/src/main/java/com/alibaba/druid/pool/xa/ManagedDataSource.java
+++ b/src/main/java/com/alibaba/druid/pool/xa/ManagedDataSource.java
@@ -18,60 +18,58 @@ package com.alibaba.druid.pool.xa;
import java.sql.Connection;
import java.sql.SQLException;
-
/**
* The ManagedDataSource is a PoolingDataSource that creates ManagedConnections.
- *
+ *
* @author Dain Sundstrom
* @version $Revision$
*/
public class ManagedDataSource {
+
private TransactionRegistry transactionRegistry;
/**
- * Creates an uninitialized datasource. Before this data source can be used a pool and
- * transaction registry must be set.
+ * Creates an uninitialized datasource. Before this data source can be used a pool and transaction registry must be
+ * set.
*/
- public ManagedDataSource() {
+ public ManagedDataSource(){
}
/**
- * Creates a ManagedDataSource which obtains connections from the specified pool and
- * manages them using the specified transaction registry. The TransactionRegistry must
- * be the transaction registry obtained from the XAConnectionFactory used to create
- * the connection pool. If not an error will occure when attempting to use the connection
- * in a global transaction because the XAResource object associated with the connection
- * will be unavailable.
- *
+ * Creates a ManagedDataSource which obtains connections from the specified pool and manages them using the
+ * specified transaction registry. The TransactionRegistry must be the transaction registry obtained from the
+ * XAConnectionFactory used to create the connection pool. If not an error will occure when attempting to use the
+ * connection in a global transaction because the XAResource object associated with the connection will be
+ * unavailable.
+ *
* @param pool the connection pool
- * @param transactionRegistry the transaction registry obtained from the
- * XAConnectionFactory used to create the connection pool object factory
+ * @param transactionRegistry the transaction registry obtained from the XAConnectionFactory used to create the
+ * connection pool object factory
*/
- public ManagedDataSource(TransactionRegistry transactionRegistry) {
+ public ManagedDataSource(TransactionRegistry transactionRegistry){
this.transactionRegistry = transactionRegistry;
}
/**
- * Sets the transaction registry from the XAConnectionFactory used to create the pool.
- * The transaction registry can only be set once using either a connector or this setter
- * method.
- * @param transactionRegistry the transaction registry acquired from the XAConnectionFactory
- * used to create the pool
+ * Sets the transaction registry from the XAConnectionFactory used to create the pool. The transaction registry can
+ * only be set once using either a connector or this setter method.
+ *
+ * @param transactionRegistry the transaction registry acquired from the XAConnectionFactory used to create the pool
*/
public void setTransactionRegistry(TransactionRegistry transactionRegistry) {
- if(this.transactionRegistry != null) throw new IllegalStateException("TransactionRegistry already set");
- if(transactionRegistry == null) throw new NullPointerException("TransactionRegistry is null");
+ if (this.transactionRegistry != null) throw new IllegalStateException("TransactionRegistry already set");
+ if (transactionRegistry == null) throw new NullPointerException("TransactionRegistry is null");
this.transactionRegistry = transactionRegistry;
}
public Connection getConnection() throws SQLException {
-// if (_pool == null) throw new IllegalStateException("Pool has not been set");
-// if (transactionRegistry == null) throw new IllegalStateException("TransactionRegistry has not been set");
-//
-// Connection connection = new ManagedConnection(_pool, transactionRegistry, isAccessToUnderlyingConnectionAllowed());
-// return connection;
+ // if (_pool == null) throw new IllegalStateException("Pool has not been set");
+ // if (transactionRegistry == null) throw new IllegalStateException("TransactionRegistry has not been set");
+ //
+ // Connection connection = new ManagedConnection(_pool, transactionRegistry,
+ // isAccessToUnderlyingConnectionAllowed());
+ // return connection;
throw new SQLException("TODO"); // TODO
}
}
-
diff --git a/src/main/java/com/alibaba/druid/pool/xa/TransactionContext.java b/src/main/java/com/alibaba/druid/pool/xa/TransactionContext.java
index 433e70e574..e41c2c2d3f 100644
--- a/src/main/java/com/alibaba/druid/pool/xa/TransactionContext.java
+++ b/src/main/java/com/alibaba/druid/pool/xa/TransactionContext.java
@@ -26,29 +26,27 @@ import java.sql.SQLException;
import java.lang.ref.WeakReference;
/**
- * TransactionContext represents the association between a single XAConnectionFactory and a Transaction.
- * This context contains a single shared connection which should be used by all ManagedConnections for
- * the XAConnectionFactory, the ability to listen for the transaction completion event, and a method
- * to check the status of the transaction.
- *
+ * TransactionContext represents the association between a single XAConnectionFactory and a Transaction. This context
+ * contains a single shared connection which should be used by all ManagedConnections for the XAConnectionFactory, the
+ * ability to listen for the transaction completion event, and a method to check the status of the transaction.
+ *
* @author Dain Sundstrom
* @version $Revision$
*/
public class TransactionContext {
- private final TransactionRegistry transactionRegistry;
+
+ private final TransactionRegistry transactionRegistry;
private final WeakReference transactionRef;
- private Connection sharedConnection;
+ private Connection sharedConnection;
/**
- * Creates a TransactionContext for the specified Transaction and TransactionRegistry. The
- * TransactionRegistry is used to obtain the XAResource for the shared connection when it is
- * enlisted in the transaction.
- *
- * @param transactionRegistry the TransactionRegistry used to obtain the XAResource for the
- * shared connection
+ * Creates a TransactionContext for the specified Transaction and TransactionRegistry. The TransactionRegistry is
+ * used to obtain the XAResource for the shared connection when it is enlisted in the transaction.
+ *
+ * @param transactionRegistry the TransactionRegistry used to obtain the XAResource for the shared connection
* @param transaction the transaction
*/
- public TransactionContext(TransactionRegistry transactionRegistry, Transaction transaction) {
+ public TransactionContext(TransactionRegistry transactionRegistry, Transaction transaction){
if (transactionRegistry == null) throw new NullPointerException("transactionRegistry is null");
if (transaction == null) throw new NullPointerException("transaction is null");
this.transactionRegistry = transactionRegistry;
@@ -56,9 +54,9 @@ public class TransactionContext {
}
/**
- * Gets the connection shared by all ManagedConnections in the transaction. Specifically,
- * connection using the same XAConnectionFactory from which the TransactionRegistry was
- * obtained.
+ * Gets the connection shared by all ManagedConnections in the transaction. Specifically, connection using the same
+ * XAConnectionFactory from which the TransactionRegistry was obtained.
+ *
* @return the shared connection for this transaction
*/
public Connection getSharedConnection() {
@@ -66,13 +64,11 @@ public class TransactionContext {
}
/**
- * Sets the shared connection for this transaction. The shared connection is enlisted
- * in the transaction.
- *
+ * Sets the shared connection for this transaction. The shared connection is enlisted in the transaction.
+ *
* @param sharedConnection the shared connection
- * @throws SQLException if a shared connection is already set, if XAResource for the connection
- * could not be found in the transaction registry, or if there was a problem enlisting the
- * connection in the transaction
+ * @throws SQLException if a shared connection is already set, if XAResource for the connection could not be found
+ * in the transaction registry, or if there was a problem enlisting the connection in the transaction
*/
public void setSharedConnection(Connection sharedConnection) throws SQLException {
if (this.sharedConnection != null) {
@@ -96,13 +92,14 @@ public class TransactionContext {
/**
* Adds a listener for transaction completion events.
- *
+ *
* @param listener the listener to add
* @throws SQLException if a problem occurs adding the listener to the transaction
*/
public void addTransactionContextListener(final TransactionContextListener listener) throws SQLException {
try {
getTransaction().registerSynchronization(new Synchronization() {
+
public void beforeCompletion() {
}
@@ -120,6 +117,7 @@ public class TransactionContext {
/**
* True if the transaction is active or marked for rollback only.
+ *
* @return true if the transaction is active or marked for rollback only; false otherwise
* @throws SQLException if a problem occurs obtaining the transaction status
*/
@@ -144,4 +142,3 @@ public class TransactionContext {
return transaction;
}
}
-
diff --git a/src/main/java/com/alibaba/druid/pool/xa/TransactionContextListener.java b/src/main/java/com/alibaba/druid/pool/xa/TransactionContextListener.java
index a96d90c751..3619f2b375 100644
--- a/src/main/java/com/alibaba/druid/pool/xa/TransactionContextListener.java
+++ b/src/main/java/com/alibaba/druid/pool/xa/TransactionContextListener.java
@@ -15,7 +15,6 @@
*/
package com.alibaba.druid.pool.xa;
-
/**
* A listener for transaction completion events.
*
diff --git a/src/main/java/com/alibaba/druid/pool/xa/TransactionRegistry.java b/src/main/java/com/alibaba/druid/pool/xa/TransactionRegistry.java
index 3347c9eb03..0888005ca5 100644
--- a/src/main/java/com/alibaba/druid/pool/xa/TransactionRegistry.java
+++ b/src/main/java/com/alibaba/druid/pool/xa/TransactionRegistry.java
@@ -26,34 +26,33 @@ import javax.transaction.Transaction;
import javax.transaction.TransactionManager;
import javax.transaction.xa.XAResource;
-
/**
* TransactionRegistry tracks Connections and XAResources in a transacted environment for a single XAConnectionFactory.
- *
- * The TransactionRegistry hides the details of transaction processing from the existing DBCP pooling code, and gives
- * the ManagedConnection a way to enlist connections in a transaction, allowing for the maximal rescue of DBCP.
- *
+ * The TransactionRegistry hides the details of transaction processing from the existing DBCP pooling code, and
+ * gives the ManagedConnection a way to enlist connections in a transaction, allowing for the maximal rescue of DBCP.
+ *
* @author Dain Sundstrom
* @version $Revision$
*/
public class TransactionRegistry {
- private final TransactionManager transactionManager;
- private final Map caches = new WeakHashMap();
- private final Map xaResources = new WeakHashMap();
+
+ private final TransactionManager transactionManager;
+ private final Map caches = new WeakHashMap();
+ private final Map xaResources = new WeakHashMap();
/**
* Creates a TransactionRegistry for the specified transaction manager.
+ *
* @param transactionManager the transaction manager used to enlist connections
*/
- public TransactionRegistry(TransactionManager transactionManager) {
+ public TransactionRegistry(TransactionManager transactionManager){
this.transactionManager = transactionManager;
}
/**
- * Registers the association between a Connection and a XAResource. When a connection
- * is enlisted in a transaction, it is actually the XAResource that is given to the transaction
- * manager.
- *
+ * Registers the association between a Connection and a XAResource. When a connection is enlisted in a transaction,
+ * it is actually the XAResource that is given to the transaction manager.
+ *
* @param connection the JDBC connection
* @param xaResource the XAResource which managed the connection within a transaction
*/
@@ -65,6 +64,7 @@ public class TransactionRegistry {
/**
* Gets the XAResource registered for the connection.
+ *
* @param connection the connection
* @return the XAResource registered for the connection; never null
* @throws SQLException if the connection does not have a registered XAResource
@@ -80,6 +80,7 @@ public class TransactionRegistry {
/**
* Gets the active TransactionContext or null if not Transaction is active.
+ *
* @return the active TransactionContext or null if not Transaction is active
* @throws SQLException if an error occurs while fetching the transaction
*/
@@ -115,10 +116,10 @@ public class TransactionRegistry {
/**
* Unregisters a destroyed connection from {@link TransactionRegistry}
+ *
* @param connection
*/
public synchronized void unregisterConnection(Connection connection) {
xaResources.remove(connection);
}
}
-
diff --git a/src/main/java/com/alibaba/druid/pool/xa/XAConnectionFactory.java b/src/main/java/com/alibaba/druid/pool/xa/XAConnectionFactory.java
index 35aa84fa5e..d4e18a6027 100644
--- a/src/main/java/com/alibaba/druid/pool/xa/XAConnectionFactory.java
+++ b/src/main/java/com/alibaba/druid/pool/xa/XAConnectionFactory.java
@@ -21,36 +21,32 @@ import java.sql.SQLException;
import com.alibaba.druid.pool.ConnectionFactory;
/**
- * XAConnectionFactory is an extension of ConnectionFactory used to create connections
- * in a transaction managed environment. The XAConnectionFactory opperates like a normal
- * ConnectionFactory except an TransactionRegistry is provided from which the XAResource
- * for a connection can be obtained. This allows the existing DBCP pool code to work with
- * XAConnections and gives a the ManagedConnection a way to enlist a connection in the
- * the transaction.
- *
+ * XAConnectionFactory is an extension of ConnectionFactory used to create connections in a transaction managed
+ * environment. The XAConnectionFactory opperates like a normal ConnectionFactory except an TransactionRegistry is
+ * provided from which the XAResource for a connection can be obtained. This allows the existing DBCP pool code to work
+ * with XAConnections and gives a the ManagedConnection a way to enlist a connection in the the transaction.
+ *
* @author Dain Sundstrom
* @author Rodney Waldhoff
* @version $Revision$
*/
public interface XAConnectionFactory extends ConnectionFactory {
+
/**
- * Gets the TransactionRegistry for this connection factory which contains a the
- * XAResource for every connection created by this factory.
- *
+ * Gets the TransactionRegistry for this connection factory which contains a the XAResource for every connection
+ * created by this factory.
+ *
* @return the transaction registry for this connection factory
*/
TransactionRegistry getTransactionRegistry();
/**
- * Create a new {@link java.sql.Connection} in an implementation specific fashion.
- *
- * An implementation can assume that the caller of this will wrap the connection in
- * a proxy that protects access to the setAutoCommit, commit and rollback when
- * enrolled in a XA transaction.
- *
+ * Create a new {@link java.sql.Connection} in an implementation specific fashion. An implementation can assume
+ * that the caller of this will wrap the connection in a proxy that protects access to the setAutoCommit, commit and
+ * rollback when enrolled in a XA transaction.
+ *
* @return a new {@link java.sql.Connection}
* @throws java.sql.SQLException if a database error occurs creating the connection
*/
Connection createConnection() throws SQLException;
}
-
diff --git a/src/main/java/com/alibaba/druid/stat/JdbcConnectionStat.java b/src/main/java/com/alibaba/druid/stat/JdbcConnectionStat.java
index 08a294d79e..6b22ed7c37 100644
--- a/src/main/java/com/alibaba/druid/stat/JdbcConnectionStat.java
+++ b/src/main/java/com/alibaba/druid/stat/JdbcConnectionStat.java
@@ -51,7 +51,7 @@ public class JdbcConnectionStat implements JdbcConnectionStatMBean {
private final AtomicLong closeCount = new AtomicLong(0); // 执行Connection.close的计数
private final AtomicLong commitCount = new AtomicLong(0); // 执行commit的计数
private final AtomicLong rollbackCount = new AtomicLong(0); // 执行rollback的计数
- private final AtomicLong connectNanoSpan = new AtomicLong(0); // 连接建立消耗时间总和(纳秒)
+ private final AtomicLong connectNanoSpan = new AtomicLong(0); // 连接建立消耗时间总和(纳秒)
public void reset() {
concurrentCount.set(0);
diff --git a/src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceFilterTest.java b/src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceFilterTest.java
index 669dda55f6..29b0151115 100644
--- a/src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceFilterTest.java
+++ b/src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceFilterTest.java
@@ -6,23 +6,24 @@ import junit.framework.TestCase;
import com.alibaba.druid.pool.DruidDataSource;
public class DruidDataSourceFilterTest extends TestCase {
+
public void test_filter() throws Exception {
DruidDataSource dataSource = new DruidDataSource();
-
+
Assert.assertEquals(0, dataSource.getFilters().size());
-
+
dataSource.setFilters("stat");
-
+
Assert.assertEquals(1, dataSource.getFilters().size());
}
-
+
public void test_filter_2() throws Exception {
DruidDataSource dataSource = new DruidDataSource();
-
+
Assert.assertEquals(0, dataSource.getFilters().size());
-
+
dataSource.setFilters("stat,trace");
-
+
Assert.assertEquals(2, dataSource.getFilters().size());
}
}
diff --git a/src/test/java/com/alibaba/druid/pool/benckmark/Case0.java b/src/test/java/com/alibaba/druid/pool/benckmark/Case0.java
index b0f9339472..226ceb932f 100644
--- a/src/test/java/com/alibaba/druid/pool/benckmark/Case0.java
+++ b/src/test/java/com/alibaba/druid/pool/benckmark/Case0.java
@@ -31,17 +31,17 @@ import com.jolbox.bonecp.BoneCPDataSource;
public class Case0 extends TestCase {
- private String jdbcUrl;
- private String user;
- private String password;
- private String driverClass;
- private int initialSize = 10;
- private int minPoolSize = 1;
- private int maxPoolSize = 2;
- private int maxActive = 2;
- private String validationQuery = null;
-
- public final int LOOP_COUNT = 5;
+ private String jdbcUrl;
+ private String user;
+ private String password;
+ private String driverClass;
+ private int initialSize = 10;
+ private int minPoolSize = 1;
+ private int maxPoolSize = 2;
+ private int maxActive = 2;
+ private String validationQuery = null;
+
+ public final int LOOP_COUNT = 5;
protected void setUp() throws Exception {
jdbcUrl = "jdbc:fake:dragoon_v25masterdb";
@@ -93,14 +93,14 @@ public class Case0 extends TestCase {
}
System.out.println();
}
-
+
public void test_2() throws Exception {
BoneCPDataSource dataSource = new BoneCPDataSource();
// dataSource.(10);
// dataSource.setMaxActive(50);
dataSource.setMinConnectionsPerPartition(minPoolSize);
dataSource.setMaxConnectionsPerPartition(maxPoolSize);
-
+
dataSource.setDriverClass(driverClass);
dataSource.setJdbcUrl(jdbcUrl);
// dataSource.setPoolPreparedStatements(true);
@@ -109,7 +109,7 @@ public class Case0 extends TestCase {
dataSource.setPassword(password);
dataSource.setConnectionTestStatement("SELECT 1");
dataSource.setPartitionCount(1);
-
+
for (int i = 0; i < LOOP_COUNT; ++i) {
p0(dataSource, "boneCP");
}