From a7d081d86b0b3ca329d21f12e8c0d2b31a587943 Mon Sep 17 00:00:00 2001 From: wenshao Date: Sun, 17 Jul 2011 09:16:50 +0000 Subject: [PATCH] =?UTF-8?q?=E6=94=AF=E6=8C=81HA?= 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@463 b9813039-fb51-4c41-a8b9-e21c2acb5095 --- .../com/alibaba/druid/pool/ha/HAConnection.java | 4 ++-- .../com/alibaba/druid/pool/ha/HADataSource.java | 10 +--------- .../alibaba/druid/pool/ha/MultiDataSource.java | 16 +++++++++++++++- 3 files changed, 18 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/alibaba/druid/pool/ha/HAConnection.java b/src/main/java/com/alibaba/druid/pool/ha/HAConnection.java index 5c8cb2dbdb..45b567be25 100644 --- a/src/main/java/com/alibaba/druid/pool/ha/HAConnection.java +++ b/src/main/java/com/alibaba/druid/pool/ha/HAConnection.java @@ -28,7 +28,7 @@ import com.alibaba.druid.proxy.jdbc.PreparedStatementProxyImpl; public class HAConnection extends WrapperAdapter implements Connection, ConnectionProxy { - private final HADataSource haDataSource; + private final MultiDataSource haDataSource; private Connection conn; @@ -88,7 +88,7 @@ public class HAConnection extends WrapperAdapter implements Connection, Connecti connectedTime = new Date(); } - public HADataSource getHaDataSource() { + public MultiDataSource getHaDataSource() { return haDataSource; } diff --git a/src/main/java/com/alibaba/druid/pool/ha/HADataSource.java b/src/main/java/com/alibaba/druid/pool/ha/HADataSource.java index 626d4ce0d0..610002e13c 100644 --- a/src/main/java/com/alibaba/druid/pool/ha/HADataSource.java +++ b/src/main/java/com/alibaba/druid/pool/ha/HADataSource.java @@ -16,8 +16,6 @@ public class HADataSource extends MultiDataSource implements DataSource { private final static Log LOG = LogFactory.getLog(HADataSource.class); - private final AtomicInteger connectionIdSeed = new AtomicInteger(); - private final AtomicInteger statementIdSeed = new AtomicInteger(); private final AtomicInteger indexErrorCount = new AtomicInteger(); protected final List notAvailableDatasources = new CopyOnWriteArrayList(); @@ -27,13 +25,7 @@ public class HADataSource extends MultiDataSource implements DataSource { @Override public Connection getConnection() throws SQLException { - int requestNumber = connectionIdSeed.getAndIncrement(); - - return new HAConnection(this, requestNumber); - } - - public int createStatementId() { - return statementIdSeed.getAndIncrement(); + return new HAConnection(this, createConnectionId()); } public Connection getConnectionInternal(int connectionId, String sql) throws SQLException { diff --git a/src/main/java/com/alibaba/druid/pool/ha/MultiDataSource.java b/src/main/java/com/alibaba/druid/pool/ha/MultiDataSource.java index 00b1a36b5f..4151c3e919 100644 --- a/src/main/java/com/alibaba/druid/pool/ha/MultiDataSource.java +++ b/src/main/java/com/alibaba/druid/pool/ha/MultiDataSource.java @@ -6,6 +6,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Properties; +import java.util.concurrent.atomic.AtomicInteger; import com.alibaba.druid.pool.DataSourceAdapter; import com.alibaba.druid.pool.DruidDataSource; @@ -14,7 +15,18 @@ public abstract class MultiDataSource extends DataSourceAdapter { protected ArrayList dataSources; - private Properties properties = new Properties(); + private Properties properties = new Properties(); + + private final AtomicInteger connectionIdSeed = new AtomicInteger(); + private final AtomicInteger statementIdSeed = new AtomicInteger(); + + public int createConnectionId() { + return connectionIdSeed.getAndIncrement(); + } + + public int createStatementId() { + return statementIdSeed.getAndIncrement(); + } public MultiDataSource(){ dataSources = new ArrayList(); @@ -35,4 +47,6 @@ public abstract class MultiDataSource extends DataSourceAdapter { @Override public abstract Connection getConnection() throws SQLException; + + public abstract Connection getConnectionInternal(int connectionId, String sql) throws SQLException; }