我是在init方法中取连接,destroy中释放连接,但是发现servlet执行后一直有效,也就是一直占着连接(没有执行destroy方法),很快达到了maxactive数目而使访问出错。
难道要放到doPost(doGet)中?
doPost(...){
  取连接;
   操作数据库;
  释放连接;
}
难道要这样?

解决方案 »

  1.   

    数据库操作完立即释放,即:
    Connection conn;
    try{
    conn = getConnection();//operation
    }catch(Exception e){
    //
    }finally {
    conn.close();
    }
      

  2.   

    那init跟destroy都是处理什么的?
      

  3.   

    從頭到尾只有一個servlet的對象,
    你把連接寫在init方法中,
    那么,一直到你的servlet生命周期結束才會釋放掉你的數據庫連接,
    肯定是达到了最大連接数目啦.
      

  4.   

    init是初始化servlet對象
    destroy是銷毀servlet對象記住,只有一個servlet對象
      

  5.   

    晕,这位兄台也是2星了j2ee很多东西都是单例的,比如serlvet/jsp 
    init/destory是服务器(准确地说是web应用)启动(或者该单例被创建)/销毁时调用的,只此一次。和doXxxx这种service方法无关
      

  6.   

    楼主应该先去看看servlet的生命周期
    这样你就会知道为什么不会close连接了
      

  7.   

    doPost(...){
      try {
       取连接;
       操作数据库;
      }finally {
       释放连接;
      }
    }这个是最标准的做法,在init和destroy中获取和释放是不正确的做法