私は様々なスケジュールの頻度のためのクォーツトリガを作成しています。 関数の最後に私はトリガーを返しますが、デバッグ出力はreturnステートメントの前に出力します。 デバッグ出力はTrigger 'DEFAULT.6da64b5bd2ee-91b0fa99-6e11-4356-a55f-e80353b61fc4': triggerClass: 'org.quartz.impl.triggers.DailyTimeIntervalTriggerImpl calendar: 'null' misfireInstruction: -1 nextFireTime: null
です。 nextFireTime
がヌルであることが心配ですが、トリガはまだ発火しますか?JavaクォーツスケジューラトリガnextFireTime is null
if (freqType.equalsIgnoreCase(KpiDefinition.KPI_FREQ_TYPE_DAILY)
|| freqType
.equalsIgnoreCase(KpiDefinition.KPI_FREQ_TYPE_SCHEDULED))
{
DailyTimeIntervalScheduleBuilder schedule = DailyTimeIntervalScheduleBuilder
.dailyTimeIntervalSchedule()
.startingDailyAt(startTime)
.endingDailyAt(endTime)
.onEveryDay()
.withInterval(kpiDef.getKpiFrequency().intValue(),
IntervalUnit.valueOf(kpiDef.getKpiFreqTimeUnit()))
.withMisfireHandlingInstructionIgnoreMisfires();
Date startDate = kpiDef.getKpiStartDate();
if (startDate.before(new Date()))
{
startDate = new Date();
}
if (freqType.equalsIgnoreCase(KpiDefinition.KPI_FREQ_TYPE_DAILY))
{
trigger = newTrigger().withSchedule(schedule)
.startAt(startDate).build();
} else if (freqType
.equalsIgnoreCase(KpiDefinition.KPI_FREQ_TYPE_SCHEDULED))
{
Date endDate = kpiDef.getKpiEndDate();
// This means that schedule has already passed and so KPI should
// not be scheduled.
if (endDate.before(new Date()))
{
logger.debug("getTriggerWithSchedule for KPI " + kpiDef.getKpiDefId() + " null Schedule returned for end date " +endDate.toString());
return null;
}
trigger = newTrigger().withSchedule(schedule)
.startAt(startDate).endAt(endDate).build();
}
}