c 3 p 0データベース接続プール使用エラー【You can't operate on a closed Connection!!】ソリューション


一般的に、私たちのプロジェクトにはデータベース接続を取得する方法があります.
データベース接続を取得する方法は、次のとおりです.
       1. CommoPooledDataSourceオブジェクトを作成し、getConnection()メソッドを使用して接続を取得します.
       2. Connectionとして汎用的なThreadLocalオブジェクトを作成し、現在のメソッドで保存されているデータベース接続をget()メソッドで取り出し、setメソッドで接続を追加して返します.
具体的なコード:
private static ThreadLocal<Connection> threadLocal = new ThreadLocal<Connection>(); //   ThreadLocal   
private static ComboPooledDataSource dataSourcedataSource = new ComboPooledDataSource(); //         
/** 
 *  
 * @Title: 
getConnection 
 * @author GNODIAD 
 * @date 2014-11-6 
  10:54:33 
 * @Description: |-- 
           
 * @return           
 * @throws 
SQLException         
 * 
 */
public static Connection getConnection() throws SQLException { 
    /* 
     *  1). 
 ThreadLocal                
     *  2). 
                 ,          , 
     *     
          ThreadLocal         
     *  3). 
        ,          
     */
    Connection conn = 
threadLocal.get(); 
    if (conn == null || conn.isClosed()) 
{// 【                    】 
        conn = 
dataSource.getConnection(); //      
        threadLocal.set(conn); 
//      ThreadLocal  
    } 
    return conn; //      
}

問題は、接続が閉じた後も再取得されずに使用されていることです.エラーメッセージは、閉じた接続で操作できないことを示します.