Quartz est une librairie java open source permettant l’ordonnancement et la création de job (traitement) dans n’importe quelle application java.
Getting started:
Nous allons dans cette partie mettre en place une application java qui a pour but de présenter les elements de base pour creer un ordonanceur simple.
nous pouvons soit mettre en place un projet Maven dans quel cas il faut ajouter les dependences suivantes au pom.xml:

soit telecharger directement les jar –ici– (avec les dependences) et les ajouter dans le classpath de notre application. l’archive contient toutes les dependences ainsi qu’un certains nombre d’exemple dont nous pourrons nous inspirer.
Création d’un nouveau projet:
nous allons creer un projet simple en y integrant les jar précedement téléchargé.
les jar se trouve dans le repertoire lib de l’archive. nous allons les ajouter dans le classpath

Création du main de notre application:
import static org.quartz.JobBuilder.newJob;
import static org.quartz.TriggerBuilder.newTrigger;
import static org.quartz.SimpleScheduleBuilder.simpleSchedule;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.Trigger;
import org.quartz.impl.StdSchedulerFactory;
public class QuartzTest {
public static void main(String[] args) {
try {
// Création d'un ordonnanceur par default
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
// demarrer l'ordonanceur
scheduler.start();
//Création d'un nouveau job en se basant sur la class HelloJob qui affiche un message
JobDetail job = newJob(HelloJob.class).withIdentity("myJob", "group1").build();
//le Trigger sert à programmé le moment auquel notre job sera executé
Trigger trigger = newTrigger().withIdentity("myTrigger", "group1")
.startNow()
//determiner l'intervalle d'execution ici 5 sec et la condition de fin ici jamais
.withSchedule(simpleSchedule().withIntervalInSeconds(5).repeatForever())
.build();
//demarrage du job en se basant sur le trigger
scheduler.scheduleJob(job,trigger);
} catch (SchedulerException se) {
se.printStackTrace();
}
}
}
Remarque nous avons utilisé pour definir le job et le trigger des methode static predefini dans les class JobBuilder et TriggerBuilder meme chose pour le simpleSchedule
le code du job se trouve dans la classe HelloJob suivante:
import java.util.Date;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
public class HelloJob implements Job {
private static Logger _log = LoggerFactory.getLogger(HelloJob.class);
/**
* un constructeur vide pour l'initialisation du job
*/
public HelloJob() {
}
/**
* execute est appeler par le scheduler quand un trigger associé au job remplie les condition d'execution
*/
public void execute(JobExecutionContext context)
throws JobExecutionException {
// Affiche Hello World! ainsi que la date et heure d'execution
_log.info("Hello World! - " + new Date());
}
}
pour que l’affichage se face sur la console nous devons definir un fichier de configuration pour l’utilisation de log4j dans le classpath de notre projet:
log4j.rootLogger=debug, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%t %-5p %c{2} - %m%n
Résultat de l’éxécution:

Comme le montre l’execution nous avons bien une execution de la class HelloJob toutes les 5 secondes et ceux indefiniment.