我是在init方法中取连接,destroy中释放连接,但是发现servlet执行后一直有效,也就是一直占着连接(没有执行destroy方法),很快达到了maxactive数目而使访问出错。
难道要放到doPost(doGet)中?
doPost(...){
取连接;
操作数据库;
释放连接;
}
难道要这样?
难道要放到doPost(doGet)中?
doPost(...){
取连接;
操作数据库;
释放连接;
}
难道要这样?
Connection conn;
try{
conn = getConnection();//operation
}catch(Exception e){
//
}finally {
conn.close();
}
你把連接寫在init方法中,
那么,一直到你的servlet生命周期結束才會釋放掉你的數據庫連接,
肯定是达到了最大連接数目啦.
destroy是銷毀servlet對象記住,只有一個servlet對象
init/destory是服务器(准确地说是web应用)启动(或者该单例被创建)/销毁时调用的,只此一次。和doXxxx这种service方法无关
这样你就会知道为什么不会close连接了
try {
取连接;
操作数据库;
}finally {
释放连接;
}
}这个是最标准的做法,在init和destroy中获取和释放是不正确的做法