web-dev-qa-db-ja.com

データベースの再起動後にjdbcプールデータソースの再接続を試みます

データベース接続に Tomcat jdbc-pool を使用するJavaバックエンドのWebアプリがあります。これは正常に機能します。

ただし、他の場所にエクスポートする前に確実に実行しようとしています。最近、誰かがSQL Serverデータベースサービスを再起動したが、Tomcatサービスを再起動しなかったというシナリオが発生しました。これによりSQLExceptionが発生しました:Java.sql.SQLException: I/O Error: Connection reset by peer: socket write error Tomcatを再起動し、jdbc-poolデータソースを強制的に再接続するまで。

Tomcat jdbc-pool docsで何らかの構成を探して、データソースに再接続を試みるように指示しましたが、何も見つかりませんでした。

これに何らかの構成があるかどうか誰かが知っていますか、または各要求の前にこの条件を確認する必要がありますか?

15
vanderwyst

これがあなたの問題であるかどうかは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"
            />
16
Natan Cox

NatanCoxの答えに追加するだけです

参照- 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を使用したい

データベースvalidationQuery notes

hsqldb-select 1 from INFORMATION_SCHEMA.SYSTEM_USERS

Oracle-select 1 from dual

DB2-select 1 from sysibm.sysdummy1

mysql-select 1

Microsoft SQL Server-select 1

postgresql-select 1

イングレス-select 1

derby-values 1

H2-select 1

ファイヤーバード-select 1 from rdb$database

参照- DBCP-さまざまなデータベースのvalidationQuery

1
Indu Devanath

同じ問題をチェックしているときに、すべてのアプリサーバーの自動接続構成があるこの投稿に出くわしました。

以下は、参考のために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"/>

すべてのアプリサーバーの完全な自動接続構成は、ここにあります Datasource autoreconnect in Java Application Servers

1
user1472187