程序特殊情况,有个地方不得不getSqlMap后,getDatasouce().getConnection(),这样用完之后,取得的conn要显示调用close关闭吗开始没有显示关闭,因为连接池是在web容器中配置的,datasouce是JNDI配置的,觉得显示close关闭了,会不会有个连接被关闭的sqlmap被spring使用,以后依赖注入时把这个sqlmap注入。但系统出现了一段时间后连不上数据库的问题,怀疑是程序有连接未释放,于是想到程序有个特殊的地方,就是用sqlMap来getDatasouce().getConnection()来取得conn,然后用标准的jdbc方式访问了数据库,但是没有close这个conn。脑子有点乱,可能没说清,大家多包涵

解决方案 »

  1.   

    那个连接是从sqlmap那里get出来的,而我的sqlmap是由spring控制注入的,我担心关了之后会有一个spring控制的连接被关闭的sqlmap,而spring不知道它的连接已经关闭了,还注入给其他类。
      

  2.   

    spring如果沒有預檢機制,這種情況繼續注入就會拋異常
      

  3.   

    getDatasouce().getConnection() 读取当前connnect之前需要开启事物,否则取不到返回null,用完需要关闭事物.
    Connection不用也不能关。
      

  4.   

    连接是由谁管理的,由spirng管理的不用关闭connection。
    给你两种方法测试一下。
    1.写两个sql,连接数据库,通过getDatasouce().getConnection()第一条连接完后,connection.close,
    第二条通过getDatasouce().getConnection()连接,执行sql会不会报错。
    2.如果是oracle,通过select t.username,count(1) from v$sessionn group by t.username;查看连接有没有被释放。