git-svn-id: http://code.alibabatech.com/svn/druid/trunk@467 b9813039-fb51-4c41-a8b9-e21c2acb5095
This commit is contained in:
wenshao
2011-07-17 09:50:58 +00:00
parent f9fabd8801
commit bf24a2c646
3 changed files with 31 additions and 2 deletions
@@ -22,7 +22,7 @@ public class HADataSource extends MultiDataSource implements DataSource {
protected ArrayList<DruidDataSource> dataSources = new ArrayList<DruidDataSource>();
protected final List<DruidDataSource> notAvailableDatasources = new CopyOnWriteArrayList<DruidDataSource>();
public HADataSource(){
}
@@ -40,7 +40,7 @@ public class HADataSource extends MultiDataSource implements DataSource {
return new MultiDataSourceConnection(this, createConnectionId());
}
protected int indexFor(MultiDataSourceConnection multiDataSourceConnection, String sql) {
protected int indexFor(MultiDataSourceConnection multiDataSourceConnection, String sql) throws SQLException {
int size = dataSources.size();
int connectionId = (int) multiDataSourceConnection.getId();
@@ -0,0 +1,9 @@
package com.alibaba.druid.pool.ha.balance;
import java.sql.SQLException;
import com.alibaba.druid.pool.ha.MultiDataSourceConnection;
public interface BalancePolicy {
int indexFor(MultiDataSourceConnection connection, String sql) throws SQLException;
}
@@ -0,0 +1,20 @@
package com.alibaba.druid.pool.ha.balance;
import java.sql.SQLException;
import com.alibaba.druid.pool.ha.MultiDataSource;
import com.alibaba.druid.pool.ha.MultiDataSourceConnection;
public class RoundRobinBlancePolicy implements BalancePolicy {
@Override
public int indexFor(MultiDataSourceConnection connection, String sql) throws SQLException {
MultiDataSource dataSource = connection.getHaDataSource();
int size = dataSource.getDataSources().size();
long connectionId = (int) connection.getId();
return (int) (connectionId % size);
}
}