This commit is contained in:
wenshao
2011-12-13 15:58:50 +08:00
parent 69edb643fe
commit c01d0e0749
5 changed files with 15 additions and 17 deletions
@@ -135,11 +135,7 @@ public class HADataSource extends MultiDataSource implements HADataSourceMBean,
return conn;
}
public void handleNotAwailableDatasource(DruidDataSource dataSource) {
throw new UnsupportedOperationException();
}
public void close() {
super.close();
if (LOG.isDebugEnabled()) {
@@ -21,8 +21,8 @@ import javax.management.ObjectName;
import com.alibaba.druid.filter.Filter;
import com.alibaba.druid.pool.DataSourceAdapter;
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.pool.ha.valid.DefaultValidDataSourceChecker;
import com.alibaba.druid.pool.ha.valid.ValidDataSourceChecker;
import com.alibaba.druid.pool.ha.valid.DefaultDataSourceFailureDetecter;
import com.alibaba.druid.pool.ha.valid.DataSourceFailureDetecter;
import com.alibaba.druid.proxy.jdbc.DataSourceProxy;
import com.alibaba.druid.util.JdbcUtils;
@@ -33,9 +33,9 @@ public abstract class MultiDataSource extends DataSourceAdapter implements Multi
private final AtomicLong connectionIdSeed = new AtomicLong();
private final AtomicLong statementIdSeed = new AtomicLong();
private final AtomicLong resultSetIdSeed = new AtomicLong();
private final AtomicLong transactionIdSeed = new AtomicLong();
private final AtomicLong transactionIdSeed = new AtomicLong();
private ValidDataSourceChecker validDataSourceChecker = new DefaultValidDataSourceChecker();
protected DataSourceFailureDetecter validDataSourceChecker = new DefaultDataSourceFailureDetecter();
private long validDataSourceCheckPeriodMillis = 3000;
private int schedulerThreadCount = 3;
@@ -129,7 +129,7 @@ public abstract class MultiDataSource extends DataSourceAdapter implements Multi
public void failureDetect() {
for (DruidDataSource dataSource : getDataSources().values()) {
boolean isValid = validDataSourceChecker.isValid(dataSource);
if (isValid) {
if (!isValid) {
handleNotAwailableDatasource(dataSource);
}
}
@@ -147,11 +147,11 @@ public abstract class MultiDataSource extends DataSourceAdapter implements Multi
this.validDataSourceCheckPeriodMillis = validDataSourceCheckPeriodMillis;
}
public ValidDataSourceChecker getValidDataSourceChecker() {
public DataSourceFailureDetecter getValidDataSourceChecker() {
return validDataSourceChecker;
}
public void setValidDataSourceChecker(ValidDataSourceChecker validDataSourceChecker) {
public void setValidDataSourceChecker(DataSourceFailureDetecter validDataSourceChecker) {
this.validDataSourceChecker = validDataSourceChecker;
}
@@ -179,7 +179,9 @@ public abstract class MultiDataSource extends DataSourceAdapter implements Multi
public abstract Connection getConnectionInternal(MultiDataSourceConnection conn, String sql) throws SQLException;
public abstract void handleNotAwailableDatasource(DruidDataSource dataSource);
public void handleNotAwailableDatasource(DruidDataSource dataSource) {
dataSource.setEnable(false);
}
@Override
public String getDbType() {
@@ -2,5 +2,5 @@ package com.alibaba.druid.pool.ha;
public interface MultiDataSourceMBean {
void failureDetect();
}
@@ -3,6 +3,6 @@ package com.alibaba.druid.pool.ha.valid;
import com.alibaba.druid.pool.DruidDataSource;
public interface ValidDataSourceChecker {
public interface DataSourceFailureDetecter {
boolean isValid(DruidDataSource dataSource);
}
@@ -8,9 +8,9 @@ import com.alibaba.druid.logging.LogFactory;
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.util.JdbcUtils;
public class DefaultValidDataSourceChecker implements ValidDataSourceChecker {
public class DefaultDataSourceFailureDetecter implements DataSourceFailureDetecter {
private final static Log LOG = LogFactory.getLog(DefaultValidDataSourceChecker.class);
private final static Log LOG = LogFactory.getLog(DefaultDataSourceFailureDetecter.class);
private long maxWaitMillis = 3000;