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模型
分享到:
相关推荐
Quartz定时器是一个开源的作业调度框架,专为J2SE和J2EE应用程序设计,完全用Java编写。它的核心优势在于提供强大的灵活性和简单性,使得开发者可以轻松创建简单的或复杂的任务调度。Quartz支持多种特性,如数据库...
Quartz是一款开源的作业调度框架,它在Java社区中被广泛应用,特别是在J2EE环境中,用于实现定时任务的管理。Quartz提供了强大的功能,能够帮助开发者精确地安排和执行任务,比如定期备份数据库、发送邮件或者执行...
Quartz是一个开源的作业调度框架,由Java编写,它可以独立使用,也可以与J2EE和J2SE应用结合。它的主要功能是按照预定的时间间隔或特定时间执行任务,类似于Windows的任务计划程序或.NET下的Windows服务。 Quartz...
#### 二、Quartz定时器使用实践 1. **Job接口**: - **接口定义**:`Job`接口只有一个方法`void execute(JobExecutionContext context)`。 - **任务执行**:Quartz在每次执行Job时都会重新创建一个`JobDetail`...
Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的程序。Jobs可以做成...
在描述中提到的东南融通Quartz定时器LongtopGroup综合软件开发三部连勇,这是培训的具体对象和上下文环境,表明这是一次针对东南融通公司内部软件开发团队的培训。 在内容部分详细介绍了Quartz能够做什么,具体来说...
本文将深入探讨三种在J2EE环境中实现任务调度的方式:Java内置的定时器API(java.util.Timer)、Servlet容器的定时任务以及第三方库Quartz。 ### 1. Java内置定时器API Java标准库提供了`java.util.Timer`类和`...
Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的程序。Jobs可以做成...
**:Quartz 是一个任务日程管理系统,这个系统可以与任何其他软件系统集成或者一起使用。 - **为什么不使用 `java.util.Timer`?**:`java.util.Timer` 提供了非常基础的任务调度功能,但对于更复杂的需求,如集群...
Quartz是一个开源的作业调度框架,它完全由Java写成,并设计用于J2SE和J2EE应用中。它提供了巨大的灵 活性而不牺牲简单性。你能够用它来为执行一个作业而创建简单的或复杂的调度。它有很多特征,如:数据库支持,...
Quartz 是一个开源的作业调度框架,它完全由 Java 写成,并设计用于 J2SE 和 J2EE 应用中。它提供了巨大的灵活性而不牺牲简单性。你能够用它来为执行一个作业而创建简单的或复杂的调度。本系统结合通过 Spring 来...
- **Quartz**:一个强大的开源作业调度框架,完全用Java编写,适用于J2SE和J2EE环境。Quartz允许创建复杂的调度策略,如按日期、时间间隔或者依赖关系来调度任务。 3. **JDK Timer的使用**: - **TimerTask的实现...
微信接口(身份验证,文本、图文回复等) 微信远程控制服务器重启、锁定、其它应用程序 15.java Quartz 定时器 (定时执行某程序,精确到秒,可设置周期) 16.java websocket 即时通讯技术,点对点,群聊,单聊,EXT4...
1. **Quartz**: Quartz是一个开源的作业调度框架,它可以与Java应用程序一起使用,或者被嵌入到J2EE应用服务器中。Quartz提供了丰富的API,允许开发者定义作业和触发器,以实现复杂的定时任务调度。 2. **Spring ...