【发布时间】:2011-06-07 15:03:19
【问题描述】:
在我们的开发数据库 Oracle 11g R2 中,我们注意到通过我们的 Java 应用程序使用 BasicDataSource 打开的连接会无限期地保持打开状态。理想情况下,我们希望每个应用程序实例最多有 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);
【问题讨论】:
-
是否将 MaxIdle 设置为 0 无法实现您想要的行为? (即它不尊重 MinEvictableIdleTimeMillis 吗?)