如何从main方法运行外部的石英调度程序

时间:2017-05-03 07:08:30

标签: java jar quartz-scheduler executable-jar

  public static void main(String[] test) {
        try {

            JobKey jobKeyA = new JobKey("JobAssignVehicleDailyrideFixedVehicle", "group1");
            JobDetail jobA = JobBuilder.newJob(JobAssignVehicleDailyrideFixedVehicle.class)
                    .withIdentity(jobKeyA).build();
            Trigger trigger1 = TriggerBuilder
                    .newTrigger()
                    .withIdentity("Trigger1", "group1")
                    .withSchedule(
                            CronScheduleBuilder.cronSchedule("0/5 * * * * ?"))
                    .build();
                    scheduler = new StdSchedulerFactory().getScheduler();
            scheduler.start();
            scheduler.scheduleJob(jobA, trigger1);
            } catch (SchedulerException e) {
            logger.error(e);
        }
    }

我从jar文件中的主类运行此方法。 如何在不停止java进程的情况下正确关闭quartz。 有没有办法在调度程序上为当前运行的石英调用shutdown方法

1 个答案:

答案 0 :(得分:3)

在Other线程中使用new StdSchedulerFactory().getScheduler()来获取对主线程中启动的调度程序的引用。

为什么这样做?两个工厂实例上的 StdSchedulerFactory#getScheduler 的调用使用相同的 SchedulerRepository 单例,其中包含所有正在运行的石英调度程序的映射,在这种情况下,它只是默认调度程序。