@Override public Trigger getTrigger() { findDelegate(); return delegate.getTrigger(); }
@Override public void internalSchedule(TimerJobInstance timerJobInstance) { if (scheduler.isShutdown()) { return; } Date date = timerJobInstance.getTrigger().hasNextFireTime(); Callable<Void> item = (Callable<Void>) timerJobInstance; GlobalJDKJobHandle jobHandle = (GlobalJDKJobHandle) timerJobInstance.getJobHandle(); long then = date.getTime(); long now = System.currentTimeMillis(); ScheduledFuture<Void> future = null; if ( then >= now ) { future = scheduler.schedule( new RetriggerCallable(scheduler, item), then - now, TimeUnit.MILLISECONDS ); } else { future = scheduler.schedule( new RetriggerCallable(scheduler, item), 0, TimeUnit.MILLISECONDS ); } jobHandle.setFuture( future ); globalTimerService.getTimerJobFactoryManager().addTimerJobInstance( timerJobInstance ); }
protected void updateBasedOnTrigger(TimerInstance timerInstance) { Trigger trigger = ((DefaultJobHandle)timerInstance.getJobHandle()).getTimerJobInstance().getTrigger(); if (trigger instanceof IntervalTrigger && timerInstance.getPeriod() > 0) { IntervalTrigger intervalTrigger = (IntervalTrigger) trigger; if (timerInstance.getRepeatLimit() > 0) { timerInstance.setRepeatLimit(intervalTrigger.getRepeatLimit() - intervalTrigger.getRepeatCount() + 1); // +1 because repeatCount contains also one last scheduled, but cancelled trigger } long delay; if (intervalTrigger.getLastFireTime() != null) { // it is already fired calculate the new delay using the period instead of the delay delay = timerInstance.getPeriod() - (System.currentTimeMillis() - intervalTrigger.getLastFireTime().getTime()); } else { delay = timerInstance.getDelay() - (System.currentTimeMillis() - intervalTrigger.getCreatedTime().getTime()); } timerInstance.setDelay(delay); } }
Date nextFireTime = timerJobInstance.getTrigger().hasNextFireTime(); Date threshold = new Date(System.currentTimeMillis() + RESCHEDULE_DELAY); if (nextFireTime.before(threshold)) {
@Override public Trigger getTrigger() { findDelegate(); return delegate.getTrigger(); }
public void internalSchedule(TimerJobInstance timerJobInstance) { TimerConfig config = new TimerConfig(new EjbTimerJob(timerJobInstance), true); Date expirationTime = timerJobInstance.getTrigger().hasNextFireTime(); logger.debug("Timer expiration date is {}", expirationTime); if (expirationTime != null) { timerService.createSingleActionTimer(expirationTime, config); logger.debug("Timer scheduled {} on {} scheduler service", timerJobInstance); localCache.putIfAbsent(((EjbGlobalJobHandle) timerJobInstance.getJobHandle()).getUuid(), timerJobInstance); } else { logger.info("Timer that was to be scheduled has already expired"); } }
@Override public void internalSchedule(TimerJobInstance timerJobInstance) { if (scheduler.isShutdown()) { return; } Date date = timerJobInstance.getTrigger().hasNextFireTime(); Callable<Void> item = (Callable<Void>) timerJobInstance; GlobalJDKJobHandle jobHandle = (GlobalJDKJobHandle) timerJobInstance.getJobHandle(); long then = date.getTime(); long now = System.currentTimeMillis(); ScheduledFuture<Void> future = null; if ( then >= now ) { future = scheduler.schedule( new RetriggerCallable(scheduler, item), then - now, TimeUnit.MILLISECONDS ); } else { future = scheduler.schedule( new RetriggerCallable(scheduler, item), 0, TimeUnit.MILLISECONDS ); } jobHandle.setFuture( future ); globalTimerService.getTimerJobFactoryManager().addTimerJobInstance( timerJobInstance ); }
protected void updateBasedOnTrigger(TimerInstance timerInstance) { Trigger trigger = ((DefaultJobHandle)timerInstance.getJobHandle()).getTimerJobInstance().getTrigger(); if (trigger instanceof IntervalTrigger && timerInstance.getPeriod() > 0) { IntervalTrigger intervalTrigger = (IntervalTrigger) trigger; if (timerInstance.getRepeatLimit() > 0) { timerInstance.setRepeatLimit(intervalTrigger.getRepeatLimit() - intervalTrigger.getRepeatCount() + 1); // +1 because repeatCount contains also one last scheduled, but cancelled trigger } long delay; if (intervalTrigger.getLastFireTime() != null) { // it is already fired calculate the new delay using the period instead of the delay delay = timerInstance.getPeriod() - (System.currentTimeMillis() - intervalTrigger.getLastFireTime().getTime()); } else { delay = timerInstance.getDelay() - (System.currentTimeMillis() - intervalTrigger.getCreatedTime().getTime()); } timerInstance.setDelay(delay); } }
Date nextFireTime = timerJobInstance.getTrigger().hasNextFireTime(); Date threshold = new Date(System.currentTimeMillis() + RESCHEDULE_DELAY); if (nextFireTime.before(threshold)) {