posts - 48,  comments - 14,  trackbacks - 0
    在工作中碰到这样一个问题,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 逍遥草 阅读(778) 评论(2)  编辑 收藏 引用 所属分类: weblogic+structs
只有注册用户登录后才能发表评论。