pom.xml:
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>1.8.0</version>
</dependency>
<!-- LOGGING DEPENDENCIES - LOG4J -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.4.2</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.14</version>
</dependency>
(taken from http://www.quartz-scheduler.org/…t_guide.html )
Should end up on classpath in org/quartz/quartz.properties.
org.quartz.scheduler.instanceName = MyScheduler org.quartz.scheduler.instanceId = 1 org.quartz.scheduler.rmi.export = false org.quartz.scheduler.rmi.proxy = false org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool org.quartz.threadPool.threadCount = 3 org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SimpleTrigger;
import org.quartz.Trigger;
import org.quartz.impl.StdSchedulerFactory;
/**
* Quartz example.
*/
public class App
{
public static void main( String[] args ) throws InterruptedException
{
try {
// Grab the Scheduler instance from the Factory.
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
scheduler.start();
// Define job metadata.
JobDetail job = new JobDetail("job1", "group1", MyJobClass.class);
// Define a Trigger that will fire "now"
//Trigger trigger = new SimpleTrigger("trigger1", "group1", new Date());
// Or this one will repeat 10 times after 100 ms.
Trigger trigger = new SimpleTrigger("trigger1", "group1", 10, 100);
// Schedule the job with the trigger
scheduler.scheduleJob(job, trigger);
Thread.sleep( 5000 );
// Shutdown
scheduler.shutdown();
} catch( SchedulerException se ) {
se.printStackTrace();
}
}
}
And yet the code of the job class. Note that this is instantiated for each run, i.e. 11 times in our example.
package cz.dynawest.quartztry.quartztry;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
/**
* Quartz job class.
*/
public class MyJobClass implements Job {
private static int counter = 0;
private static int inst = 0;
public MyJobClass() {
System.out.println( "INSTANTIATED "+ ++inst +" times!" );
}
public void execute( JobExecutionContext context ) throws JobExecutionException {
System.out.println( "EXECUTED "+ ++counter +" times!" );
//throw new UnsupportedOperationException("WTF.");
}
}
Since 1.7.0, Quartz uses SLF4j, so you can use e.g. with log4j.
If you decide so, put this on classpath to log4.properties.
log4j.rootLogger=DEBUG, stdout, file log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d %-5r %-5p [%c] (%t:%x) %m%n log4j.appender.file=org.apache.log4j.DailyRollingFileAppender log4j.appender.file.File=app.log log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=%d %-5r %-5p [%c] (%t:%x) %m%n
2010-05-02 17:47:37,281 0 INFO [org.quartz.core.SchedulerSignalerImpl] (main:) Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl 2010-05-02 17:47:37,281 0 INFO [org.quartz.core.QuartzScheduler] (main:) Quartz Scheduler v.1.8.0 created. 2010-05-02 17:47:37,281 0 INFO [org.quartz.simpl.RAMJobStore] (main:) RAMJobStore initialized. 2010-05-02 17:47:37,281 0 INFO [org.quartz.core.QuartzScheduler] (main:) Scheduler meta-data: Quartz Scheduler (v1.8.0) 'MyScheduler' with instanceId '1' Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally. NOT STARTED. Currently in standby mode. Number of jobs executed: 0 Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 3 threads. Using job-store 'org.quartz.simpl.RAMJobStore' - which does not support persistence. and is not clustered. 2010-05-02 17:47:37,281 0 INFO [org.quartz.impl.StdSchedulerFactory] (main:) Quartz scheduler 'MyScheduler' initialized from default resource file in Quartz package: 'quartz.properties' 2010-05-02 17:47:37,281 0 INFO [org.quartz.impl.StdSchedulerFactory] (main:) Quartz scheduler version: 1.8.0 2010-05-02 17:47:37,281 0 INFO [org.quartz.core.QuartzScheduler] (main:) Scheduler MyScheduler_$_1 started. 2010-05-02 17:47:37,281 0 DEBUG [org.quartz.simpl.SimpleJobFactory] (MyScheduler_QuartzSchedulerThread:) Producing instance of Job 'group1.job1', class=cz.dynawest.quartztry.quartztry.MyJobClass INSTANTIATED 1 times! 2010-05-02 17:47:37,296 15 DEBUG [org.quartz.core.JobRunShell] (MyScheduler_Worker-1:) Calling execute on job group1.job1 EXECUTED 1 times! 2010-05-02 17:47:37,390 109 DEBUG [org.quartz.simpl.SimpleJobFactory] (MyScheduler_QuartzSchedulerThread:) Producing instance of Job 'group1.job1', class=cz.dynawest.quartztry.quartztry.MyJobClass INSTANTIATED 2 times! 2010-05-02 17:47:37,390 109 DEBUG [org.quartz.core.JobRunShell] (MyScheduler_Worker-2:) Calling execute on job group1.job1 EXECUTED 2 times! 2010-05-02 17:47:37,484 203 DEBUG [org.quartz.simpl.SimpleJobFactory] (MyScheduler_QuartzSchedulerThread:) Producing instance of Job 'group1.job1', class=cz.dynawest.quartztry.quartztry.MyJobClass INSTANTIATED 3 times! 2010-05-02 17:47:37,781 500 DEBUG [org.quartz.core.JobRunShell] (MyScheduler_Worker-3:) Calling execute on job group1.job1 EXECUTED 3 times! 2010-05-02 17:47:37,781 500 DEBUG [org.quartz.simpl.SimpleJobFactory] (MyScheduler_QuartzSchedulerThread:) Producing instance of Job 'group1.job1', class=cz.dynawest.quartztry.quartztry.MyJobClass INSTANTIATED 4 times! 2010-05-02 17:47:37,781 500 DEBUG [org.quartz.core.JobRunShell] (MyScheduler_Worker-1:) Calling execute on job group1.job1 EXECUTED 4 times! 2010-05-02 17:47:37,781 500 DEBUG [org.quartz.simpl.SimpleJobFactory] (MyScheduler_QuartzSchedulerThread:) Producing instance of Job 'group1.job1', class=cz.dynawest.quartztry.quartztry.MyJobClass INSTANTIATED 5 times! 2010-05-02 17:47:37,781 500 DEBUG [org.quartz.core.JobRunShell] (MyScheduler_Worker-2:) Calling execute on job group1.job1 EXECUTED 5 times! 2010-05-02 17:47:38,281 1000 DEBUG [org.quartz.utils.UpdateChecker] (Timer-0:) Checking for available updated version of Quartz... 2010-05-02 17:47:37,781 500 DEBUG [org.quartz.simpl.SimpleJobFactory] (MyScheduler_QuartzSchedulerThread:) Producing instance of Job 'group1.job1', class=cz.dynawest.quartztry.quartztry.MyJobClass INSTANTIATED 6 times! 2010-05-02 17:47:38,281 1000 DEBUG [org.quartz.simpl.SimpleJobFactory] (MyScheduler_QuartzSchedulerThread:) Producing instance of Job 'group1.job1', class=cz.dynawest.quartztry.quartztry.MyJobClass INSTANTIATED 7 times! 2010-05-02 17:47:38,281 1000 DEBUG [org.quartz.simpl.SimpleJobFactory] (MyScheduler_QuartzSchedulerThread:) Producing instance of Job 'group1.job1', class=cz.dynawest.quartztry.quartztry.MyJobClass INSTANTIATED 8 times! 2010-05-02 17:47:38,281 1000 DEBUG [org.quartz.core.JobRunShell] (MyScheduler_Worker-2:) Calling execute on job group1.job1 EXECUTED 6 times! 2010-05-02 17:47:38,281 1000 DEBUG [org.quartz.simpl.SimpleJobFactory] (MyScheduler_QuartzSchedulerThread:) Producing instance of Job 'group1.job1', class=cz.dynawest.quartztry.quartztry.MyJobClass INSTANTIATED 9 times! 2010-05-02 17:47:38,281 1000 DEBUG [org.quartz.core.JobRunShell] (MyScheduler_Worker-1:) Calling execute on job group1.job1 EXECUTED 7 times! 2010-05-02 17:47:38,281 1000 DEBUG [org.quartz.core.JobRunShell] (MyScheduler_Worker-3:) Calling execute on job group1.job1 EXECUTED 8 times! 2010-05-02 17:47:38,796 1515 DEBUG [org.quartz.core.JobRunShell] (MyScheduler_Worker-2:) Calling execute on job group1.job1 2010-05-02 17:47:38,812 1531 DEBUG [org.quartz.simpl.SimpleJobFactory] (MyScheduler_QuartzSchedulerThread:) Producing instance of Job 'group1.job1', class=cz.dynawest.quartztry.quartztry.MyJobClass INSTANTIATED 10 times! 2010-05-02 17:47:38,812 1531 DEBUG [org.quartz.core.JobRunShell] (MyScheduler_Worker-1:) Calling execute on job group1.job1 EXECUTED 9 times! EXECUTED 10 times! 2010-05-02 17:47:38,812 1531 DEBUG [org.quartz.simpl.SimpleJobFactory] (MyScheduler_QuartzSchedulerThread:) Producing instance of Job 'group1.job1', class=cz.dynawest.quartztry.quartztry.MyJobClass INSTANTIATED 11 times! 2010-05-02 17:47:38,812 1531 DEBUG [org.quartz.core.JobRunShell] (MyScheduler_Worker-3:) Calling execute on job group1.job1 EXECUTED 11 times! 2010-05-02 17:47:42,281 5000 INFO [org.quartz.core.QuartzScheduler] (main:) Scheduler MyScheduler_$_1 shutting down. 2010-05-02 17:47:42,281 5000 INFO [org.quartz.core.QuartzScheduler] (main:) Scheduler MyScheduler_$_1 paused. 2010-05-02 17:47:42,281 5000 INFO [org.quartz.core.QuartzScheduler] (main:) Scheduler MyScheduler_$_1 shutdown complete. 2010-05-02 17:47:42,312 5031 DEBUG [org.quartz.simpl.SimpleThreadPool] (MyScheduler_Worker-1:) WorkerThread is shut down. 2010-05-02 17:47:42,312 5031 DEBUG [org.quartz.simpl.SimpleThreadPool] (MyScheduler_Worker-2:) WorkerThread is shut down. 2010-05-02 17:47:42,312 5031 DEBUG [org.quartz.simpl.SimpleThreadPool]