应用程序执行完成后,查询数据库连接还有961个,应用程序开始跑之前只有300个左右。
SQL> select count(*) from v$session;
 
  COUNT(*)
----------
       961Spring连接池已经配置自动回收了:
removeAbandoned=true;
removeAbandonedTimeout=30只有重启websphere或者应用程序,连接数才会降下来,请问是不是spring连接池的问题?

解决方案 »

  1.   

    http://caleb-520.javaeye.com/blog/659997
    dbcp连接无法释放,解决如下: 
           <property name="maxActive" value="100"/> 
            <property name="maxIdle" value="20"/> 
            <property name="maxWait" value="1000"/> 
            <property name="defaultAutoCommit" value="false"/> 
            <property name="removeAbandoned" value="true"/> 
            <property name="removeAbandonedTimeout" value="120"/> 配置属性文件时和参数详解: #连接池的最大数据库连接数,设为0 表示无限制。   
    dipatch.jdbc.maxActive=40    
    #数据库连接的最大空闲时间。超过此空闲时间,数据库连接将被标记为不可用,然后被释放。设为0 表示无限制。   
    dipatch.jdbc.maxIdle=30    
    #最大建立连接等待时间。如果超过此时间将接到异常。设为-1 表示无限制。   
    dipatch.jdbc.maxWait=10000    
    dipatch.jdbc.defaultAutoCommit=true    
    #回收被遗弃的(一般是忘了释放的)数据库连接到连接池中。   
    dipatch.jdbc.removeAbandoned=true    
    # 数据库连接过多长时间不用将被视为被遗弃而收回连接池中。   
    dipatch.jdbc.removeAbandonedTimeout=30    
    # 将被遗弃的数据库连接的回收记入日志。    
    dipatch.jdbc.logAbandoned=true 
      

  2.   

    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"        
            destroy-method="close">        
      

  3.   


    我的配置信息:
    <bean id="DataSource"
    class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
    <property name="driverClassName">
    <value>oracle.jdbc.driver.OracleDriver</value>
    </property>
    <property name="url">
    <value>${crmDatabase}</value>
    </property>
    <property name="username">
    <value>${crmUser}</value>
    </property>
    <property name="password">
    <value>${crmPasswd}</value>
    </property>
    <property name="maxActive">
    <value>${crmmaxActive}</value>
    </property>
    <property name="maxIdle">
    <value>${crmmaxIdle}</value>
    </property>
    <property name="minIdle">
    <value>${crmminIdle}</value>
    </property>
    <property name="removeAbandonedTimeout">
    <value>${removeAbandonedTimeout}</value>
    </property>
    <property name="removeAbandoned">
    <value>true</value>
    </property>
    <property name="initialSize">
    <value>${crminitialSize}</value>
    </property> <property name="accessToUnderlyingConnectionAllowed">
    <value>true</value>
    </property>
    </bean> 
      

  4.   


    程序没有关闭,我是使用SPRING JDBCTEMPLATE进行数据库操作的