【问题标题】:How to check connection is live or not while returning connection after using it connection pool?使用连接池后返回连接时如何检查连接是否处于活动状态?
【发布时间】:2017-02-24 06:28:28
【问题描述】:

我正在将连接添加到arraylist中,并在需要使用它们时一一获取,这里我使用的是来自连接池的连接,

ArrayList<Connection> al=new ArrayList<Connection>();

public Connection getconnection(){
    if(al.size()>0)
    {
       try{
            connection = al.get(0);
            al.remove(connection);
          }catch(Exception e){
            out.print(e);
          } 
    }else{
        out.println("No Database connection is Available !");
    }
    return connection;
}

使用此连接后,我会将其返回连接池。

public void returnconnection(Connection con){
    Connection c = con;
    al.add(c);
    out.println("Hi I'm Connection, I'm back! ");
} 

在添加到 ArrayList 之前,我需要检查此连接是否处于活动状态?

【问题讨论】:

  • this 有用吗?
  • 不要扮演您自己的连接池的角色。使用现有的,如 HikariCP、DBCP、c3p0 等。它将为您省去很多麻烦和错误。

标签: java jdbc


【解决方案1】:

找到了解决这个问题的方法,希望对你有帮助,

//checking connection is live or not
public boolean checkconnection(Connection conn){
    Connection validconnection = conn;
    try{
        if(validconnection.isValid(1) && validconnection !=null)
        return true;
    }catch(Exception er){
        out.println("\n I'm not valid connection I can be null or Invalid, Please Check!");
    } 
    return false;
}
//Adding Connection back to pool
public void returnconnection(Connection con) throws Exception{
    Connection c = con;
    boolean validreturncon=checkconnection(c);
    if (validreturncon){
        al.add(c);
        out.println("Hi I'm Connection, I'm back! ");
    }
    else{
        out.println("\n Dead Connection, No need to put me into ArrayList! ");
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-16
    • 1970-01-01
    • 2015-03-28
    • 2018-10-30
    相关资源
    最近更新 更多