Sunday

Quartz 2 Scheduler example

Quartz helps to schedule a job to run at a specific time.
  • Download quartz-2.1.5.jar from this location and add to buildpath of your project.
  • For maven Project:

<dependencies>
 <dependency>
  <groupId>org.quartz-scheduler</groupId>
  <artifactId>quartz</artifactId>
  <version>2.1.5</version>
 </dependency>
</dependencies>

  • File > New > Other > Dynamic Web Project







  • Copy quartz.2.1.5.jar under WEB-INF/lib


  • File > New > Class










package code.more.talk.less;

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;

public class QuartzJOB implements Job{
     
   public void execute(JobExecutionContext context)throws JobExecutionException 
{
          System.out.println("Hello Quartz!");     
 }
}


File > New > Folder >> resources

  • Right click > properties > Java Build Path > Source


  • Right click on resources folder > New > Other > Properties File
  • Content of quartz.properties file:

org.quartz.scheduler.instanceName = QuartzJOB
org.quartz.threadPool.threadCount = 3

org.quartz.plugin.jobInitializer.class =org.quartz.plugins.xml.XMLSchedulingDataProcessorPlugin
org.quartz.plugin.jobInitializer.fileNames = quartz.xml
org.quartz.plugin.jobInitializer.failOnFileNotFound = true
  • Right click on resources folder > New > Other > Xml file


Content of quartz.xml file:

    <?xml version="1.0" encoding="UTF-8"?>
<job-scheduling-data
      xmlns="http://www.quartz-scheduler.org/xml/JobSchedulingData"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.quartz-scheduler.org/xml/JobSchedulingData
        http://www.quartz-scheduler.org/xml/job_scheduling_data_1_8.xsd"
      version="1.8">

      <schedule>
            <job>
                  <name>QuartzJOB</name>
                  <job-class>code.more.talk.less.QuartzJOB</job-class>
            </job>

            <trigger>
                  <cron>
                        <name>QuartzTrigger</name>
                        <job-name>QuartzJOB</job-name>
                        <!-- It will run every 5 seconds -->
                        <cron-expression>0/5 * * * * ?</cron-expression>
                  </cron>
            </trigger>
      </schedule>
     
</job-scheduling-data>


Add below code to the web.xml:


    <context-param>
         <param-name>quartz:config-file</param-name>
         <param-value>quartz.properties</param-value>
         <!-- <param-value>/some/path/my_quartz.properties</param-value> -->
     </context-param>
     <context-param>
         <param-name>quartz:shutdown-on-unload</param-name>
         <param-value>true</param-value>
     </context-param>
     <context-param>
         <param-name>quartz:wait-on-shutdown</param-name>
         <param-value>true</param-value>
     </context-param>
     <context-param>
         <param-name>quartz:start-on-load</param-name>
         <param-value>true</param-value>
     </context-param>
    
     <listener>
          <listener-class>
              org.quartz.ee.servlet.QuartzInitializerListener
         </listener-class>
     </listener>
Start application server and see the result:


No comments:

Post a Comment