JDBC连接池:数据库重新启动后不会回收连接

时间:2015-09-26 02:43:24

标签: java postgresql tomcat jdbc

我在setMaxActive(8)上添加了org.apache.tomcat.jdbc.pool.PoolProperties。每次数据库重新启动时,应用程序都将无法使用,因为已建立的连接仍然存在。我收到以下错误:

  

org.postgresql.util.PSQLException:此连接已关闭

我尝试在游泳池上使用其他一些设置无济于事......

谢谢你的帮助!

2 个答案:

答案 0 :(得分:1)

使用validationQuery属性,该属性将在返回连接之前检查连接是否有效。

参考:Tomcat 6 JDBC Connection Pool

此属性适用于最新的tomcat版本。

答案 1 :(得分:1)

请看这个链接:

  

Postgres connection has been closed error in Spring Boot

     

非常有效的问题,这个问题通常面临很多问题。该   当网络连接丢失时,通常会发生异常   池和数据库(大部分时间由于重启)。看着   您指定的堆栈跟踪,很明显您正在使用   jdbc池来获取连接。 JDBC池具有微调选项   有关最新情况的各种连接池设置和日志详细信息   在游泳池内。

     

您可以参考游泳池上的详细Apache documentation   配置以指定放弃超时

Check for removeAbandoned, removeAbandonedTimeout, logAbandoned parameters
     

此外,您可以进一步使用其他属性   收紧验证

Use testXXX and validationQuery for connection validity.

我自己的0.02美元:使用这两个参数:

validationQuery=<TEST SQL>
testOnBorrow=true