} catch (IllegalAclearcase/" target="_blank" >ccessException e) {
// TODO自動生成 catch 塊
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO自動生成 catch 塊
e.printStackTrace();
} catch (SQLException e) {
// TODO自動生成 catch 塊
e.printStackTrace();
}
return conn;
}
}
注意:利用getConnection()方法得到的Connection,程序員很習慣地調用conn.close()方法關閉了數據庫連接,那么上述的數據庫連接機制便形同虛設。在調用conn.close()方法方法時如何調用releaseConnection()方法?這是關鍵。這里,我們使用Proxy模式和java反射機制。
public synchronized Connection getConnection() {
Connection conn = null;
if (pools == null) {
pools = new Vector();
}
if (pools.isEmpty()) {
conn = createConnection();
} else {
int last_idx = pools.size() - 1;
conn = (Connection) pools.get(last_idx);
pools.remove(last_idx);
}
原文轉自:http://www.anti-gravitydesign.com