我在我的Web应用程序中有一个Quartz作业,由一个Servlet启动。 当我重新部署我的应用程序时,我会收到以下消息:
[DefaultQuartzScheduler_Worker-5] but has failed to stop it. This is very likely to create a memory leak
在生产环境中,我们遇到了这样一个问题:当执行 ./shutdown.sh 后,tomcat 服务器并不会停止,因此我们不得不手动杀掉进程。我认为这是由于 quartz 任务无法停止导致的。
我该如何通过重新部署应用程序或关闭服务器来停止 quartz 任务呢?
我的环境是 tomcat 7 和 quartz 2.1.6 ...
SchedulerFactory sf = new StdSchedulerFactory();
Scheduler scheduler = sf.getScheduler();
scheduler.start();
JobDetail job = JobBuilder.newJob(XYZJob.class).withIdentity("job1", "group1").build();
Trigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger1","group1")
.startNow()
.withSchedule(CronScheduleBuilder.cronSchedule("0 0 1 * * ?"))
.build();
scheduler.scheduleJob(job, trigger);
正如您所看到的,我的工作每天只开始一次。我没有看到可以检查标志以取消工作的地方。