Web Application中使用Quartz

有时间简述一下
做过的东西最好能及时记录下来,拖了一个月,都提不起写它的兴趣了,而且有些细节也已经不太想的起来。
下面是我在项目中用到的一个简单案例,并没有全面的讲解Quartz,但是至少可以在程序中跑起来了。要想了解更多的东西,可以去看官方的文档,另外有一本译著也不错,替他打个广告
***********************************************
Quartz Job Scheduling Framework 中    文    版 
Chuck Cavaness 著
Unmi(隔叶黄莺) 译
译者博客:
http://unmi.blogjava.net/
***********************************************

继续我的内容。本篇介绍怎么在Web Application中加入Quartz 并执行简单的工作调度。

1) 在web.xml中配置Quartz,使它在装载Application时就启动Quartz

 <!-- Start: Quartz servlet configuration -->
 <servlet>
  <description></description>
  <display-name>Quartz Initializer Servlet</display-name>
  <servlet-name>QuartzInitializerServlet</servlet-name>
  <servlet-class>org.quartz.ee.servlet.QuartzInitializerServlet</servlet-class>
  <load-on-startup>1</load-on-startup>
 </servlet>
 <!-- End: Quartz servlet configuration -->

2) 在quartz.properties中配置两个参数

#自定义instance name,通常和项目相关,不是关键属性
org.quartz.scheduler.instanceName = myProjectName

#文件名自定,只要有一个对应的文件即可
org.quartz.plugin.jobInitializer.fileNames= quartz-jobs.xml

3) 配置quartz-job.xml
 
这里定义一个调度器,包括需要调用的job,并设置调用该job的触发器。设置触发器时注意时间的格式。
 
job可以定义多个,下面例子中只定义了一个。
 
<?xml version='1.0' encoding='utf-8'?>
<quartz xmlns=" http://www.quartzscheduler.org/ns/quartz"
 xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation=" http://www.quartzscheduler.org/ns/quartz http://www.quartzscheduler.org/ns/quartz/job_scheduling_data_1_1.xsd"
 version="1.1">
 <job>
  <job-detail>
   <name>CollectJob</name>
   <group>CollectJobs</group>
   <job-class>com.xxx.CollectJob</job-class>
   <volatility>false</volatility>
   <durability>false</durability>
   <recover>false</recover>
  </job-detail>
  <trigger>
   <simple>
    <name>CollectTrigger</name>
    <group>DEFAULT</group>
    <job-name>CollectJob</job-name>
    <job-group>DEFAULT</job-group>
    <start-time>2008-11-30T10:00:00 AM</start-time>
    <!-- repeat indefinitely every day -->
    <repeat-count>-1</repeat-count>
    <repeat-interval>7200000</repeat-interval>
   </simple>
  </trigger>
 </job>
</quartz>
 
4) 实现com.xxx.CollectJob,定义该job的具体事件
public class CollectJob implements Job {
 private static Logger logger = Logger.getLogger(CollectJob.class.getName());
 /**
  * Get logger for collect job.
  *
  * @return logger
  */
 public static Logger getLogger() {
  return logger;
 }
 
 public void execute(JobExecutionContext context)
   throws JobExecutionException {
  long collectorStartTime = System.currentTimeMillis();
  logger.info("Collector: " + context.getJobDetail().getName()
    + " started at " + new Date());
  
  doSomething();
 
  logger.info("Collector: " + context.getJobDetail().getName()
    + " ended at " + new Date());
  long collectorEndTime = System.currentTimeMillis();
  logger.info("It costs " + (collectorEndTime - collectorStartTime)
    + " milliseconds.");
 }
 
 private void doSomething() {
  ...
 }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值