当前位置: 首页 > 知识库问答 >
问题:

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

嵇昱
2023-03-14

我添加了setMaxActive(8)org.apache.tomcat.jdbc.pool.PoolProperties。每次DB重新启动时,应用程序都是不可用的,因为已建立的连接仍然存在。我得到以下错误:

组织。postgresql。util。PSQLException:此连接已关闭

我试着在游泳池上使用一些其他设置,但没有效果。。。

谢谢你的帮助!

共有2个答案

曾修真
2023-03-14

看看这个链接:

Postgres连接在Spring Boot中关闭错误

这是一个非常有效的问题,很多人通常都会遇到这个问题。当池和数据库之间的网络连接丢失时(大部分时间是由于重新启动),通常会发生异常。查看您指定的堆栈跟踪,很明显您正在使用jdbc池来获取连接。JDBC池可以选择微调各种连接池设置,并记录池内发生的事情的详细信息。

您可以参考有关池配置的详细Apache文档来指定放弃超时

Check for removeAbandoned, removeAbandonedTimeout, logAbandoned parameters

此外,您可以使用其他属性来进一步加强验证

Use testXXX and validationQuery for connection validity.

我自己的$0.02:使用以下两个参数:

validationQuery=<TEST SQL>
testOnBorrow=true
姜聪
2023-03-14

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

参考:Tomcat 6 JDBC连接池

此属性在最新的tomcat版本中可用。

 类似资料:
  • 我有一个Spring Boot(1.5.17)Web应用程序,其Tomcat JDBC连接池(8.5.34)配置如下: 现在,如果我重新启动数据库服务器(SQL server),我会得到exception,连接池未恢复。 那么我做错了什么?

  • 我有一个Java后端的Web应用程序,它使用Tomcat jdbc-pool进行数据库连接。这工作罚款。 然而,在将其导出到其他位置之前,我正在尝试万无一失,最近发生了一个场景,有人重新启动了SQL Server数据库服务,但没有重新启动Tomcat服务。这导致了SQLException:,直到我重新启动Tomcat,迫使jdbc池数据源重新连接。 我在Tomcat jdbc池文档中寻找某种配置,

  • 主要内容:1. 导入JDBC包,2. 注册JDBC驱动程序,数据库URL配置,创建连接对象,使用具有用户名和密码的数据库URL,关闭JDBC连接安装相应的驱动程序后,现在是时候来学习使用JDBC建立数据库连接了。 建立JDBC连接所涉及的编程相当简单。 以下是基本的四个步骤 - 导入JDBC包:使用Java语言的语句在Java代码开头位置导入所需的类。 注册JDBC驱动程序:使JVM将所需的驱动程序实现加载到内存中,从而可以满足JDBC请求。 数据库URL配置:创建一个正确格式化的地址,指向要连

  • Tomcat在使用后不释放连接的原因可能是什么? 这是我的配置

  • 我们正在使用tomcat jdbc连接池与Oracle数据库。最近,我们遇到了JDBC瘦客户机的Oracle数据库中存在太多非活动会话的问题。 有人能帮我们吗?它为什么会导致数据库中的非活动会话,以及对此的解决方案是什么。