`
XmKevinChen
  • 浏览: 86128 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

[Quartz]Quartz定时器的j2ee系统使用

    博客分类:
  • J2EE
阅读更多
Quartz是个优秀的开源定时器,可以用来实现j2ee系统中的很多定时操作。
这里只作简要的描述,官方网站上有详细的介绍
http://www.opensymphony.com/quartz/

简单的来说,Quartz将一个定时事件分成两个模块:Job(任务)和Trigger(触发器)
Job用来定义工作内容;Trigger用来说明触发条件,也就是定时条件
一个Job可以跟多个的Trigger关联,从而实现不同类型的定时事件。
Trigger类有两个继承类SimpleTrigger和CronTrigger,具体的差别请查看文档

添加一个定时事件,实现每小时执行一次SayHelloWorld定义的任务
SchedulerFactory schedulerFactory = new StdSchedulerFactory();
Scheduler scheduler = schedulerFactory.getScheduler();
JobDetail jobDetail = new JobDetail("jobName", "groupName",
					SayHelloWorld.class);
// fire every house
Trigger trigger = TriggerUtils.makeHourlyTrigger();
// start on the next even hour
trigger.setStartTime(TriggerUtils.getEvenHourDate(new Date()));
trigger.setName("triggerName");
scheduler.scheduleJob(jobDetail, trigger);

public class SayHelloWorld implements Job {

	public void execute(JobExecutionContext context)
			throws JobExecutionException {
		System.out.println("Hello World");

	}
}


暂停某个Job的定时
scheduler.pauseJob("jobName","groupName");

恢复某个Job的定时
scheduler.resumeJob("jobName","groupName");

当然,可以暂停一个任务组(group)或者指定的一个触发(trigger),Schedule类提供相应的API实现

更改某个Job的定时时间
newTrigger.setJobName(jobDetail.getJobName()); // 对应的job名称
scheduler.rescheduleJob(newTrigger.getName(), 
          Scheduler.DEFAULT_GROUP,newTrigger);


通过上述的代码就可以实现基本的定时功能。

Quartz对定时事件的记录有两种方式:内存(RAMJobStore)和数据库(JDBCJobStore)

RAMJobStore方式:定时事件记录会因为各种终止系统的操作而消失,但是反应速度快
JDBCJobStore方式:可以保证定时事件记录的存储,反应速度稍慢于RAMJobStore方式(当然,不会影响正常的定时操作的时间准确性)

采用JDBCJobStore方式,需要在工程相应的数据库中建立满足Quartz要求的12张表,数据库表的创建脚本同Quartz的二进制包同时发布,在发布包的doc/目录下

如果采用Hibernate等ORM工具,同时希望对Quartz表数据进行控制,那就需要对12表进行相应的模型建立
下面以JDBCJobStore方式为例配置Quartz,该配置只满足最基本的Quartz配置要求
quartz.properties
## Configuration for JDBC-JobStoreTX
org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX
org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.StdJDBCDelegate
org.quartz.jobStore.dataSource = myDS

## Configuration for DataSource
org.quartz.dataSource.myDS.driver = com.mysql.jdbc.Driver
org.quartz.dataSource.myDS.URL = jdbc:mysql://localhost/money?autoReconnect=true
org.quartz.dataSource.myDS.user	= xxx
org.quartz.dataSource.myDS.password = xxx

## Configuration for ThreadPool
org.quartz.threadPool.class	= org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount =	10


以web容器方式启动Quartz,在web.xml文件中添加
<!-- Quartz -->
	<servlet>
		<display-name>Quartz Initialzer Servlet</display-name>
		<servlet-name>QuartzInitializer</servlet-name>
		<servlet-class>
			org.quartz.ee.servlet.QuartzInitializerServlet
		</servlet-class>
		<init-param>
			<param-name>config-file</param-name>
			<param-value>quartz.properties</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>

这里对config-file属性做一个说明,该变量的相对路径是classpath(/WEB-INF/classes)



附上个人定义的Quartz的Hibernate模型
  • model.tar.gz (3.8 KB)
  • 描述: Quartz的Hibernate模型
  • 下载次数: 235
分享到:
评论
1 楼 juzhibest 2008-12-12  
最近正 搞quartz

能和你交流一下么

相关推荐

    Quartz定时器从入门到进阶

    Quartz定时器是一个开源的作业调度框架,专为J2SE和J2EE应用程序设计,完全用Java编写。它的核心优势在于提供强大的灵活性和简单性,使得开发者可以轻松创建简单的或复杂的任务调度。Quartz支持多种特性,如数据库...

    Quartz/J2EE (定时服务)

    Quartz是一款开源的作业调度框架,它在Java社区中被广泛应用,特别是在J2EE环境中,用于实现定时任务的管理。Quartz提供了强大的功能,能够帮助开发者精确地安排和执行任务,比如定期备份数据库、发送邮件或者执行...

    Java中Spring使用Quartz任务调度定时器

    Quartz是一个开源的作业调度框架,由Java编写,它可以独立使用,也可以与J2EE和J2SE应用结合。它的主要功能是按照预定的时间间隔或特定时间执行任务,类似于Windows的任务计划程序或.NET下的Windows服务。 Quartz...

    quartz 定时器

    #### 二、Quartz定时器使用实践 1. **Job接口**: - **接口定义**:`Job`接口只有一个方法`void execute(JobExecutionContext context)`。 - **任务执行**:Quartz在每次执行Job时都会重新创建一个`JobDetail`...

    Java定时器 quartz jar包

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

    Quartz(任务调度)使用培训

    在描述中提到的东南融通Quartz定时器LongtopGroup综合软件开发三部连勇,这是培训的具体对象和上下文环境,表明这是一次针对东南融通公司内部软件开发团队的培训。 在内容部分详细介绍了Quartz能够做什么,具体来说...

    总结J2EE中使用任务调度三种方式

    本文将深入探讨三种在J2EE环境中实现任务调度的方式:Java内置的定时器API(java.util.Timer)、Servlet容器的定时任务以及第三方库Quartz。 ### 1. Java内置定时器API Java标准库提供了`java.util.Timer`类和`...

    Quartz-2.2.3-distribution

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

    Quartz详细的开发指南

    **:Quartz 是一个任务日程管理系统,这个系统可以与任何其他软件系统集成或者一起使用。 - **为什么不使用 `java.util.Timer`?**:`java.util.Timer` 提供了非常基础的任务调度功能,但对于更复杂的需求,如集群...

    quartz-all-1.6.1.jar

    Quartz是一个开源的作业调度框架,它完全由Java写成,并设计用于J2SE和J2EE应用中。它提供了巨大的灵 活性而不牺牲简单性。你能够用它来为执行一个作业而创建简单的或复杂的调度。它有很多特征,如:数据库支持,...

    spring 定时器

    Quartz 是一个开源的作业调度框架,它完全由 Java 写成,并设计用于 J2SE 和 J2EE 应用中。它提供了巨大的灵活性而不牺牲简单性。你能够用它来为执行一个作业而创建简单的或复杂的调度。本系统结合通过 Spring 来...

    Spring 任务调度

    - **Quartz**:一个强大的开源作业调度框架,完全用Java编写,适用于J2SE和J2EE环境。Quartz允许创建复杂的调度策略,如按日期、时间间隔或者依赖关系来调度任务。 3. **JDK Timer的使用**: - **TimerTask的实现...

    J2EE spring mvc mybatis bootstrap HTML5 后台框架 控制台 mysql版本_spring3.0

    微信接口(身份验证,文本、图文回复等) 微信远程控制服务器重启、锁定、其它应用程序 15.java Quartz 定时器 (定时执行某程序,精确到秒,可设置周期) 16.java websocket 即时通讯技术,点对点,群聊,单聊,EXT4...

    timer_job_test.zip

    1. **Quartz**: Quartz是一个开源的作业调度框架,它可以与Java应用程序一起使用,或者被嵌入到J2EE应用服务器中。Quartz提供了丰富的API,允许开发者定义作业和触发器,以实现复杂的定时任务调度。 2. **Spring ...

Global site tag (gtag.js) - Google Analytics