ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:23.62KB ,
资源ID:15115803      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/15115803.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(quartz定时任务2Word文档格式.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

quartz定时任务2Word文档格式.docx

1、自己写的“定时程序”实现此接口的void execute(JobExecutionContext arg0)方法,Job还有一类为有状态的StatefulJob接口,如果我们需要在上一个作业执行完后,根据其执行结果再进行下次作业的执行,则需要实现此接口。Trigger抽象类:调度类(Scheduler)在时间到时调用此类,再由trigger类调用指定的定时程序。Quertz中提供了两类触发器为:SimpleTrigger,CronTrigger。前者用于实现比较简单的定时功能,例如几点开始,几点结束,隔多长时间执行,共执行多少次等,后者提供了使用表达式来描述定时功能,因此适用于比较复杂的定时描

2、述,例如每个月的最后一个周五,每周的周四等。JobDetail类:具体某个定时程序的详细描述,包括Name,Group,JobDataMap等。JobExecutionContext类:定时程序执行的run-time的上下文环境,用于得到当前执行的Job的名字,配置的参数等。JobDataMap类:用于描述一个作业的参数,参数可以为任何基本类型例如String,float等,也可为某个对象的引用.JobListener,TriggerListener接口:用于监听触发器状态和作业扫行状态,在特写状态执行相应操作。JobStore类:在哪里执行定进程序,可选的有在内存中,在数据库中。开始:边看例

3、题边学习,首先从简单触发器开始1、作业通过实现 org.quartz.job 接口,可以使 Java 类变成可执行的。这个类用一条非常简单的输出语句覆盖了 execute(JobExecutionContext context) 方法。程序代码:import java.util.Date;import org.quartz.Job;import org.quartz.JobExecutionContext;import org.quartz.JobExecutionException;public class SimpleQuartzJob implements Job public Simp

4、leQuartzJob() public void execute(JobExecutionContext context) throws JobExecutionException System.out.println(In SimpleQuartzJob - executing its JOB at + new Date() + by + context.getTrigger().getName();2、触发器和调度器public void task() throws SchedulerException /通过SchedulerFactory来获取一个调度器 SchedulerFacto

5、ry schedulerFactory = new StdSchedulerFactory(); Scheduler scheduler = schedulerFactory.getScheduler(); /引进作业程序 JobDetail jobDetail = new JobDetail(jobDetail-s1, jobDetailGroup-s1, SimpleQuartzJob.class); /new一个触发器 SimpleTrigger simpleTrigger = new SimpleTrigger(simpleTriggertriggerGroup-s1); /设置作业启

6、动时间 long ctime = System.currentTimeMillis(); simpleTrigger.setStartTime(new Date(ctime); /设置作业执行间隔 simpleTrigger.setRepeatInterval(10000); /设置作业执行次数 simpleTrigger.setRepeatCount(10); /设置作业执行优先级默认为5 /simpleTrigger.setPriority(10); /作业和触发器设置到调度器中 scheduler.scheduleJob(jobDetail, simpleTrigger); /启动调度器

7、 scheduler.start();一个简单的quartz任务就完成了Quartz定时发送消息的功能,该功能依附于Web应用上,即当Web应用启动时,该应用就开始作用。起先决定使用java.util.Timer和java.util.TimerTask来实现,但是研究了一下以后发现Java Timer的功能比较弱,而且其线程的范围不受Web应用的约束。后来发现了Quartz这个开源的调度框架,非常有趣。 首先我们要得到Quartz的最新发布版。目前其最新的版本是1.6。我们可以从以下地址获得它的完整下载包,包中可谓汤料十足,不仅有我们要的quartz.jar,更包含多个例程和详细的文档,从AP

8、I到配置文件的XSD一应俱全。感兴趣的朋友也可以在src目录下找到该项目的源码一看究竟。 废话少说,下面就来看一看这个东东是怎么在Java Web Application中得以使用的。 首先不得不提出的是Quartz的三个核心概念:调度器、触发器、作业。让我们来看看他们是如何工作的吧。 一作业总指挥调度器 1Scheduler接口 该接口或许是整个Quartz中最最上层的东西了,它提携了所有触发器和作业,使它们协调工作。每个Scheduler都存有JobDetail和Trigger的注册,一个Scheduler中可以注册多个JobDetail和多个Trigger,这些JobDetail和Tri

9、gger都可以通过group name和他们自身的name加以区分,以保持这些JobDetail和Trigger的实例在同一个Scheduler内不会冲突。所以,每个Scheduler中的JobDetail的组名是唯一的,本身的名字也是唯一的(就好像是一个JobDetail的ID)。Trigger也是如此。 Scheduler实例由SchedulerFactory产生,一旦Scheduler实例生成后,我们就可以通过生成它的工厂来找到该实例,获取它相关的属性。下面的代码为我们展示了如何从一个Servlet中找到SchedulerFactory并获得相应的Scheduler实例,通过该实例,我们

10、可以获取当前作业中的testmode属性,来判断该作业是否工作于测试模式。Java代码 /从当前Servlet上下文中查找StdSchedulerFactory ServletContext ctx=request.getSession().getServletContext(); StdSchedulerFactory factory = (StdSchedulerFactory) ctx.getAttribute(org.quartz.impl.StdSchedulerFactory.KEY Scheduler sch = null; try /获取调度器 sch = factory.ge

11、tScheduler(SchedulerName /通过调度器实例获得JobDetail,注意领会JobDetailName和GroupName的用法 JobDetail jd=sch.getJobDetail(JobDetailNameGroupName Map jobmap1=jd.getJobDataMap(); istest=jobmap1.get(testmode)+; catch (Exception se) /如果得不到当前作业,则从配置文件中读取testmode ReadXML(job.xml).get(“job.testmode”); /从当前Servlet上下文中查找Std

12、SchedulerFactory Scheduler实例生成后,它处于stand-by模式,需要调用其start方法来使之投入运作。public class SendMailShedule /设置标准SchedulerFactory static SchedulerFactory schedFact = new org.quartz.impl.StdSchedulerFactory(); static Scheduler sched; public static void run()throws Exception /生成Scheduler实例 sched = schedFact.getScheduler(); /创建一个JobDetail实例,对应的Job实现类是SendMailJob JobDetail jobDetail = new JobDetail(myJob,sched.DEFAULT_GROUP,SendMailJob.class); /设置CronTrigger,利用Cron表达式设定触发时间 CronTrigger trigger = new CronTrigger(myTrigger,test0 0 8 1 * ? sched.scheduleJob(

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1