2017-06-02 7 views
0

私たちのシステムはMS SQL ServerからMySQLに移行しており、私たちのアプリケーションにはスプリングブートを使用しています。私たちのアプリケーションに直面"接続はすでに閉じられています"いくつかの日のSQLExceptionと私たちはアプリケーションを再起動するために使用し、それはうまく動作し始めたが、ここでは、ここでSpringブートとMySQL用の接続はすでに終了しています

が接続XFORのconfigsのプロパティです:

database.jndiName=jdbc/SmartData 
database.driverClassName=com.mysql.jdbc.Driver 
database.url=XXXXXX 
database.username=XXXXXXXXXXX 
database.password=XXXXXX 
database.factory=org.apache.tomcat.jdbc.pool.DataSourceFactory 
database.initialSize=2 
database.logAbandoned=false 
database.maxIdle=4 
database.maxWaitMillis=29998 
database.minEvictableIdleTimeMillis=3000 
database.minIdle=2 
database.removeAbandonedTimeout=6 
database.removeAbandoned=true 
database.testOnBorrow=true 
database.testOnReturn=false 
database.testWhileIdle=false 
database.timeBetweenEvictionRunsMillis=3000 
database.validationQuery=SELECT 2+2 
database.maxActive=10 
database.validationInterval=3000 
+0

を選択?多分あなたはそれを静的なものとして定義したので、このエラーが発生しています。 –

+0

接続にプールされたデータソースを使用しているため、アプリケーションで許容される制限よりも多くの接続が作成されている可能性があります。制限に達した後で接続を許可しない可能性があります。 ; –

+0

はあなたの設定で、これは\t \t \t resource.setProperty( "jdbcInterceptors"、 "org.apache.tomcat.jdbc.pool.interceptor.ConnectionState" に設定されている我々のコードで jdbcInterceptors = "ResetAbandonedTimer" –

答えて

0
あなたがここにSO上で同様の記事からたどることができ

いくつかの提案、例えば検証検証クエリは、あなたのケースで使用されていないSELECT 1のようです。

異なるデータベースの検証クエリの使用方法を示すSOのthisの質問を参照してください。あなたのために働くことができ

database.validationQuery=SELECT 1 

もう一つの提案は、より高い値に設定することができ、または他の小さな値が閉じるようにセッションを強制しますconnectionTimeutパラメータです。

connectionTimeout="300000" 

これらの提案が役立つことを願っています!

0

外部設定の場合は、application.propertiesファイルまたは設定ファイルに以下のプロパティを追加してみてください。
database.testオンボロー=真
database.validation-クエリ=どのようにあなたがあなたの接続を取得しない1

関連する問題