安排Cron作业在部署Web应用程序时立即启动

时间:2017-01-11 22:02:11

标签: java cron quartz-scheduler crontrigger servlet-listeners

我正在部署应用程序时编写Job。这个工作应该每5分钟运行一次,它应该立即开始。但问题是它在部署后5分钟开始,每5分钟重复一次。请帮助我在部署应用程序时立即启动它所需的更改。

 public void contextInitialized(ServletContextEvent servletContextEvent) {
        logger.info("contextInitialized() ,Starting instantiating Processor Engine");
        try{
        JobDetail job = newJob(MyServiceProcessor.class).withIdentity(
                "CronQuartzJob", "Group").build();
        Trigger trigger = newTrigger().withIdentity("TriggerName", "Group").withSchedule(CronScheduleBuilder.cronSchedule("0 0/5 * * * ?")).build();
        scheduler = new StdSchedulerFactory().getScheduler();
        scheduler.start();
        scheduler.scheduleJob(job, trigger);

        }
        catch (SchedulerException e) {
            logger.error(", contextInitialized() ,Problem in starting Processor Engine"+e);
    }

2 个答案:

答案 0 :(得分:0)

我认为你不能立即开始工作。 cron表达式每0或5分钟触发一次。

备选您可以另外实例化该作业并在contextInitialized()中手动执行它,如果您不需要JobExecutionContext。

MyServiceProcessor mjob = new MyServiceProcessor();
mjob.execute(null);

答案 1 :(得分:0)

不要使用CronTrigger进行这种简单的调度。请改用SimpleTrigger

Trigger trigger = newTrigger()
        .withIdentity("TriggerName", "Group")
        .withSchedule(SimpleTriggerBuilder.simpleSchedule()
                    .withIntervalInMinutes(5)
                    .repeatForever())
        .build();

这将安排你的工作现在开始,然后每5分钟。

有关SimpleTrigger的更多用途,请阅读Quartz's tutorial on it

相关问题