在工作中碰到这样一个问题,weblogic正常启动后,connection可以自由获取,但是在运行一段时间后,也许几小时,也许几天,weblogic服务就宕掉了。结果就是无法获取connection,但是在weblogic的console上,connection pools-->Monitoring上显示的却是还有剩余。上网查到类似问题,但只有如下的回答,并没有真正说到问题所在啊。
statement是查询语句,connection是和数据库的连接.
释放顺序如下.
finally{
stmt.close();
conn.close();
}
对于系统中使用到比较耗费资源的东西,比如说:connection,jndi等等,往往是需要缓存,一次获得,重复使用的原则。
对于connection来说,它本身是一个接口,ojdbc14.jar或classes12.zip等等都实现了这个接口,实现的close方法大都是强制关闭。weblogic的连接池的实现不一样,它的close并不是真正的关闭而是返回给连接池。所以在程序的结尾处一定要记住返回给连接池。
代码如下
Connection conn = null;
ResultSet rs = null;
Statement stmt = null;
try{
//commit
}catch(Exception e){
//rollback;
throw e;
}finally{
if(conn!=null) conn.close();
if(rs!=null) rs.close();
if(stmt!=null) rs.close();
}
难道是statement没有释放,但是我已经释放了connection,这样不行?又或是我的connection pool size设置过小,但我已经改到200 了。不知道这个问题如何解决,头痛ing……
posted on 2005-09-27 10:19
逍遥草 阅读(775)
评论(2) 编辑 收藏 引用 所属分类:
weblogic+structs