无法验证连接池连接包装物理连接

时间:2021-03-15 11:59:18

标签: java spring-mvc jdbc connection-pooling hikaricp

我正在处理一个 Spring MVC 项目(Spring 版本 4.1.1),我将 HikariCP 配置为连接池管理器。当应用程序一段时间不使用时,Hikari 似乎开始失去与 DB 的连接,当我尝试连接到 Web 应用程序时,Tomcat 显示如下:

com.zaxxer.hikari.pool.PoolBase - HikariPool-8 - Failed to validate connection Pooled connection wrapping physical connection org.postgresql.jdbc.PgConnection@2bb0433a (Connection has been closed.). Possibily consider using a shorter maxLifetime value.

这是我的 Spring 的 Hikari 数据源配置:

<!-- Initialize DataSource com.zaxxer.hikari.HikariDataSource -->
<bean id="hikariConfig" class="com.zaxxer.hikari.HikariDataSource">
    <property name="dataSourceClassName" value="org.postgresql.ds.PGPoolingDataSource" />
    
    <property name="dataSourceProperties">
        <props>
            <prop key="url">${jdbc.url}</prop>
            <prop key="user">${jdbc.username}</prop>
            <prop key="password">${jdbc.password}</prop>
        </props>
    </property>
    
    <property name="maxLifetime" value="120000" />
    <property name="connectionTestQuery" value="SELECT 1" />
    <property name="maximumPoolSize" value="10" />
</bean>

<!-- HikariCP configuration -->
<bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource" destroy-method="close">
    <constructor-arg ref="hikariConfig" />
</bean>

我已经按照堆栈跟踪的建议尝试使用较短的 maxLifetime 值,但没有任何区别。

有人可以帮我解决这个问题吗?我做错了什么?

其他有用信息:

  • HikariCP 版本:3.3.1
  • Java 版本:1.8
  • Tomcat 版本:8.5
  • Spring MVC 版本:4.1.1
  • JDBC PostgreSQL 驱动程序版本:42.2.16
  • 数据库管理系统版本:PostgreSQL 13.0

0 个答案:

没有答案