私の spring-hibernate アプリケーションではorg.apache.tomcat.jdbc.pool.DataSource
、接続プーリングに使用しています。サーバーを起動すると、DB への接続が確立されていることがわかります。mysql サービスが停止すると、サーバーは接続が失われたというエラーをスローし始めます。mysql サービスが再び開始されたら、DB への接続を再確立するためにサーバーを再起動する必要がありますか? autoReconnect=true パラメータを指定した後でも、アプリケーションは DB への接続を確立できません。
質問する
999 次
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"/>
于 2012-10-28T19:31:02.580 に答える
0
dbcp と c3p0 を使ってみました。dbcp に特定の問題が見つかりましたが、c3p0 は正常に動作しています。
autoReconnect=true
これで、アプリケーションは MySQL DB に自動的に再接続できるようになりました。
于 2012-10-14T17:02:04.367 に答える