立刻用石英消防作业cron

时间:2015-11-03 11:18:16

标签: quartz-scheduler

我立刻用石英试了火工作,但没工作。 Obs:这个工作存在于我的数据库中。

这是我用来立即解雇工作的代码:

public class ExecuteJob {

   public static void now(String TriggerKey) throws SchedulerException {

       scheduler = StdSchedulerFactory.getDefaultScheduler();

        // retrieve the trigger
        Trigger oldTrigger = scheduler.getTrigger(triggerKey(TriggerKey, GROUP_JOB));

        scheduler.triggerJob(oldTrigger.getJobKey());
    }
}

2 个答案:

答案 0 :(得分:0)

最终解决方案是:

public static void now(String TriggerKey) throws SchedulerException {
    scheduler = StdSchedulerFactory.getDefaultScheduler();

    Trigger oldTrigger = scheduler.getTrigger(triggerKey(TriggerKey, GROUP_JOB));

    scheduler.start();
    scheduler.triggerJob(oldTrigger.getJobKey());
  }

答案 1 :(得分:0)

正如在评论中提到的那样,您需要确保即使是立即开始工作也会启动调度程序。

您可以使用isStarted()方法结合'isInStandbyMode()'和'isShutdown()'方法进行检查。
请注意,isStarted“仅反映此调度程序是否曾调用start(),因此即使调度程序当前处于待机模式或自关闭以来它也会返回true。”

要启动调度程序,请使用start()方法:

public static void now(String TriggerKey) throws SchedulerException {

   scheduler = StdSchedulerFactory.getDefaultScheduler();

    // retrieve the trigger
    Trigger oldTrigger = scheduler.getTrigger(triggerKey(TriggerKey, GROUP_JOB));

    // start the scheduler
    if (!scheduler.isStarted() || scheduler.isInStandbyMode() || scheduler.isShutdown())
        scheduler.start() 

    scheduler.triggerJob(oldTrigger.getJobKey());
}