package com.github.signed.sandboxe.quartz.domain; import org.quartz.DisallowConcurrentExecution; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.quartz.PersistJobDataAfterExecution; @DisallowConcurrentExecution @PersistJobDataAfterExecution public class SleepingJob implements Job { public static final int HoursToSleep = 4; private String greeting = "silent"; private Integer numberOfExecutionsUntilNow; public void setGreeting(String greeting) { this.greeting = greeting; } public void setNumberOfExecutions(Integer numberOfExecutionsUntilNow){ this.numberOfExecutionsUntilNow = numberOfExecutionsUntilNow; } @Override public void execute(JobExecutionContext context) throws JobExecutionException { int currentExecution = numberOfExecutionsUntilNow + 1; System.out.println("this is execution #" + currentExecution); System.out.println(greeting); for(int hoursSlept=0; hoursSlept< HoursToSleep; ++hoursSlept){ try { Thread.sleep(1 * 1000l); } catch (InterruptedException e) { System.out.println("I was interrupted."); } System.out.print("snore ..."); } System.out.println("Ring Ring"); System.out.println("Morgen\n"); context.getJobDetail().getJobDataMap().put("numberOfExecutions", currentExecution); } }