2009-02-13 10 views
0

В моем приложении я использую кварц, чтобы запланировать выполнение некоторых заданий, которые будут выполняться в приложении Java на Glassfish. Иногда, когда я перераспределяю свое приложение, я забываю отключить свой планировщик, и невозможно остановить их после развертывания новой версии приложения. Итак, вопрос в том, как можно остановить/уничтожить потоки кварца после того, как приложение было не развернуто.Thread Quartz's thread после повторного развертывания приложения

Вот мой код, чтобы добавить работу:

 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()); 

ответ

4

Когда вы говорите, передислокации, является его горячим развертывание, т.е. без прекращения GlassFish сервер? Вы можете реализовать метод ServletContextListener.contextDestroyed(), и от этого вызова крюк выключения, предоставляемый кварцевым API. Вам необходимо зарегистрировать слушателя в web.xml

Смежные вопросы