2

私の spring-hibernate アプリケーションではorg.apache.tomcat.jdbc.pool.DataSource、接続プーリングに使用しています。サーバーを起動すると、DB への接続が確立されていることがわかります。mysql サービスが停止すると、サーバーは接続が失われたというエラーをスローし始めます。mysql サービスが再び開始されたら、DB への接続を再確立するためにサーバーを再起動する必要がありますか? autoReconnect=true パラメータを指定した後でも、アプリケーションは DB への接続を確立できません。

4

2 に答える 2

1

次のパラメータを追加してみてください:

validationQuery="SELECT 1"
testOnBorrow="true"

仕組み: 接続プールは、接続を返す前に validationQuery の実行を試みます。validationQuesry が失敗した場合、dbcp は接続を破棄し、新しい接続を作成して返します。

次に例を示します。

<Resource   name="jdbc/cooldatabase"
            description="Strandls.com license database"
            auth="Container"
            type="javax.sql.DataSource"
            factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
            driverClassName="com.mysql.jdbc.Driver"
            url="jdbc:mysql://localhost:3306/cooldatabase?autoReconnect=true"
            username="cooluser"
            password="coolpassword"
            initialSize="0"
            maxActive="20"
            maxIdle="10"
            minIdle="0"
            maxWait="-1"
            validationQuery="SELECT 1"
            testOnBorrow="true"
            poolPreparedStatements="true"
            removeAbandoned="true"
            removeAbandonedTimeout="60"
            logAbandoned="true"/>

完全な詳細: http://amitcodes.com/2008/07/26/16/

于 2012-10-28T19:31:02.580 に答える
0

dbcp と c3p0 を使ってみました。dbcp に特定の問題が見つかりましたが、c3p0 は正常に動作しています。

autoReconnect=true

これで、アプリケーションは MySQL DB に自動的に再接続できるようになりました。

于 2012-10-14T17:02:04.367 に答える