我正在处理一个 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 值,但没有任何区别。
有人可以帮我解决这个问题吗?我做错了什么?
其他有用信息: