- C3P0(獨立鏈接池使用)
private static ComboPooledDataSource cpDataSource = null;;
private static WebPooledConn instance = null;
private WebPooledConn(){}
static{
try
{
// (1) 初始化鏈接池設置
cpDataSource = new ComboPooledDataSource();
cpDataSource.setDriverClass(DBClassName);
cpDataSource.setJdbcUrl(DBUrl);
cpDataSource.setUser(DBUser);
cpDataSource.setPassword(DBPassword);
cpDataSource.setInitialPoolSize(3); //初始鏈接數
cpDataSource.setMinPoolSize(0); //最小鏈接數
cpDataSource.setAcquireIncrement(5); //當鏈接池中的鏈接耗盡的時候c3p0一次同時獲取的鏈接數。Default: 3
cpDataSource.setMaxPoolSize(20); //最大鏈接數
/**
* (單位:毫秒)當鏈接池用完時客戶端調用getConnection()後等待獲取新鏈接的時間,超時後將拋出
* SQLException,如設爲0則無限期等待。單位毫秒。Default: 0
*/
cpDataSource.setCheckoutTimeout(1000*60);
cpDataSource.setMaxIdleTime(60); //(單位:秒) 最大空閒時間,60秒內未使用則鏈接被丟棄。若爲0則永不丟棄。Default: 0
cpDataSource.setIdleConnectionTestPeriod(60); //(單位:秒) 每60秒檢查全部鏈接池中的空閒鏈接。Default: 0 (0:永遠不檢查)
cpDataSource.setAcquireRetryAttempts(30); //定義在從數據庫獲取新鏈接失敗後重復嘗試的次數。Default: 30
cpDataSource.setAcquireRetryDelay(1000); //(單位:毫秒) 兩次鏈接中間隔時間,單位毫秒。Default: 1000
cpDataSource.setAutoCommitOnClose(false); //鏈接關閉時默認將全部未提交的操做回滾。Default: false
/**
* 獲取鏈接失敗將會引發全部等待鏈接池來獲取鏈接的線程拋出異常。可是數據源仍有效
* 保留,並在下次調用getConnection()的時候繼續嘗試獲取鏈接。若是設爲true,那麼在嘗試
* 獲取鏈接失敗後該數據源將申明已斷開並永久關閉。Default: false
*/
cpDataSource.setBreakAfterAcquireFailure(false);
}
catch (Exception e)
{
e.printStackTrace();
}
}