20

データベース接続にTomcat jdbc-poolを使用する Java バックエンドを備えた Web アプリがあります。これはうまくいきます。

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

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

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

4

3 に答える 3

20

これがあなたの問題かどうかは 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"
            />
于 2012-07-02T22:48:00.017 に答える
1

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

以下は、参照用に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 アプリケーション サーバーのデータソースの自動再接続 にあります。

于 2016-05-20T23:17:52.933 に答える