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

我们正在将Hibernate用于ORM。

我们偶尔会收到这样的错误消息:“ORA-02396:超出最大空闲时间,请重新连接”。

我尝试将属性添加到名为“removeAbandoned”(true)和“removeAbandondedTimeout”(120)的DBCP BasicDataSource无效。

任何帮助,将不胜感激。如果我需要提供更多信息,请让我知道-我对连接池的内部运作等不甚了解。

最佳答案

在配置数据源时,尝试将testWhileIdle属性设置为true。您还需要一个测试查询-对于Oracle,像select 1 from dual这样的东西就足够了。

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

如果您不介意在以后需要它们时重新创建它们,则还可以考虑撤消变为空闲的连接。看一下documentation,其中描述了minEvictableIdleTimeMillistimeBetweenEvictionRunsMillismaxIdle / minIdle属性的配置选项。

10-07 18:55
查看更多