Quartz

来源:互联网 发布:淘宝女装店推荐 编辑:程序博客网 时间:2024/05/18 02:37

Quartz 是一个功能强大的作业调度工具。 
      日程安排好了之后,我们就要去执行,Quartz可以计划的执行这些任务,定时、循环或在某一个时间来执行我们需要做的事,用到Quartz可以很好的解决我们平时工作中的琐碎麻烦的事:比如,数据库系统需要我们每天23:50的时候需要执行一次备份,每月的15号需要将公司账目平台里的工资表导出……有了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

Java代码 复制代码 收藏代码
  1. package org.quartz.examples.example1;    
  2.     
  3. import java.util.Date;    
  4.     
  5. import org.slf4j.Logger;    
  6. import org.slf4j.LoggerFactory;    
  7. import org.quartz.Job;    
  8. import org.quartz.JobExecutionContext;    
  9. import org.quartz.JobExecutionException;    
  10.     
  11.     
  12. public class HelloJob implements Job    
  13.     
  14.     private static Logger _log LoggerFactory.getLogger(HelloJob.class);    
  15.     
  16.         
  17.     public HelloJob()    
  18.        
  19.     
  20.         
  21.     public void execute(JobExecutionContext context)    
  22.         throws JobExecutionException    
  23.     
  24.         // Say Hello to the World and display the date/time    
  25.         _log.info("Hello World! " new Date());    
  26.        
  27.     
  28.    
  29. 这是任务执行类,需要实现job接口,在execute方法里写具体的任务实现。org.quartz.JobExecutionContext这个对象可以获取到任务调度程序里传递过来的参数,后面讲到。   
  30. SimpleExample.java(任务调度程序类)   
  31. Quartz框架执行任务调度步骤:   
  32. 创建Scheduler对象,可以从SchedulerFactory类里取得。   
  33.       SchedulerFactory sf new StdSchedulerFactory();   
  34.       Scheduler sched sf.getScheduler();   
  35. 创建JobDetail对象,执行任务调度的方法,这个方法实现了job接口   
  36.       JobDetail job newJob(HelloJob.class)   
  37.             .withIdentity("job1""group1")   
  38.             .build();   
  39. 构造job的触发器对象,可以指定任务时间或周期。   
  40.       Trigger trigger newTrigger()   
  41.             .withIdentity("trigger1""group1")   
  42.             .startAt(runTime)   
  43.             .build();   
  44. 告诉Quartz安排工作使用的触发器(安排任务)   
  45.       sched.scheduleJob(job, trigger);   
  46. 开始调度任务程序   
  47.       sched.start();   
  48. 暂停调度任务,调用standby()使Scheduler回到"stand-by"模式。再次调用start()方法,使Scheduler回到运行状态。    
  49.       sched.standby();   
  50. 停止调度任务,停止后不能重新开始。    
  51.       sched.shutdown(true);   
  52.     
  53.    
0 0