Scheduler Shutdown Example

In this section we will see how to shutdown the scheduler in quartz application.

Scheduler Shutdown Example

Scheduler Shutdown Example

     

In this section we will see how to shutdown the scheduler in quartz application. As we know that the scheduler is a main interface of a Quartz Scheduler it maintains the list of JobDetail and Trigger. If we will implement the Scheduler instances then must have to need the SchedulerFactory object. After implementation of this, we have to start it by using the start() method then it will execute (fire) any jobs. Shutdown process of scheduler is given below with code:

Description of program:

In this program we are going to shutdown the scheduler (SDS) of a quartz application and get the job name, group name, trigger name and its firing time. When we discuss about implementation of any quartz application then we needed two classes: one is scheduler class (StatusSchedule.java)  and another is job class (StatusJob.java) that implements the Job interface. For this, firstly we need to implement a quartz scheduler. If we will implement the quartz scheduler then it requires the instance of SchedulerFactory and invokes its getScheduler() method. After that we will start this scheduler with the help of  start() method. We know that the quartz scheduler have list of JobDetail and Trigger. The JobDetail object has the job name, job group and its class name that implements in Job interface and the CronTrigger object has the trigger name, trigger group and string type cron expression that is used for configuring the instance of CronTrigger for firing the job relatively after some specified time. Both are added in the quartz scheduler by using the scheduleJob() method. After doing this, it will check the scheduler is shutdown or not. If the scheduler is shutdown then it displays the message "Scheduler is shutdown" and "Job can't be executed here." Otherwise it will show "Scheduler isn't shutdown" and "Job is executed here.". Now, we will get the result like: job name, group name, trigger name and it firing times.

Description of code:

shutdown();
Above method used to shutdown the quartz scheduler that means breaking the scheduler firing of triggers. The scheduler can not be re-started here.

isShutdown();
This method has the scheduler reports and returns a Boolean type date either true or false. When it will return true that means scheduler is shutdown otherwise it couldn't be shutdown and operations are executed here.

getFireTime();
This method has exact trigger firing time.

Here is the code of Scheduler class (StatusSchedule.java):

import org.quartz.CronTrigger;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerFactory;
import org.quartz.impl.StdSchedulerFactory;


public class StatusSchedule {
  public static void main(String args[])
  {
  try{
  new StatusSchedule();
  }catch(Exception e){
  e.printStackTrace();
  }
  }
  public StatusSchedule()throws Exception{
  SchedulerFactory sf = new StdSchedulerFactory();
  Scheduler sche = sf.getScheduler();
  sche.start();
  JobDetail jDetail = new JobDetail(
  "Show status"
,sche.DEFAULT_GROUP,StatusJob.class);
  CronTrigger cronTrigger = new CronTrigger(
   "Cron Trigger"
,sche.DEFAULT_GROUP,"0 0/1 * * * ?");
  sche.scheduleJob(jDetail, cronTrigger);
  //  sche.shutdown();
  if(sche.isShutdown()){
  System.out.println("Scheduler is shutdown!");
  System.out.println("Job cann't be executed here.");
  }
  else{
  System.out.println("Scheduler isn't shutdown!");
  System.out.println("Job is executed here.");
  }
  }
}

Download this code.

Here is the code of Job class (StatusJob.java):

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
public class StatusJob implements Job {
  public void execute(JobExecutionContext contextthrows JobExecutionException {
  // TODO Auto-generated method stub
  String name = context.getJobDetail().getName();
 String group = context.getJobDetail().getGroup();
  System.out.println("Job name: " + name + "\t" "Group: " + group);
  System.out.println("Trigger name: " + context.getTrigger().getName());
  System.out.println("Friring Time: " + context.getFireTime());
  }
}

Download this code.

Output of program (Scheduler is not shutdown) :

log4j:WARN No appenders could be found for logger (org.quartz.simpl.SimpleThreadPool).

log4j:WARN Please initialize the log4j system properly.

Scheduler isn't shutdown!

Job is executed here.

Job name: Show status Group: DEFAULT

Trigger name: Cron Trigger

Friring Time: Mon Feb 26 09:47:00 GMT+05:30 2007

 

Output of program (Scheduler is shutdown) :

log4j:WARN No appenders could be found for logger (org.quartz.simpl.SimpleThreadPool).

log4j:WARN Please initialize the log4j system properly.

Scheduler is shutdown!

Job cann't be executed here.