java - 数据库重启后尝试重新连接 jdbc 池数据源

标签 java tomcat datasource jdbc-pool

我有一个带有 Java 后端的 Web 应用程序,它使用 Tomcat jdbc-pool用于数据库连接。这很好用。

但是我想在将它导出到其他位置之前尝试万无一失,最近出现了有人重新启动SQL Server 数据库服务但没有重新启动Tomcat 服务的情况。这导致了 SQLException:java.sql.SQLException: I/O Error: Connection reset by peer: socket write error 直到我重新启动 Tomcat,强制 jdbc-pool 数据源重新连接。

我在 Tomcat jdbc-pool 文档中寻找某种配置来告诉数据源尝试重新连接,但我找不到任何东西。

有谁知道这是否有某种配置,或者我应该在每次请求之前检查这个条件吗?

最佳答案

不能 100% 确定这是否是您的问题,但在 http://www.tomcatexpert.com/blog/2010/04/01/configuring-jdbc-pool-high-concurrency 上它说您可以将 testOnBorrowvalidationQuery 一起使用。

<Resource type="javax.sql.DataSource"
            ...
            testOnBorrow="true"
            validationQuery="SELECT 1"
            removeAbandoned="true"
            />

关于java - 数据库重启后尝试重新连接 jdbc 池数据源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11301707/

相关文章:

java - eclipse中tomcat错误404

tomcat - NGINX 错误 : upstream sent invalid chunked response while reading upstream

c# - 使用系统数据源而不是用户数据源作为 ODBC 连接字符串

java - 如何使用 Eclipse Indigo 在 Tomcat7 中部署 Web 应用程序?

postgresql - SQLNestedException : Cannot create PoolableConnectionFactory 的 tomcat7 和 postgresql

datasource - Tableau 数据限制

spring - 避免在 Tomcat 的 JNDI 数据源中使用明文密码

java - JTable 卡住列对齐问题(Java 1.6)

Java 7 nio FileAttributes 窗口

java - http请求得到的字符串会保存在常量池中吗?