连接多台服务器数据库,如遇超时或网络不通自动跳过连接下一台
来源:未知 责任编辑:智问网络 发表时间:2013-10-30 11:12 点击:次
public class Controller{
List dbiList = new LinkedList();//这是那200多个DBInfo对象的链表.自己想办法添进去.初始化的时候添一次就可以了.
//原来的doProccess方法
public void doProcess(final Object args){
Proccessor p = new Processor({
public void proccess(Connection con)throws SQLException{
//在这里面添加你要对数据库操作的内容.注意,这里最好是要封装成一个事务进行提交.
//如果不想使用匿名内部类,可以自己编写一个有名称的实现类.
}
});
doDBProccess(p);
}
private void doDBProccess(Proccessor p){
for(Iterator itr = dbiList.iterator();itr.hasNext();){
DBInfo info = (DBInfo)itr.next();
Connection conn = getDBConnection(info);
try{
p.proccess(conn);
return;
}catch(SQLException e){
continue;
}
}
noDBCanDO(p);
}
private void noDBCanDO(Proccessor p){
//所有DB的连接都无法完成时,代码添这里就可以了.
}
private Connection getDBConnection(DBInfo info){
//通过DBInfo对象的内容,创建一个数据库的连接.代码添这里就可以.
}
}
作者 疯狂程序员
List dbiList = new LinkedList();//这是那200多个DBInfo对象的链表.自己想办法添进去.初始化的时候添一次就可以了.
//原来的doProccess方法
public void doProcess(final Object args){
Proccessor p = new Processor({
public void proccess(Connection con)throws SQLException{
//在这里面添加你要对数据库操作的内容.注意,这里最好是要封装成一个事务进行提交.
//如果不想使用匿名内部类,可以自己编写一个有名称的实现类.
}
});
doDBProccess(p);
}
private void doDBProccess(Proccessor p){
for(Iterator itr = dbiList.iterator();itr.hasNext();){
DBInfo info = (DBInfo)itr.next();
Connection conn = getDBConnection(info);
try{
p.proccess(conn);
return;
}catch(SQLException e){
continue;
}
}
noDBCanDO(p);
}
private void noDBCanDO(Proccessor p){
//所有DB的连接都无法完成时,代码添这里就可以了.
}
private Connection getDBConnection(DBInfo info){
//通过DBInfo对象的内容,创建一个数据库的连接.代码添这里就可以.
}
}
作者 疯狂程序员
相关新闻>>
最新推荐更多>>>
- 发表评论
-
- 最新评论 更多>>