See below example.
This is your main class where you set the scheduler.
import java.util.Date;
import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory;
public class TestQuartz {
public static void main(String[] args) throws Exception {
JobBuilder jobBuilder = JobBuilder.newJob(MyJob.class);
JobDetail job = jobBuilder.withIdentity("myJob", "group1").build();
Date sheduleTime = new Date(new Date().getTime() + 5000);
Trigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger1", "group1").startAt(sheduleTime).build();
Scheduler scheduler = new StdSchedulerFactory().getScheduler();
//Below line sets a variable named myContextVar in SchedulerContext.
//Not only strings, you can set any type of object here.
scheduler.getContext().put("myContextVar", "Hello, this text is from context.");
scheduler.start();
scheduler.scheduleJob(job, trigger);
}
}
import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory;
public class TestQuartz {
public static void main(String[] args) throws Exception {
JobBuilder jobBuilder = JobBuilder.newJob(MyJob.class);
JobDetail job = jobBuilder.withIdentity("myJob", "group1").build();
Date sheduleTime = new Date(new Date().getTime() + 5000);
Trigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger1", "group1").startAt(sheduleTime).build();
Scheduler scheduler = new StdSchedulerFactory().getScheduler();
//Below line sets a variable named myContextVar in SchedulerContext.
//Not only strings, you can set any type of object here.
scheduler.getContext().put("myContextVar", "Hello, this text is from context.");
scheduler.start();
scheduler.scheduleJob(job, trigger);
}
}
Now in your Job class you can get that variable from the SchedulerContext as below.
import java.util.Date;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.SchedulerContext;
import org.quartz.SchedulerException;
public class MyJob implements Job {
@Override
public void execute(JobExecutionContext arg0) throws JobExecutionException {
try {
SchedulerContext schedulerContext = arg0.getScheduler().getContext();
//Below line gets the value from context.
//Just get it and cast it in to correct type
String objectFromContext = (String) schedulerContext.get("myContextVar");
System.out.println(objectFromContext);
} catch (SchedulerException e1) {
e1.printStackTrace();
}
}
}
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.SchedulerContext;
import org.quartz.SchedulerException;
public class MyJob implements Job {
@Override
public void execute(JobExecutionContext arg0) throws JobExecutionException {
try {
SchedulerContext schedulerContext = arg0.getScheduler().getContext();
//Below line gets the value from context.
//Just get it and cast it in to correct type
String objectFromContext = (String) schedulerContext.get("myContextVar");
System.out.println(objectFromContext);
} catch (SchedulerException e1) {
e1.printStackTrace();
}
}
}
In my case, when the job runs, the SchedulerContext comes as org.quartz.SchedulerContext@0 and any variable set inside it comes as null.
ReplyDeleteI really enjoyed reading this article. The topic was explained very effectively.ba analyst course online
ReplyDeleteThanks for sharing this information. It gave me a better understanding of the topic. salesforce cpq training online
ReplyDeleteOpenShift training online provides flexible learning for professionals interested in Kubernetes and cloud-native technologies. This openshift training online covers containers, pods, deployments, services, networking, storage, security, scaling, and cluster operations. Learners gain practical experience through online exercises and projects.
ReplyDelete