2

環境: Grails 2.0.3、Quartz プラグイン 1.0-RC2

データベースから値を読み取る簡単なクォーツジョブがあります。8 回目の実行で、データベースからの読み取り中にジョブがフリーズします。DB から値を取得する Web ページもあります。ジョブが待機状態になると、Web ページから値を読み取ろうとしてもフリーズします。

4

3 に答える 3

3

環境: Grails 2.2.0、Quartz プラグイン 1.0-RC5

Quartz-1.0-RC5 を使用して同じ問題に遭遇しました。

SessionBinderJobListener回避策として、クラスを Quartz-0.4.2のクラスに置き換え(パッケージのみを新しいものに変更)、ジョブは問題なく再び実行されます。そのため、persistenceInterceptorBean は接続を閉じたり、プールに戻したりしていないようです。org.codehaus.groovy.grails.orm.hibernate.support.HibernatePersistenceContextInterceptorフラッシュと破棄に問題がある可能性があります。

org.quartz.threadPool.threadCountプロパティのmaxActive よりもはるかに小さい場合dataSource、問題は発生しない (おそらく各ジョブ スレッドが既に接続を取得している) か、時間がかかるだけです。

于 2013-01-18T11:22:41.403 に答える
2

データソース接続プールのデフォルトサイズは8であるため、接続を適切に閉じてプールに戻すことができない可能性があります。

于 2012-07-24T15:05:32.843 に答える
0

Quartz プラグイン バージョン 1.0.1 でも同じことが見られます。8 回目の実行で、Job ワーカーと Tomcat ワーカーの両方がフリーズします。ジョブのブロックでwithSessionHibernateを使用 して呼び出します。それはトリックをしました。session.disconnect()finally {}

def execute() {
   def hsession
   try {
     DomainObject.withSession { ses ->
       hsession = ses

       ....
     }
   } catch(Exception e) {
      //log it etc.
   } finally {
      hsession?.disconnect()
   }
}
于 2014-03-09T18:44:50.137 に答える