Quartz 是一个功能强大的作业调度工具。
Quartz官网:http://quartz-scheduler.org/ 可以在这里下载Quartz,也可以到我共享的资源里下载,免分的,请点击这里-》http://down.51cto.com/data/426993
我下载的是当前最新版本quartz-2.1.5。下载后,我们的压缩包里有:
docs文件夹:里面是Quartz的API、表数据库、图片文件夹
examples:里面是官方提供的一些DEMO
lib:第三方库,一些特性需要它们依靠
quartz:源码
quartz-*:支持各框架的源码
*.jar:一些JAR包
……
下面我们可以将官网下载的安装包里提供的例子导入到自己的IDE中,我使用的是MyEclipse8.5+Apache Tomcat6.0+JDK1.6.0。
创建一个Web应用程序,将第三方库lib文件夹下的jar包(quartz依赖的包)以及quartz-all-2.1.5.jar拷贝到WEB-INF/lib下,把examples/src文件夹拷贝到你的项目src下,刷新下项目,可能会出错,解决办法看这篇[MyEclipse中一些有趣的快捷键]这样即完成示例的准备工作。
来看官网提供的第一个例子:example1
注:将resources这个包里的log4j.xml、quartz_priority.properties这两个拷贝到src下,完整的如下:
先配置好日志文件,下面将会使用输出控制台打印出信息。
HelloJob.java
- package
org.quartz.examples.example1; -
- 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); -
-
-
public HelloJob() { -
} -
-
-
public void execute(JobExecutionContext context) -
throws JobExecutionException { -
-
// Say Hello to the World and display the date/time -
_log.info("Hello World! - " + new Date()); -
} -
- }
- 这是任务执行类,需要实现job接口,在execute方法里写具体的任务实现。org.quartz.JobExecutionContext这个对象可以获取到任务调度程序里传递过来的参数,后面讲到。
- SimpleExample.java(任务调度程序类)
- Quartz框架执行任务调度步骤:
- 创建Scheduler对象,可以从SchedulerFactory类里取得。
-
SchedulerFactory sf = new StdSchedulerFactory(); -
Scheduler sched = sf.getScheduler(); - 创建JobDetail对象,执行任务调度的方法,这个方法实现了job接口
-
JobDetail job = newJob(HelloJob.class) -
.withIdentity("job1", "group1") -
.build(); - 构造job的触发器对象,可以指定任务时间或周期。
-
Trigger trigger = newTrigger() -
.withIdentity("trigger1", "group1") -
.startAt(runTime) -
.build(); - 告诉Quartz安排工作使用的触发器(安排任务)
-
sched.scheduleJob(job, trigger); - 开始调度任务程序
-
sched.start(); - 暂停调度任务,调用standby()使Scheduler回到"stand-by"模式。再次调用start()方法,使Scheduler回到运行状态。
-
sched.standby(); - 停止调度任务,停止后不能重新开始。
-
sched.shutdown(true); -
-