使用BasicDataSource关闭非活动会话

时间:2011-06-07 15:03:20

标签: java oracle jdbc

在我们的开发数据库Oracle 11g R2中,我们注意到使用BasicDataSource通过我们的Java应用程序打开的连接将无限期地保持打开状态。理想情况下,我们希望每个应用程序实例最多包含5个并发数据库会话,但是,如果会话处于非活动状态超过60秒,则会话应关闭以减少对数据库的内存影响。

使用以下代码设置我们的BasicDataSource,我可以看到我们保持在5数据库会话上限,但我们似乎永远不会清除非活动会话:

BasicDataSource ds = new BasicDataSource();
ds.setUrl(getUrlAsString());
ds.setDriverClassName("oracle.jdbc.driver.OracleDriver");        
ds.setUsername(getClientOracleUserAsString());              
ds.setPassword(getClientOraclePasswordAsString());
ds.setMinIdle(0);
ds.setMaxIdle(5);
ds.setMinEvictableIdleTimeMillis(60000);

1 个答案:

答案 0 :(得分:0)

尝试设置以下内容:

//Sets the number of connections tested during the eviction process*
numTestsPerEvictionRun=5

//Sets whether idle object evictor will validate connections*
setTestWhileIdle=true

//Sets the validation query to run to validate a connection*
setValidationQuery=SELECT 1

也可能是您没有在应用程序层中正确关闭连接。