- PR -

Quartz & Listener について

1
投稿者投稿内容
小梅
会議室デビュー日: 2005/04/04
投稿数: 10
投稿日時: 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行のみ

以上
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2008-08-21 23:43
うまくいかない、とはどういう状況でしょうか?
どういう動作を期待していて、実際にはどう動くのか(動かないのか)、など現象を書くといいかもしれません。
小梅
会議室デビュー日: 2005/04/04
投稿数: 10
投稿日時: 2008-08-22 10:51
インギさん
ご指摘ありがとうございます。
ちょっと乱暴な内容でした。。すいません。

○要件
warアプリケーション起動時にDBにアクセスし、
あるテーブル情報をキャッシュする。

その後、5分ごとに起動時と同様な処理を実行し、
テーブル情報とキャッシュの同期を取りたい。

○実装
上記要件を実装するため、
org.quartz.ee.servlet.QuartzInitializerListener を拡張し、
■QuartzInitializerListener のように実装しました。

そして、実装した■QuartzInitializerListener を
20秒ごと(テスト用に)に実行するよう定義しました。

○結果

起動時には■QuartzInitializerListener は実行され、期待どおり。
しかし、起動時以降は、反応無し。


○ご教授いただきたいこと

20秒ごと(テスト用に)に実行するためには、どうしたらよいでしょうか?

実装や定義に誤りがあれば、ご指摘いただきたいです。
その他簡単な代替案があれば、ご教授いただきたいです。

以上





1

スキルアップ/キャリアアップ(JOB@IT)