首页 > quartz调度异常

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"));
    }
}

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

【热门文章】
【热门文章】