使用Oracle DB在Java Web应用程序中超过最大空闲时间

Rin*_*oul 3 java oracle apache-commons-dbcp

我有一个Java Web应用程序连接到另一台机器上运行的Oracle数据库(不确定这是否相关).我正在使用DBCP进行连接池.Web应用程序在JBoss 4.2.2中运行,我们将数据源定义为Spring中的bean.

我们正在使用Hibernate进行ORM.

我们偶尔会遇到错误:"ORA-02396:超过最大空闲时间,请再次连接".

我尝试将名为"removeAbandoned"(true)和"removeAbandondedTimeout"(120)的DBCP BasicDataSource添加属性无效.

任何帮助,将不胜感激.如果我需要提供更多信息,请告诉我 - 我不是那么了解连接池的内部工作等等...

ser*_*g10 7

尝试在配置数据源时将testWhileIdle属性设置为true.您还需要一个测试查询 - 对于Oracle来说,select 1 from dual就足够了.

这将提示dbcp轻推任何空闲连接以保持新鲜.

如果你不介意以后需要重新创建它们,你也可以考虑驱逐变为空闲的连接.有看文档描述了配置选项minEvictableIdleTimeMillis,timeBetweenEvictionRunsMillis以及maxIdle/ minIdle性能.