Java 杀死石英';重新部署应用程序后的线程

Java 杀死石英';重新部署应用程序后的线程,java,multithreading,glassfish,Java,Multithreading,Glassfish,在我的应用程序中,我使用quartz来安排一些作业,以便在Glassfish上的Java应用程序中运行。 有时,当我重新部署我的应用程序时,我忘记关闭我的调度程序,在部署新版本的应用程序后,不可能停止它们。 所以,问题是在应用程序取消部署后,如何停止/杀死quartz的线程 以下是我要添加作业的代码: SchedulerFactory sf = new StdSchedulerFactory(); Scheduler sched sched = sf.getSch

在我的应用程序中,我使用quartz来安排一些作业,以便在Glassfish上的Java应用程序中运行。 有时,当我重新部署我的应用程序时,我忘记关闭我的调度程序,在部署新版本的应用程序后,不可能停止它们。 所以,问题是在应用程序取消部署后,如何停止/杀死quartz的线程

以下是我要添加作业的代码:

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

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