Убить нить Кварца после повторного развертывания приложения - PullRequest
0 голосов
/ 13 февраля 2009

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

Вот мой код для добавления работы:

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

1 Ответ

4 голосов
/ 13 февраля 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...