我有一个带有 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 上它说您可以将 testOnBorrow
与 validationQuery
一起使用。
<Resource type="javax.sql.DataSource"
...
testOnBorrow="true"
validationQuery="SELECT 1"
removeAbandoned="true"
/>
关于java - 数据库重启后尝试重新连接 jdbc 池数据源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11301707/