`
deng816
  • 浏览: 6569 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

Quartz学习一

阅读更多

              最近项目里面有用到Quartz框架来开发一些定时任务等,之前是没有接触过它,因此在认真研究后,把我自己的一些学习心得与所写的例子记录在这里。

              前几天又再次回顾了以前了解过的一些设计模式,并决心以博客的形式记录与此,主要有两个目的,第一:如果哪天我对这些知识点忘记了,我可以随时拿起手机进行回顾;第二:如果这些知识点能够帮助别人学习那就是再好不过的事了。才记录不到几篇的内容就收到了一些网友的评论,其中有鼓励的声音,也有批评的声音,同时也有怀疑的声音。对于这些我都会欣然去接受,我觉得它们都是对自己的鼓励。同时我想说:“在知识的大森林中我永远想做一只不断追求的菜鸟”。欢迎各位的指正,这将是我莫大的动力。

 

第一篇  不基于配置的Quartz

     首先你需要去下载Quartz,并在MyEclipse中创建一个Java工程,并加入一些jar包,如:我这里加入的包,commons-beanutils.jar,commons-codec.jar,commons-collections-3.1.jar,commons-dbcp-1.2.1.jar,

commons-digester-1.8.jar,commons-logging-1.1.jar,commons-pool.jar,quartz-1.6.0.jar。

    每一个quartz job的实现类,都在实现Quartz的job接口,并实现这个接口中的唯一方法:execute。如下代码:

package com.dsl.myjob;

import java.text.SimpleDateFormat;
import java.util.Date;

import org.quartz.Job;
import org.quartz.JobDataMap;
import org.quartz.JobDetail;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;

public class TestJob implements Job {

	@Override
	public void execute(JobExecutionContext context) throws JobExecutionException {
		System.out.println("enter execute function..."+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
		JobDetail jd=context.getJobDetail();
		JobDataMap jdm=jd.getJobDataMap();
		String hi=jdm.getString("HI");
		if(hi!=null){
			System.out.println(hi);
		}
		String name=jdm.getString("NAME");
		if(name!=null){
			System.out.println(name);
		}
	}

}

 当 Quartz 调度器确定到时间要激发一个 Job 的时候,它就会生成一个 Job 实例,并调用这个实例的 execute() 方法。调度器只管调用 execute() 方法,而不关心执行的结果.

SimpleScheduler类:

package com.dsl.myjob;

import java.util.Date;

import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SimpleTrigger;
import org.quartz.Trigger;
import org.quartz.TriggerUtils;
import org.quartz.impl.StdSchedulerFactory;

public class SimpleScheduler {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		SimpleScheduler simple=new SimpleScheduler();
		//创建调度器并调度job
		try {
			Scheduler sch=simple.createScheduler();
			simple.schedulJob(sch);
			sch.start();//这一步很重要,如果不调start 那么调度器不会启用
			
			//sch.shutdown();//只用调这个方法时,调度器才会关闭
		} catch (SchedulerException e) {
			System.out.println(e);
		}
	}

	
	private void schedulJob(Scheduler sch) throws SchedulerException {
		//为job create 一个JobDetail
		JobDetail jobDetail=new JobDetail("ScanDirectory",Scheduler.DEFAULT_GROUP,TestJob.class);
		//创建一个每10秒运和的触发器
		Trigger trigger=TriggerUtils.makeSecondlyTrigger(10);
		trigger.setName("scanTrigger");//设置trigger的名称
		//设置第一次出发时间 
		trigger.setStartTime(new Date());
		//关联trigger和job
		sch.scheduleJob(jobDetail,trigger);
		//---
	}

	//create 调度器
	private Scheduler createScheduler() throws SchedulerException {
		
		return StdSchedulerFactory.getDefaultScheduler();
	}

}

 

 可是这样写却有很多不方便之处:

1、因为每一个 Job 都必须用 Scheduler 来注册,所以先定义一个 JobDetail,并关联到这个 Scheduler的 实例。如果我想重用一个Job类,并让它产生多个实例,那们你就要为它创建多个JobDetail 并在Scheduler注册,这样就不爽了。

2、如果我们要在 Job 启动之后改变它的执行时间和频度,必须去修改源代码重新编译,这样也不方便。

        所以Quartz它提供了方便的基于配置的实现。学习二中将提到。 

4
0
分享到:
评论
2 楼 jiaonan 2013-10-17  
继续关注
1 楼 wingsrao 2013-10-17  
简单明了。解释的不错。

相关推荐

    quartz学习1

    NULL 博文链接:https://zxymicky.iteye.com/blog/1217968

    Quartz深入浅出

    Quartz学习和讲解的word和ppt各一份,web开发者必备。

    quartz学习ppt,document和示例代码

    Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的程序。

    Quartz的学习

    这个是一个很好的事例。很适合初学者. Quartz是一个有关任务管理调度的框架。 建议学java的都学习下

    自开发实现Quartz Web管理工具

    基于这样的原因,也是为了学习一个Quartz(以前还没有用到过)。就想着做一个简单Quartz的Web管理工具。包括可以添加一个任务(添加的任务只能是实现了Quartz Job接口的任务),暂停、启动、删除任务。基本这些都能...

    一个最简单的quartz案例

    博客中《quartz学习笔记一:一个最简单的quartz案例》的项目代码,包含jar包,只要导入即可运行。这是一个最基本的Quartz定时器HelloWorld版。

    quartz学习总结

    quartz学习总结 本文使用一系列代码示例介绍 Quartz.NET API,演示它的机制,例如作业、触发器、作业仓库。 Quartz.NET是一个开源的作业调度框架,是OpenSymphony 的 Quartz API

    quartz定时任务使用例子大全

    quartz定时任务使用例子大全,这里面介绍了三种...你只需要在自己的数据库中执行以下对应的sql文件,然后修改一下自己的数据库连接信息就可以直接执行了,而且还附带了quartz学习的ppt,让你以最快的方式学会使用它!

    Quartz学习.doc

    快速学习定时器 ,我也是转载的 ,并非原创,看一看还是有很大帮助的

    一个基础的Quartz定时器案例

    博客中《quartz学习笔记二:一个基础的Quartz定时器案例》的项目代码,包含jar包,只要导入即可运行。这是一个最基本的Quartz定时器API版。

    Quartz_Job+Scheduling_Framework

    也许大多数人听说 Quartz 是在学习或使用 Spring 的时 候,也就是 Spring 整合了 Quartz。而我也不例外,同样是在春天里得悉了这块石英。 当初公司一个项目中有些定时候任务,原来是用 JDK 的 TaskTimer 来实现的,...

    Quartz调度学习笔记

    Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的日程序表

    quartz 企业级 java

    Java实现定时任务,学习和使用企业级框架quartz

    web项目集成quartz实例(9个)

    web项目集成quartz,从简单到复杂,1-9分开展示quartz的集成到配置,希望和大家一起学习一下

    quartz定时器源码jar包下载

    一个很好的定时器例子,里面有quartz全套jar包,注释详细适合学习

    一个Spring+quartz的例子,希望对大家有帮助

    一个简单的 定时任务的例子,希望能对大家的学习有帮助。 最后,附:cronExpression配置说明 字段 允许值 允许的特殊字符 秒 0-59 , - * / 分 0-59 , - * / 小时 0-23 , - * / 日期 1-31 , - * ? / L W C ...

    Quartz教程

    本人最近学习了传智播客的一个电商项目,把里面用到的工具和大家分享一下,方便大家的javaweb的学习。-quartz基本上任何公司都会用到调度这个功能, 比如我们公司需要定期执行调度生成报表, 或者比如博客什么的定时...

    Quartz Job Scheduling Framework 中文版 V1.0.0.chm

    大多数人听说 Quartz 是在学习或使用 Spring 的时候,也就是 Spring 整合了 Quartz。 把本人博客上零零散散,顺序错乱的各篇译章汇集成册,做成了一个 《Quartz Job Scheduling Framework 中文版.chm 》文件与各位...

    quartz-core-learning:关于Quartz技术的学习积累的例子,开始Quartz学习之旅,精进Quartz

    1.learn_quartz 项目, 学习Quartz的入门demo教程详情使用请参考:2.spring_quartz 项目 ,学习Quartz和Spring整理的入门教程详情使用请参考:3.ssm_quartz项目,一个简单的web项目学习ssm整合Quartz详情使用请参考:...

Global site tag (gtag.js) - Google Analytics