- - PR -
Quartz & Listener について
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2008-08-21 23:17
Quartz(http://www.opensymphony.com/quartz/ )を使用し、
定期実行処理(Listenerの処理)を下記のとおり実装しているのですが、 うまくいきません。 どなたかご教授ください。 ■QuartzInitializerListener public class QuartzInitializerListener extends org.quartz.ee.servlet.QuartzInitializerListener { @Override public void contextInitialized(ServletContextEvent sce) { super.contextInitialized(sce); /* * 起動時のDBデータキャッシュ処理。 * また、起動後は、5分おきに同様のDBデータキャッシュ * 処理を実行したい。 */ } } ■ web.xml <listener> <listener-class> jp.co.atmark.QuartzInitializerListener </listener-class> </listener> <context-param> <param-name>config-file</param-name> <param-value>quartz.properties</param-value> </context-param> <context-param> <param-name>shutdown-on-unload</param-name> <param-value>true</param-value> </context-param> <context-param> <param-name>start-scheduler-on-load</param-name> <param-value>true</param-value> </context-param> ■quartz.properties #============================================================================ # Configure Main Scheduler Properties #============================================================================ org.quartz.scheduler.instanceName = org.quartz.scheduler.instanceId = AUTO #org.quartz.scheduler.instanceName = DefaultQuartzScheduler #org.quartz.scheduler.rmi.export = false #org.quartz.scheduler.rmi.proxy = false #org.quartz.scheduler.wrapJobExecutionInUserTransaction = false #============================================================================ # Configure ThreadPool #============================================================================ org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool org.quartz.threadPool.threadCount = 10 org.quartz.threadPool.threadPriority = 5 #org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread = true #============================================================================ # Configure JobStore #============================================================================ org.quartz.jobStore.misfireThreshold = 60000 org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore ##=============================================================== ## Configure Plugins ##=============================================================== org.quartz.plugin.jobInitializer.class = org.quartz.plugins.xml.JobInitializationPlugin org.quartz.plugin.jobInitializer.fileName = quartzJob.xml org.quartz.plugin.jobInitializer.overWriteExistingJobs = true org.quartz.plugin.jobInitializer.failOnFileNotFound = true org.quartz.plugin.jobInitializer.scanInterval = 10 ■quartzJob.xml <cron-expression>0,20,40 * * * * ?</cron-expression> ※この1行のみ 以上 |
|
投稿日時: 2008-08-21 23:43
うまくいかない、とはどういう状況でしょうか?
どういう動作を期待していて、実際にはどう動くのか(動かないのか)、など現象を書くといいかもしれません。 |
|
投稿日時: 2008-08-22 10:51
インギさん
ご指摘ありがとうございます。 ちょっと乱暴な内容でした。。すいません。 ○要件 warアプリケーション起動時にDBにアクセスし、 あるテーブル情報をキャッシュする。 その後、5分ごとに起動時と同様な処理を実行し、 テーブル情報とキャッシュの同期を取りたい。 ○実装 上記要件を実装するため、 org.quartz.ee.servlet.QuartzInitializerListener を拡張し、 ■QuartzInitializerListener のように実装しました。 そして、実装した■QuartzInitializerListener を 20秒ごと(テスト用に)に実行するよう定義しました。 ○結果 起動時には■QuartzInitializerListener は実行され、期待どおり。 しかし、起動時以降は、反応無し。 ○ご教授いただきたいこと 20秒ごと(テスト用に)に実行するためには、どうしたらよいでしょうか? 実装や定義に誤りがあれば、ご指摘いただきたいです。 その他簡単な代替案があれば、ご教授いただきたいです。 以上 |
1