Estou seguinde o tutorial disponibilizado no site do quartz e tenho o seguinte problema: apos realizar o “start” do trigger e “schedular” meu job, o job nao é disparado imediatamente como imaginei que aconteceria, parece que ocorre um atraso nao esperado (tambem nao comentado no tutorial). Por exemplo: schedulei um job as 12:32 e ele é disparado apenas as 13:00; schedulei um job as 13:13 e ele foi disparado as 14:00; schedulei um job as 14:21 e ele foi disparado as 15:00. Resumindo: os jobs sao disparados apenas em horarios “redondos” 12:00, 13:00, 14:00 e assim por diante. Alguem tem ideia do que esta acontecendo?
import java.util.*;
import java.text.*;
import org.quartz.*;
import org.quartz.impl.*;
public class Main{
public static void main(String[] args){
try{
System.out.println("This is my hello Quartz at date: "+new SimpleDateFormat("dd/MM/yyy HH:mm:ss").format(new Date()));
SchedulerFactory schedFact = new StdSchedulerFactory();
Scheduler sched = schedFact.getScheduler();
sched.start();
JobDetail jobDetail = new JobDetail("myJob", sched.DEFAULT_GROUP, DumbJob.class);
jobDetail.getJobDataMap().put("jobSays", "Hello World!");
jobDetail.getJobDataMap().put("myFloatValue", 3.141f);
jobDetail.getJobDataMap().put("myStateData", new ArrayList());
Trigger trigger = TriggerUtils.makeSecondlyTrigger(1) ;
trigger.setStartTime(TriggerUtils.getEvenHourDate(new Date()));
trigger.setName("myTrigger");
sched.scheduleJob(jobDetail, trigger);
//sched.shutdown();
}
catch(SchedulerException se){
se.printStackTrace();
}
}
}
class DumbJob implements Job {
static int count =0;
public DumbJob() {
System.out.println("Instanciando um DumJod.");
}
public void execute(JobExecutionContext context) throws JobExecutionException {
String instName = context.getJobDetail().getName();
String instGroup = context.getJobDetail().getGroup();
JobDataMap dataMap = context.getJobDetail().getJobDataMap();
String jobSays = dataMap.getString("jobSays");
float myFloatValue = dataMap.getFloat("myFloatValue");
ArrayList state = (ArrayList)dataMap.get("myStateData");
state.add(new Date());
if(count < 10) {
System.out.println("Instance " + instName + " of DumbJob says " + jobSays+ " at date: "+ new SimpleDateFormat("dd/MM/yyy HH:mm:ss").format(new Date()));
count++;
}
else {
try{
System.out.println("Scheduler shutdown at date: "+ new SimpleDateFormat("dd/MM/yyy HH:mm:ss").format(new Date()));
new StdSchedulerFactory().getScheduler().shutdown();
}
catch(SchedulerException se){
se.printStackTrace();
}
}
}
}