quartz调度异常

新手上路,请多包涵

下面这段代码在quartz-2.1.5下运行,执行了deleteJob,依然每s运行job,直至将进程杀死。但是在quartz-2.2.1下运行,当执行了deleteJob以后,job就不再执行了。这是怎么回事?另外,如果HelloJob是SimpleTriggerExample的内部嵌套类的话,无论在2.1.5下还是2.2.1下,都不会运行job,这又是怎么回事?感觉quartz有疑问的地方太多了。。

public class HelloJob implements Job {

    @Override
    public void execute(JobExecutionContext context)
            throws JobExecutionException {
        System.out.println("Hello Quartz!");
    }
}

public class SimpleTriggerExample {
    public static void main(String[] args) throws Exception {
        JobDetail job = JobBuilder.newJob(HelloJob.class)
                .withIdentity("job1", "group1").build();

        Trigger trigger = TriggerBuilder
                .newTrigger()
                .withIdentity("job1", "group1")
                .withSchedule(
                        SimpleScheduleBuilder.simpleSchedule()
                        .withIntervalInSeconds(1).repeatForever())
                .build();

        Scheduler scheduler = new StdSchedulerFactory().getScheduler();
        scheduler.start();
        scheduler.scheduleJob(job, trigger);
        Thread.sleep(30000);
        scheduler.deleteJob(new JobKey("job1", "group1"));
    }
}
阅读 4.4k
1 个回答

第一个问题可能是低版本的bug.
第二个问题, 可能是因为classloader找不到你嵌套在内部的非public的类.找不到只是不执行而不报错.
没有亲自测试过,只能凭猜测回答.

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进