2017-10-20 2 views
0

startDateとendDateをTriggerに設定すると、ChronScheduleはジョブのexecuteメソッドを1回だけ呼び出します。Java - Quartz CronScheduleが開始日と終了日で動作しない

JobDetail job = JobBuilder.newJob(service) 
        .withIdentity(batchService.getName(), CommonConstants.BATCH_JOB_GROUP).build(); 
      Trigger trigger = TriggerBuilder 
        .newTrigger() 
        .withIdentity(batchService.getName(), CommonConstants.BATCH_JOB_GROUP) 
        .startAt(startDate) 
        .endAt(endDate) 
        .withSchedule(
          CronScheduleBuilder.cronSchedule("0/5 * * * * ?")) 
        .build(); 
      System.out.println("##########" + trigger.getEndTime()); 
      System.out.println("##########" + trigger.getStartTime()); 

ご覧のとおり、開始日と終了日を取得するためのトリガーを印刷します。 executeメソッドで

##########Fri Oct 20 16:00:00 CEST 2017 
##########Fri Oct 20 15:00:00 CEST 2017 

が、私はプリント置く: それは正しいようだ

public void execute(JobExecutionContext context) throws JobExecutionException 
    { 
     System.out.println("Executing job. The next: " + context.getNextFireTime()); 

    } 

をが、結果はunconfortableです:

Executing job. The next: null 

私が間違って何を持っていますか?

答えて

0

CronsSchedulerまたはCronsTriggerについてよくわかりませんが、CronScheduleBuilderではなく、次のように試すことができます。

import org.quartz。*パッケージには、

JobDetail jobDetail = JobBuilder.newJob(MYJOB.class).withIdentity(jobName).withDescription("TryThis").build(); 

CalendarIntervalTriggerImpl trigger = new CalendarIntervalTriggerImpl("triggername", startTime, endTime, 
           DateBuilder.IntervalUnit.valueOf("MINUTE"), frequency); 

// Try to keep scheduler object as singultant object. 
// OR it'll also work fine if you start scheduler it multiple times with diffrebt scheduler object for JDBCJob store. 

SchedulerFactory sf = new StdSchedulerFactory(); 

Scheduler scheduler = sf.getScheduler(); 
scheduler.start(); 

scheduler.scheduleJob(jobDetail, trigger); 
関連する問題