在前面两篇文章中简单介绍了在
java
应用程序中如何使用
Quartz
框架,这一篇中我们将看到如何在
web
环境下通过配置文件来完成
Quartz
的后台作业调度,而不必手工去创建
Trigger
和
Scheduler
,其步骤如下:
首先创建一个
Web
项目,将
quartz-1.6.0.jar,
以及
lib
目录下面
core
下所有
jar
,
optional
目录下的所有
commons-beanutils.jar
和
commons-digester-1.7.jar
,
build
目录下的
jta.jar
都放入
Web
项目的
WEB-INF"lib
目录下。
创建一个简单的
job
类
HelloWorld
,它的功能很简单,就是输出当前的时间,代码如下:
package
com.vista.quartz;
import
java.util.Date;
import
org.apache.commons.logging.Log;
import
org.apache.commons.logging.LogFactory;
import
org.quartz.Job;
import
org.quartz.JobExecutionContext;
import
org.quartz.JobExecutionException;
public
class
Helloworld
implements
Job
{
private
static
Log logger
=
LogFactory.getLog(Helloworld.
class
);
//
日志记录器
public
Helloworld()
{
}
public
void
execute(JobExecutionContext context)
throws
JobExecutionException
{
logger.info(
"
Hello World! -
"
+
new
Date());
}
}
然后按照上一篇文章《
Quartz
框架快速入门(二)
》中所讲述的内容
编写
quartz.properties
文件。如果启动项目的时候,
Quartz
没有在工程中找到该文件,就会从自己的
jar
包下面读取其默认的
properties
文件,其内容如下
#============================================================================
# Configure Main Scheduler Properties
#============================================================================
org.quartz.scheduler.instanceName = QuartzScheduler
org.quartz.scheduler.instanceId = AUTO
#============================================================================
# Configure ThreadPool
#============================================================================
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 5
org.quartz.threadPool.threadPriority = 5
#============================================================================
# Configure JobStore
#============================================================================
org.quartz.jobStore.misfireThreshold = 60000
org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore
#============================================================================
# Configure Plugins
#============================================================================
org.quartz.plugin.triggHistory.class = org.quartz.plugins.history.LoggingJobHistoryPlugin
org.quartz.plugin.jobInitializer.class = org.quartz.plugins.xml.JobInitializationPlugin
org.quartz.plugin.jobInitializer.fileNames = jobs.xml
org.quartz.plugin.jobInitializer.overWriteExistingJobs = true
org.quartz.plugin.jobInitializer.failOnFileNotFound = true
org.quartz.plugin.jobInitializer.scanInterval = 10
org.quartz.plugin.jobInitializer.wrapInUserTransaction = false
然后编写任务配置文件
jobs.xml
,内容如下:
<?
xml version='1.0' encoding='utf-8'
?>
<
quartz
xmlns
="http://www.opensymphony.com/quartz/JobSchedulingData"
xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation
="http://www.opensymphony.com/quartz/JobSchedulingData
http://www.opensymphony.com/quartz/xml/job_scheduling_data_1_5.xsd"
version
="1.5"
>
<
job
>
<
job-detail
>
<
name
>
HelloWorld
</
name
>
<
group
>
DEFAULT
</
group
>
<
description
>
A job that just for test
</
description
>
<
job-class
>
com.vista.quartz.Helloworld
</
job-class
>
<
volatility
>
false
</
volatility
>
<
durability
>
false
</
durability
>
<
recover
>
false
</
recover
>
</
job-detail
>
<
trigger
>
<
simple
>
<
name
>
HelloTrigger1
</
name
>
<
group
>
DEFAULT
</
group
>
<
job-name
>
HelloWorld
</
job-name
>
<
job-group
>
DEFAULT
</
job-group
>
<
start-time
>
2008-09-03T15:56:30
</
start-time
>
<!--
repeat indefinitely every 10 seconds
-->
<
repeat-count
>
-1
</
repeat-count
>
<
repeat-interval
>
10000
</
repeat-interval
>
</
simple
>
</
trigger
>
</
job
>
</
quartz
>
可以看到,在配置文件中把
jobdetail
和
trigger
都作了完整的定义,并组合成一个
job
。下面,我们把上面两个文件都放入
/WEB-INF/classes
目录下,然后按照
api
中的说明修改一下
web.xml
,内容如下
<?
xml version="1.0" encoding="UTF-8"
?>
<
web-app
version
="2.4"
xmlns
="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation
="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
>
<
servlet
>
<
servlet-name
>
QuartzInitializer
</
servlet-name
>
<
display-name
>
Quartz Initializer Servlet
</
display-name
>
<
servlet-class
>
org.quartz.ee.servlet.QuartzInitializerServlet
</
servlet-class
>
<
load-on-startup
>
1
</
load-on-startup
>
<
init-param
>
<
param-name
>
config-file
</
param-name
>
<
param-value
>
/quartz.properties
</
param-value
>
</
init-param
>
<
init-param
>
<
param-name
>
shutdown-on-unload
</
param-name
>
<
param-value
>
true
</
param-value
>
</
init-param
>
</
servlet
>
<
welcome-file-list
>
<
welcome-file
>
index.jsp
</
welcome-file
>
</
welcome-file-list
>
</
web-app
>
这样,在启动
Tomcat
的时候,
QuartzInitializerServlet
这个
Servlet
就会自动读取
quartz.properties
这个配置文件,并初始化调度信息,启动
Scheduler
。
启动
tomcat
后,就可以看到输出的结果
:
作者:洞庭散人
出处:http://phinecos.cnblogs.com/
本博客遵从Creative Commons Attribution 3.0 License
,若用于非商业目的,您可以自由转载,但请保留原作者信息和文章链接URL。
分享到:
相关推荐
Quartz框架快速入门Quartz框架快速入门
Quartz 框架快速入门 在前面两篇文章中简单介绍了在java应用程序中如何使用Quartz框架,这一篇中我们将看到如何在web环境下通过配置文件来完成Quartz的后台作业调度,而不必手工去创建Trigger和Scheduler
Quartz框架快速入门.pdf
NULL 博文链接:https://wangrl.iteye.com/blog/1125327
调度器基本使用,了解quartz的基本使用方法
本文档包含以下章节:1、quartz简介;2、quartz快速入门;3、quartz核心API详解;4、quartz.properties配置详解;5、quartz持久化;6、quartz集群部署;7、springboot整合quartz。8、常见分布式调度框架的比较;
Quartz是一个开源的作业调度框架,它完全由Java写成,并设计用于J2SE和J2EE应用中。它提供了巨大的灵活性而不牺牲简单性。你能够用它来为执行一个作业而创建简单的或复杂的调度。
Quartz中文入门教程 前言 Quartz让任务调度简单 Quartz的发展史 上手Quartz Quartz内部架构 作业 作业管理和存储 有效作业存储 ...Quartz框架的其他特征 Quartz下一步计划 了解更多Quartz特征
定时器框架学习资料,入门手册,新手专用!帮你快速入门开发搭建自己的定时器框架环境
Java框架介绍Quartz从入门到进阶的文档介绍
Java框架介绍Quartz从入门到进阶.pdf
这是一个本人自主编写的quartz调度框架的入门实例,非常简单,无配置文件,纯java调度,main 方法执行,控制台输出,可作为quartz框架的入门学习使用
这份quartz ppt作者专门为入门学习quartz的赌注精心制作,包含了quartz的api详细解读,集群搭建等
Quartz入门和Quartz开发指南
Quartz是一个开源的作业调度框架,它完全由Java写成,并设计用于J2SE和J2EE应用中。它提供了巨大的灵活性而不牺牲简单性。你能够用它来为执行一个作业而创建简单的或复杂的调度。它有很多特征,如:数据库支持,集群...
1.spring框架使用任务调度quartz的例子。 2.Web App用Quartz实现java schedule 3.详细讲解Quartz如何从入门到精通 4.用 Quartz 进行作业调度
一个很好的调度工具学习资料,可以定时调用发送短信,上传文件等功能,JAR包后面有
Quartz是一个开源的作业调度框架,它完全由 Java写成,并设计用于J2SE和J2EE应用中。它提供了巨大的灵活性而不牺牲简单性。你能够用它来为执行一个作业而创建简单的或复杂的调度。它有很 多特征,如:数据库支持,...