实现任务调度和调度管理.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
使用Quartz实现任务调度和调度管理作者: 佚名,  出处:IT专家网论坛, 责任编辑: 包春林, 2008-09-09 04:00  Quartz是Java里流行的一种开源任务调度框架。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样简单复杂的日程表。  Quartz是Java里流行的一种开源任务调度框架。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样简单复杂的日程表。Jobs可以做成标准的Java组件或 EJBs。本文会先大概介绍一下如何使用Quartz,然后重点是介绍实际项目里,通过二次开发,增加任务调度的可管理性和异常处理,使它具备一定的商业任务调度框架的功能(参考此文:/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方法。 对于上列的SimpleJob,可以从execute方法输入参数context里获取一些属性,如任务名(如例子里的jobName),所在组(如:groupName).更重要的是,context里可以包含你指定的参数,如我们想让SimpleJob在运行的时候休眠时间为50秒,也可以这么写:  ????? public void execute(JobExecutionContext context) throws JobExecutionException {  try {  int?sleep = context.getJobDetail().getJobDataMap().getInt(sleep);  Thread.sleep(1000*sleep);  } catch (InterruptedException e) {  e.printStackTrace();  }  }  参数Sleep将由调度框架传入,如下  ????? SchedulerFactory sf = new StdSchedulerFactory();  Scheduler sched = sf.getScheduler();  JobDetail?job?= new JobDeta

文档评论(0)

dlyaEkIaza + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档