我在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();
}