From eaf877fd4e831617f2e292b25b4927b3744800db Mon Sep 17 00:00:00 2001 From: wenshao Date: Sun, 17 Jul 2011 05:46:18 +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@459 b9813039-fb51-4c41-a8b9-e21c2acb5095 --- .../com/alibaba/druid/pool/ha/HADataSource.java | 12 ++++++++---- .../com/alibaba/druid/pool/ha/MultiDataSource.java | 14 +++++++++++--- 2 files changed, 19 insertions(+), 7 deletions(-) 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 a3d3d23818..a4f166ab95 100644 --- a/src/main/java/com/alibaba/druid/pool/ha/HADataSource.java +++ b/src/main/java/com/alibaba/druid/pool/ha/HADataSource.java @@ -54,10 +54,7 @@ public class HADataSource extends MultiDataSource implements DataSource { assert dataSource != null; if (!dataSource.isEnable()) { - boolean removed = dataSources.remove(dataSource); - if (removed) { - notAvailableDatasources.add(dataSource); - } + handleNotAwailableDatasource(dataSource); continue; } @@ -79,6 +76,13 @@ public class HADataSource extends MultiDataSource implements DataSource { return conn; } } + + void handleNotAwailableDatasource(DruidDataSource dataSource) { + boolean removed = dataSources.remove(dataSource); + if (removed) { + notAvailableDatasources.add(dataSource); + } + } public long getIndexErrorCount() { return indexErrorCount.get(); 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 58904e272d..10ab7c6144 100644 --- a/src/main/java/com/alibaba/druid/pool/ha/MultiDataSource.java +++ b/src/main/java/com/alibaba/druid/pool/ha/MultiDataSource.java @@ -3,6 +3,8 @@ package com.alibaba.druid.pool.ha; import java.sql.Connection; import java.sql.SQLException; import java.util.ArrayList; +import java.util.Collections; +import java.util.List; import com.alibaba.druid.pool.DataSourceAdapter; import com.alibaba.druid.pool.DruidDataSource; @@ -15,8 +17,14 @@ public abstract class MultiDataSource extends DataSourceAdapter { dataSources = new ArrayList(); } - @Override - public Connection getConnection() throws SQLException { - throw new UnsupportedOperationException(); + public List getDataSources() { + return Collections.unmodifiableList(dataSources); } + + public void setDataSources(List dataSources) { + this.dataSources = new ArrayList(dataSources);; + } + + @Override + public abstract Connection getConnection() throws SQLException; }