CTOCIO IT专家网

天极传媒 比特网 | 天极网 | IT专家网 | IT商网 | 52PK游戏网 | 手机天极 | IT分众 |
IT专家网搜索

您现在的位置: IT专家网 > Web服务子站 > Java技术

使用Quartz实现任务调度和调度管理

作者: 佚名,  出处:IT专家网论坛, 责任编辑: 包春林, 
2008-09-09 04:00
  Quartz是Java里流行的一种开源任务调度框架。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样简单复杂的日程表。

  Quartz是Java里流行的一种开源任务调度框架。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样简单复杂的日程表。Jobs可以做成标准的Java组件或 EJBs。本文会先大概介绍一下如何使用Quartz,然后重点是介绍实际项目里,通过二次开发,增加任务调度的可管理性和异常处理,使它具备一定的商业任务调度框架的功能(参考此文:http://www.fluxcorp.com/products/flux/technical/quartz.html)

  Quartz要求一个任务必须实现接口Job的execute方法,如下一个简单的Job:

  

      import java.util.Date;

  import org.quartz.Job;

  import org.quartz.JobExecutionContext;

  import org.quartz.JobExecutionException;

  public class SimpleJob implements Job {

  public SimpleJob() {

  }

  public void execute(JobExecutionContext context) throws JobExecutionException {

  try {

  Thread.sleep(1000*20);

  } catch (InterruptedException e) {

  e.printStackTrace();

  }

  }

  }

  Quartz将任务和时间触发分开,因此,你还需要指定时间触发,通常采用Cron方式,如每天早上六点,也可以指定某个固定时间,如2008年8月8号等。

  如以下即指定每天早上六点

  

      CronTrigger cronTrigger = new CronTrigger("triggerName", "triggerGroup");

  try {

  CronExpression cexp = new CronExpression("0 6 * * * ");

  cronTrigger.setCronExpression(cexp);

  } catch (Exception e) {

  e.printStackTrace();

  }

  Scheduler 类负责将时间触发指定给JobDetail,简单的来说JobDetail封装了你的任务,并可以提供任务名,所属组,以及附加的一些参数,代码如下:

  

      SchedulerFactory sf = new StdSchedulerFactory();

  Scheduler sched = sf.getScheduler();

  JobDetail job = new JobDetail("jobName", "groupName", SimpleJob.class);

  Scheduler.scheduleJob(job, cronTrigger);

  Job在被触发的时候,会通过反射实例化SimpleJob.class(因此你的Job必须有一个无参数的构造函数),并调用execute方法。

共5页。 1 2 3 4 5 :

网友评论

笔名 
请您注意:遵守国家有关法律、法规,尊重网上道德,承担一切因您的行为而直接或间接引起的法律责任。    IT专家网友拥有管理笔名和留言的一切权利。
  • 周排行榜
  • 月排行榜

邮件订阅

       
天极服务 | 关于我们 | 网站律师 | 加入我们 | 联系我们 | 广告业务 | 友情链接 | 我要挑错
All Rights Reserved, Copyright 2004-2008, Ctocio.com.cn
渝ICP证B2-20030003号 如有意见请与我们联系 powered by 天极内容管理平台CMS4i