DB接続がSpringの設定によって作成されたアプリケーションを持っています(その後、休止状態に移行しました)。以下は、Springファイルのデフォルトのパラメータです。SpringのDBCP接続が終了しました
<bean id="localDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName">
<value>${database.driver}</value>
</property>
<property name="url">
<value>${dbUrl}</value>
</property>
<property name="username">
<value>${dbUser}</value>
</property>
<property name="password">
<value>${dbPassword}</value>
</property>
</bean>
ただし、特定の環境では、特定の期間が経過するとネットワーク設定によってOracle DB接続が閉じられます。当初、接続の終了は、接続がアイドル状態であることが原因であると考えました。接続がアイドル状態にならないように定期的にサーバーにクエリを送信するためにvalidationQueryを追加しました。接続を設定する上でまだ閉じ取得された後も
<bean id="localDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName">
<value>${database.driver}</value>
</property>
<property name="url">
<value>$dbUrl</value>
</property>
<property name="username">
<value>$dbUser</value>
</property>
<property name="password">
<value>$dbPassword</value>
</property>
<property name="validationQuery">
<value>SELECT 1 FROM dual</value>
</property>
<property name="testWhileIdle">
<value>true</value>
</property>
<property name="testOnReturn">
<value>true</value>
</property>
<property name="timeBetweenEvictionRunsMillis">
<value>1000</value>
</property>
</bean>
- 。
- また、アプリケーションが2-3時間の間アイドル状態になると、検証クエリはサーバーで実行されなくなり、ネットワーク設定によって接続が閉じられることが観察されます。
私の質問は、validationQueryの保証を追加していますが、接続はアイドル状態ではありませんか? DB接続を行わない最初のログイン時にアプリケーションが失敗します。 2-3回の試行の後に動作します。ここで何が起こっているのか分かりません。
おかげで過去に問題がありました。 #2の私の質問では、実際にはminEvictableIdleTimeMillisが原因で、validationQueryが実行されませんでした。 – dRv