Samuel Franklyn
Wed, 04 Nov 2009 01:49:34 -0800
PUTRI CHAIRINA wrote: > Dear JUGers, > > Numpang bertanya ya.. > Saya menggunakan Quartz Scheduler. > Pada pertama kali Job di trigger, ia berjalan baik. Kemudian ada error : > java.lang.NoClassDefFoundError: org.quartz.StatefulJob. > Berarti ini maksud ada class yang tidak ditemukan, yaitu StatefulJob. > Betul/salah? Nah, setelah saya cek di jar Quartz, class tersebut ada. >
Ini isu multi-threading. Bagaimana cara kamu menjalankan Quartz didalam
web app kamu? Cara yang benar adalah dengan menambahkan konfigurasi
berikut dalam web.xml
<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>
<listener>
<description>QuartzInitializerListener</description>
<listener-class>org.quartz.ee.servlet.QuartzInitializerListener</listener-class>
</listener>
Sebelum kamu menschedule job maka scheduler harus dipause dulu.
ServletContext sc = sce.getServletContext();
StdSchedulerFactory ssf = (StdSchedulerFactory)
sc.getAttribute(QuartzInitializerListener.QUARTZ_FACTORY_KEY);
log.info("StdSchedulerFactory:" + ssf.toString());
Scheduler scheduler = ssf.getScheduler();
scheduler.standby();
JobDetail jobDetail = new JobDetail("RetrieveAndStorePnrJob",
Scheduler.DEFAULT_GROUP, RetrieveAndStorePnrJob.class);
CronTrigger trigger = new CronTrigger("RetrieveAndStorePnrJobTrigger",
Scheduler.DEFAULT_GROUP, configs.getConfigValue());
scheduler.scheduleJob(jobDetail, trigger);
scheduler.start();