日期:2014-05-17  浏览次数:20755 次

我在tomcat里设置了一个调度任务,每隔一段时间建立一个和数据库的连接读值,然后关闭连接。但是过一会连接数就满了?
我用的调度任务的方法见这个连接http://wenku.baidu.com/view/1e10172ce2bd960590c677f8.html

这个调度方法就是在tomcat的web.xml文件里做设置,每隔几分钟就执行一个java类。这个java类里有个进程。我在这个进程里初始化数据库,然后做查询,再关闭连接。具体操作见下:



  public void run() { 
    Calendar cal = Calendar.getInstance(); 
    if (!isRunning) { 
        isRunning = true; 
        context.log("开始执行任务"); 
        DB_exeu dbeu = new DB_exeu();
        dbeu.conn();
dbeu.exeu_sql();
        isRunning = false;
        context.log("任务结束"); 
    }
    else { 
      context.log("上一次任务未结束"); 
    } 
  } 




dbeu.conn()函数包括connectionPool = new BoneCP(config);和connection = connectionPool.getConnection();等连接建立语句

dbeu.exeu_sql()函数包括rs = stmt.executeQuery(sql_update);和rs = stmt.executeQuery(sql); rs.close(); stmt.close(); connection.close();等语句

请问为啥连接数不断增加呢? 

期待高手啊!!!
------最佳解决方案--------------------
你配置的是连接池吧。。。如果你配置10个连接。。它会一直保持在10个连接。。
你所谓的关闭只是把他释放到连接池里边。。。表示空闲。。但实际上他还是连接着DB。。
------其他解决方案--------------------
大哥  你用完了木有关闭  dbeu.close();
------其他解决方案--------------------
我那个dbeu.exeu_sql()里有 connection.close();

我每次都关闭了,怎么连接数不见减少呢?
每30秒都执行一次dbeu.conn和dbeu.exeu_sql()函数
dbeu.conn()函数里代码如下:

try {
connectionPool = new BoneCP(config);
} catch (SQLException e) {
e.printStackTrace();
}
try {
connection = connectionPool.getConnection();
} catch (SQLException e) {
e.printStackTrace();
}
try {
stmt = connection.createStatement();
} catch (SQLException e) {
e.printStackTrace();
}


dbeu.exeu_sql()函数里代码如下:

try {
rs = stmt.executeQuery(sql_update);
rs.close();
stmt.close();
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}