0

在我的应用程序中,我使用石英来安排一些作业在 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());
4

1 回答 1

4

当您说重新部署时,它是热部署,即不终止glassfish服务器吗?您可以实现 ServletContextListener.contextDestroyed() 方法,并从中调用石英 API 提供的关闭挂钩。您需要在 web.xml 中注册您的侦听器

于 2009-02-13T03:21:00.593 回答