当前位置: 首页 > 知识库问答 >
问题:

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

潘英豪
2023-03-14

我有一个Java后端的Web应用程序,它使用Tomcat jdbc-pool进行数据库连接。这工作罚款。

然而,在将其导出到其他位置之前,我正在尝试万无一失,最近发生了一个场景,有人重新启动了SQL Server数据库服务,但没有重新启动Tomcat服务。这导致了SQLException:java。sql。SQLException:I/O错误:对等方重置连接:套接字写入错误,直到我重新启动Tomcat,迫使jdbc池数据源重新连接。

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

是否有人知道是否对此进行了某种配置,或者我是否应该在每次请求之前检查此条件?

共有3个答案

子车征
2023-03-14

再加上Natan Cox的回答

参考-http://tomcat.apache.org/tomcat-8.0-doc/jdbc-pool.html#Common_Attributes

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

与Geronimo相比,我仍然希望使用validationQuery

数据库验证查询注释

从INFORMATION_SCHEMA中选择1。SYSTEM_USERS

Oracle-从双字节中选择1

DB2-从sysibm中选择1。sysdummy1

mysql-选择1

microsoft SQL Server-选择1

postgresql-选择1

Ingres-选择1

德比-值1

H2-选择1

从rdb$数据库中选择1

不同数据库的参考-DBCP-validationQuery

韩彬
2023-03-14

在检查相同的问题时,我遇到了这篇文章,其中包含所有应用服务器的自动连接配置。

下面是我在tomcat中用于自动连接的配置,供参考。

    <Resource auth="Container"
driverClassName="oracle.jdbc.OracleDriver"
initialSize="5"
maxActive="120"
maxIdle="5"
maxWait="5000"
name="jdbc/oracle/myds"
password="secret"
poolPreparedStatements="true"
type="javax.sql.DataSource"
url="jdbc:oracle:thin:@DBHOSTNAME:1521/ServiceName"
username="testuser"
validationQuery="select 1 from tab"
testOnBorrow="true"/>

所有应用服务器的完整自动连接配置可以在Java应用服务器中的Datasource autoreconnect中找到。

蒋飞捷
2023-03-14

无法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"
            />
 类似资料:
  • 我有一个Spring Boot(1.5.17)Web应用程序,其Tomcat JDBC连接池(8.5.34)配置如下: 现在,如果我重新启动数据库服务器(SQL server),我会得到exception,连接池未恢复。 那么我做错了什么?

  • 我添加了org.apache.tomcat.jdbc.pool.PoolProperties。每次DB重新启动时,应用程序都是不可用的,因为已建立的连接仍然存在。我得到以下错误: 组织。postgresql。util。PSQLException:此连接已关闭 我试着在游泳池上使用一些其他设置,但没有效果。。。 谢谢你的帮助!

  • 我将Spring Boot和数据源与jdbc模板(postgres)一起使用。在我的服务中,我做到了 以及以后的

  • 问题内容: 我有一个客户端,一个服务器和一个数据库。客户端通过EJB远程接口与服务器通信。作为服务器-我使用Wildfly 8.2.0。作为数据库- 我使用MySQL。服务器通过JPA /休眠与MySQL通信。当我关闭MySQL服务器时,Wildfly当然会引发异常。但是,当我再次打开MySQL时- Wildfly仍然会抛出相同的错误。我必须关闭Wildfly,然后重新将Wildfly重新连接到数

  • 尝试使用cmd连接SQL数据库时出错。这是我的节目。我使用jdk 6版本来编译和运行,谢谢。 错误:

  • 问题:当我的spring应用程序运行时,同时数据库服务器停止/重新启动,然后db连接丢失并且从未恢复。 com.mysql.jdbc.exceptions.jdbc4.mysqlnontransientConnectionException:连接关闭后不允许任何操作。 服务mysql启动 问题:如何告诉spring在连接丢失后自动重新连接? 这是我的配置: