環境: Grails 2.0.3、Quartz プラグイン 1.0-RC2
データベースから値を読み取る簡単なクォーツジョブがあります。8 回目の実行で、データベースからの読み取り中にジョブがフリーズします。DB から値を取得する Web ページもあります。ジョブが待機状態になると、Web ページから値を読み取ろうとしてもフリーズします。
環境: Grails 2.0.3、Quartz プラグイン 1.0-RC2
データベースから値を読み取る簡単なクォーツジョブがあります。8 回目の実行で、データベースからの読み取り中にジョブがフリーズします。DB から値を取得する Web ページもあります。ジョブが待機状態になると、Web ページから値を読み取ろうとしてもフリーズします。
環境: Grails 2.2.0、Quartz プラグイン 1.0-RC5
Quartz-1.0-RC5 を使用して同じ問題に遭遇しました。
SessionBinderJobListener
回避策として、クラスを Quartz-0.4.2のクラスに置き換え(パッケージのみを新しいものに変更)、ジョブは問題なく再び実行されます。そのため、persistenceInterceptor
Bean は接続を閉じたり、プールに戻したりしていないようです。org.codehaus.groovy.grails.orm.hibernate.support.HibernatePersistenceContextInterceptor
フラッシュと破棄に問題がある可能性があります。
org.quartz.threadPool.threadCount
プロパティのmaxActive よりもはるかに小さい場合dataSource
、問題は発生しない (おそらく各ジョブ スレッドが既に接続を取得している) か、時間がかかるだけです。
データソース接続プールのデフォルトサイズは8であるため、接続を適切に閉じてプールに戻すことができない可能性があります。
Quartz プラグイン バージョン 1.0.1 でも同じことが見られます。8 回目の実行で、Job ワーカーと Tomcat ワーカーの両方がフリーズします。ジョブのブロックでwithSession
Hibernateを使用 して呼び出します。それはトリックをしました。session.disconnect()
finally {}
def execute() {
def hsession
try {
DomainObject.withSession { ses ->
hsession = ses
....
}
} catch(Exception e) {
//log it etc.
} finally {
hsession?.disconnect()
}
}