私のアプリでは、クォーツを使用して、Glassfish の Java アプリケーションで実行するジョブをスケジュールしています。アプリケーションを再デプロイしているときに、スケジューラをオフにするのを忘れて、アプリの新しいバージョンがデプロイされた後にスケジューラを停止できないことがあります。したがって、問題は、アプリケーションがアンデプロイされた後、どのようにクォーツのスレッドを停止/強制終了できるかです。
ジョブを追加するコードは次のとおりです。
SchedulerFactory sf = new StdSchedulerFactory();
Scheduler sched sched = sf.getScheduler();
// 1: EMS2ELC JOB /////////////
String EMS2ELCScheduleEx = "0 30 0 * * ?";
job = new JobDetail("EMS2ELCJob", "WebServicesGroup", EMS2ELCJob.class);
trigger = new CronTrigger("EMSTrigger", "WebServicesGroup", "EMS2ELCJob", "WebServicesGroup", EMS2ELCScheduleEx, TimeZone.getTimeZone("America/Los_Angeles"));
sched.addJob(job, true);
ft = sched.scheduleJob(trigger);
log.info("SchedulerController: " + job.getFullName() + " has been scheduled to run at: " + ft + " and repeat based on expression: " + trigger.getCronExpression());