尝试在数据库重新启动后重新连接jdbc池数据源

Aci*_*ier 15 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文档中寻找某种配置来告诉数据源尝试重新连接但我找不到任何东西.

有没有人知道是否有某种配置,或者我应该在每次请求之前检查这种情况吗?

Nat*_*Cox 16

不是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"
            />
Run Code Online (Sandbox Code Playgroud)

  • 我试图避免验证查询开销,并使用`timeBetweenEvictionRunsMillis ="5000"`和`minEvictableIdleTimeMillis ="5000"`和`minIdle ="0"`找到了同一链接中的另一个方法,它似乎可以处理问题,谢谢. (5认同)