我有一个
Java Web应用程序连接到另一台机器上运行的Oracle数据库(不确定这是否相关).我正在使用DBCP进行连接池. Web应用程序在JBoss 4.2.2中运行,我们将数据源定义为Spring中的bean.
我们正在使用Hibernate进行ORM.
我们偶尔会遇到错误:“ORA-02396:超过最大空闲时间,请再次连接”.
我尝试将名为“removeAbandoned”(true)和“removeAbandondedTimeout”(120)的DBCP BasicDataSource添加属性无效.
任何帮助,将不胜感激.如果我需要提供更多信息,请告诉我 – 我不是那么了解连接池的内部工作等等…
解决方法
配置数据源时,请尝试将testWhileIdle属性设置为true.您还需要一个测试查询 – 对于Oracle,类似于双精度1的选项就足够了.
这将提示dbcp轻推任何空闲连接以保持新鲜.
如果您不介意以后需要重新创建它们,也可以考虑逐出空闲的连接.查看描述minEvictableIdleTimeMillis,timeBetweenEvictionRunsMillis和maxIdle / minIdle属性的配置选项的documentation.