お世話になっております。
java->ORACLEのWebアプリケーションにおいて、下記コードのような処理でDB接続を行っています。
ここで以下の問題があります。
- 60分以上アイドル状態にした上で実行すると、
「java.sql.SQLRecoverableException: クローズされた接続です」
の例外が発生します。 - 1分に1回程度実行していると、エラーは発生しません。
60分以上アイドルしても、正常動作させたいです。
いくつか対策があると考えております。
(Connection.isClosed()は効果がありませんでした)
- クローズされた接続かをjavaが認識する。
- クローズした接続を取得しないようにする。
対策のための手段や、解決の糸口になるような情報があればご教示いただけないでしょうか。
java
1try { 2 Session session = this.sessionFactory.getCurrentSession(); 3 conn = session.connection(); 4 ps = conn.prepareStatement("SELECT文"); // アイドル後に接続するとここでエラーになる 5 rs = ps.executeQuery(); 6 while (rs.next()) { 7 ; // 読み出す処理 8 } 9 rs.close(); 10 ps.close(); 11} finally{ 12 if(conn != null) { 13 conn.close(); 14 } 15}
xml
1hibernate.cfg.xml: 2コネクションをプールしています。 3(c3p0は使用していません) 4<property name="hibernate.dialect">org.hibernate.dialect.Oracle12cDialect</property> 5<property name="hibernate.connection.pool_size">10</property>
環境:
- DB:ORACLE 12c
- java:1.8
- jdbc jar:ojdbc7.jar
- APサーバ:jBoss(wildfly10)
- OS:Linux
- DBサーバとAPサーバは別ですが、間にファイアウォールなどはありません。

回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/03/01 03:22