# 示例10 - 使用Quartz插件
说明
此示例演示XML作业初始化插件以及历史记录插件的使用。
# SimpleJob.java源码
package org.quartz.examples.example10;
import java.util.Date;
import java.util.Set;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.JobKey;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* 这只是被例1执行过许多次的简单作业(只改了一下输出信息)
* 作者:Bill Kratzer
*/
public class SimpleJob implements Job {
private static Logger _log = LoggerFactory.getLogger(SimpleJob.class);
/**
* 作业初始化的空参构造函数
*/
public SimpleJob() {
}
/**
* 当与此作业相关联的触发器触发时,由调度器调用此方法
* Throws:作业执行异常(JobExecutionException)-当执行作业时产生异常
*/
@SuppressWarnings("unchecked")
public void execute(JobExecutionContext context)
throws JobExecutionException {
//此作业简单地输出它的名称及运行时间
JobKey jobKey = context.getJobDetail().getKey();
_log.info("Executing job: " + jobKey + " executing at " + new Date() + ", fired by: " + context.getTrigger().getKey());
if(context.getMergedJobDataMap().size() > 0) {
Set<String> keys = context.getMergedJobDataMap().keySet();
for(String key: keys) {
String val = context.getMergedJobDataMap().getString(key);
_log.info(" - jobDataMap entry: " + key + " = " + val);
}
}
context.setResult("hello");
}
}
# PlugInExample.java源码
package org.quartz.examples.example10;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.SchedulerMetaData;
import org.quartz.impl.StdSchedulerFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* 此示例将产生大量要运行的作业
* 作者:James House, Bill Kratzer
*/
public class PlugInExample {
public void run() throws Exception {
Logger log = LoggerFactory.getLogger(PlugInExample.class);
//首先,我们必须获得对调度器的引用
SchedulerFactory sf = new StdSchedulerFactory();
Scheduler sched = null;
try {
sched = sf.getScheduler();
} catch (NoClassDefFoundError e) {
log.error(" Unable to load a class - most likely you do not have jta.jar on the classpath. If not present in the examples/lib folder, please " +
"add it there for this sample to run.", e);
return;
}
log.info("------- Initialization Complete -----------");
log.info("------- (Not Scheduling any Jobs - relying on XML definitions --");
log.info("------- Starting Scheduler ----------------");
//开启调度器
sched.start();
log.info("------- Started Scheduler -----------------");
log.info("------- Waiting five minutes... -----------");
//等待5分钟让我们的作业有机会执行
try {
Thread.sleep(300L * 1000L);
} catch (Exception e) {
//
}
//关闭调度器
log.info("------- Shutting Down ---------------------");
sched.shutdown(true);
log.info("------- Shutdown Complete -----------------");
SchedulerMetaData metaData = sched.getMetaData();
log.info("Executed " + metaData.getNumberOfJobsExecuted() + " jobs.");
}
public static void main(String[] args) throws Exception {
PlugInExample example = new PlugInExample();
example.run();
}
}
# 控制台输出
[main] INFO org.quartz.impl.StdSchedulerFactory - Using default implementation for ThreadExecutor
[main] INFO org.quartz.simpl.SimpleThreadPool - Job execution threads will use class loader of thread: main
[main] INFO org.quartz.core.SchedulerSignalerImpl - Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl
[main] INFO org.quartz.core.QuartzScheduler - Quartz Scheduler v.2.3.0 created.
[main] INFO org.quartz.simpl.RAMJobStore - RAMJobStore initialized.
[main] INFO org.quartz.core.QuartzScheduler - Scheduler meta-data: Quartz Scheduler (v2.3.0) 'DefaultQuartzScheduler' with instanceId 'NON_CLUSTERED'
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 10 threads.
Using job-store 'org.quartz.simpl.RAMJobStore' - which does not support persistence. and is not clustered.
[main] INFO org.quartz.impl.StdSchedulerFactory - Quartz scheduler 'DefaultQuartzScheduler' initialized from default resource file in Quartz package: 'quartz.properties'
[main] INFO org.quartz.impl.StdSchedulerFactory - Quartz scheduler version: 2.3.0
[main] INFO org.quartz.examples.example10.PlugInExample - ------- Initialization Complete -----------
[main] INFO org.quartz.examples.example10.PlugInExample - ------- (Not Scheduling any Jobs - relying on XML definitions --
[main] INFO org.quartz.examples.example10.PlugInExample - ------- Starting Scheduler ----------------
[main] INFO org.quartz.core.QuartzScheduler - Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED started.
[main] INFO org.quartz.examples.example10.PlugInExample - ------- Started Scheduler -----------------
[main] INFO org.quartz.examples.example10.PlugInExample - ------- Waiting five minutes... -----------
[main] INFO org.quartz.examples.example10.PlugInExample - ------- Shutting Down ---------------------
[main] INFO org.quartz.core.QuartzScheduler - Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED shutting down.
[main] INFO org.quartz.core.QuartzScheduler - Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED paused.
[main] INFO org.quartz.core.QuartzScheduler - Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED shutdown complete.
[main] INFO org.quartz.examples.example10.PlugInExample - ------- Shutdown Complete -----------------
[main] INFO org.quartz.examples.example10.PlugInExample - Executed 0 jobs.
Process finished with exit code 0

微信公众号

QQ交流群
原创网站开发,偏差难以避免。
如若发现错误,诚心感谢反馈。
愿你倾心相念,愿你学有所成。
愿你朝华相顾,愿你前程似锦。
如若发现错误,诚心感谢反馈。
愿你倾心相念,愿你学有所成。
愿你朝华相顾,愿你前程似锦。