Quartz应用实践入门案例一(基于Web环境)
Quartz是一个完全由java编写的开源作业调度框架,正是因为这个框架整合了许多额外的功能,所以在使用上就显得相当容易。只是需要简单的配置一下就能轻松的使用任务调度了。在Quartz中,真正执行的java代码逻辑部分就是实现org.quartz.Job接口中的execute方法。简而言之,如果需要Quartz框架,只需要实现接口方法就行。关于究竟什么是Quartz,贴出官方解释:

本文不介绍Quartz的工作原理和实现过程分析,如果想深入学习Quartz,为您提供链接http://www.quartz-scheduler.org,文本的重点是强调如何快速应用定时任务到自己的程序中,能够在短时间掌握和配置Quartz。为刚接触Quartz不知从何下手的朋友提供一个案例,希望能起到抛砖引玉的作用。还有一篇关于Quartz的博客是基于java工程的应用案例将在稍后贴上《Quartz应用实践入门案例二(基于java工程)》。
本文作者:itred 邮箱:it_red@sina.com 博客链接:http://www.cnblogs.com/itred
本文版权归作者和博客园共有,欢迎转载,请在文章显眼位置标明文章出处。未经本人书面同意,摞为他用,本人保留追究的所有权利。
好了,废话不多说。案例走起!
1. 新建一个web工程,quartzDemo;
2. 添加所需要的jar包:

3. 在src目录下新建一个job包,用于存放java代码;
4. 在src目录下新建一个properties文件和xml文件:
#============================================================================
# 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.XMLSchedulingDataProcessorPlugin
org.quartz.plugin.jobInitializer.fileNames = quartz_data.xml
org.quartz.plugin.jobInitializer.failOnFileNotFound = true
org.quartz.plugin.jobInitializer.scanInterval = 10
org.quartz.plugin.jobInitializer.wrapInUserTransaction =false #默认会联网检查是否有更新,还是skip为好
org.quartz.scheduler.skipUpdateCheck =true
5. 在此基础上,开始配置web.xml文件:
我们需要设置并实现当web工程一旦开始启动运行,这个定时任务就开始自动执行。所以需要在xml中添加上<load-on-startup>2</load-on-startup>;而且还需要初始化参数:因此,web.xml中应该添加的内容如下:
<servlet>
<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>
<init-param>
<param-name>shutdown-on-unload</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
6. 配置quartz_data.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<job-scheduling-data
xmlns="http://www.quartz-scheduler.org/xml/JobSchedulingData"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.quartz-scheduler.org/xml/JobSchedulingData http://www.quartz-scheduler.org/xml/job_scheduling_data_1_8.xsd"
version="1.8">
<schedule>
<job>
<name>DemoJob</name>
<group>JobGroup</group>
<job-class>job.QuartzDemoJob</job-class>
</job>
<trigger>
<cron>
<name>DemoTrigger</name>
<group>triggerGroup</group>
<job-name>DemoJob</job-name>
<job-group>JobGroup</job-group>
<cron-expression>0/3 * * * * ?</cron-expression>
</cron>
</trigger>
</schedule>
<schedule>
<job>
<name>TestJob</name>
<group>TestGroup</group>
<job-class>job.QuartzTestJob</job-class>
</job>
<trigger>
<cron>
<name>DemoTrigger</name>
<!-- <group>triggerGroup</group>-->
<job-name>TestJob</job-name>
<job-group>TestGroup</job-group>
<cron-expression>0/5 * * * * ?</cron-expression>
</cron>
</trigger>
</schedule>
</job-scheduling-data>
quartz_data.xml文件是在properties文件中进行了设置的。即:org.quartz.plugin.jobInitializer.fileNames = quartz_data.xml
这个配置可以在以后的实际应用中慢慢学习。
7. 实现job接口:
如果你是细心的读者,你就会发现本文配置的是两个不同的定时任务。分别是每隔3秒执行一次和每隔5秒执行一次。这样看来,Quartz的强大就可以不言而喻了。
定时任务1:

定时任务2:

8. 最后,部署这个web工程,启动Tomcat。你就会看到你希望看到的了。

关于本文介绍Quartz的案例,欢迎大神拍砖指教。如果各位菜鸟朋友不理解,欢迎来邮,希望与你共同研究,讨论!
作者:itRed 邮箱:it_red@sina.com
博客链接:http://www.cnblogs.com/itred
版权声明:本文版权归作者和博客园共有,欢迎转载,但请在文章显眼位置标明文章出处。未经本人书面同意,将其作为他用,本人保留追究责任的所有权利。
Quartz应用实践入门案例一(基于Web环境)的更多相关文章
- Quartz应用实践入门案例二(基于java工程)
在web应用程序中添加定时任务,Quartz的简单介绍可以参看博文<Quartz应用实践入门案例一(基于Web应用)> .其实一旦学会了如何应用开源框架就应该很容易将这中框架应用与自己的任 ...
- 阿里云centos6.5实践编译安装LNMP架构web环境
LNMP 代表的就是:Linux系统下Nginx+MySQL+PHP这种网站服务器架构. 本次测试需求: **实践centos6.5编译安装 LNMP生产环境 架构 web生产环境 使用 ngx_pa ...
- Shiro简介、入门案例、web容器的集成
目的: shiro简介 Shiro入门案例 Shiro与web容器的集成 shiro简介(中文官网:https://www.w3cschool.cn/shiro/andc1if0.html) 1.什么 ...
- SpringMvc核心流程以及入门案例的搭建
1.什么是SpringMvc Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面.Spring 框架提供了构建 Web 应用程序的全功能 M ...
- BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第3章节--SharePoint 2013 开发者工具 SharePoint中基于Web开发
BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第3章节--SharePoint 2013 开发者工具 SharePoint中基于Web开发 之前提到过, ...
- 【案例分享】SpreadJS金融行业应用实践,开发基于Web Excel的指标补录平台
SpreadJS作为一款基于 HTML5 的纯前端电子表格控件,以“高速低耗.高度类似Excel.可无限扩展”为产品特色,提供移动跨平台和浏览器支持,可同时满足 .NET.Java.App 等应用程序 ...
- JAVAEE——BOS物流项目13:Quartz入门案例、核心概念、cron 表达式的格式(了解)
1.quartz入门案例 本入门案例基于spring和quartz整合完成. 第一步:创建maven工程,导入spring和quartz相关依赖 第二步:创建任务类 第三步:在spring配置文件中配 ...
- spring-cloud-Zuul学习(一)【基础篇】--入门案例【重新定义spring cloud实践】
-- 2 ...
- Httpd服务入门知识-Httpd服务常见配置案例之基于用户账号实现访问控制
Httpd服务入门知识-Httpd服务常见配置案例之基于用户账号实现访问控制 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.基于用户的访问控制概述 认证质询: WWW-Auth ...
随机推荐
- oracle数据库导入导出
简单记录下数据泵导出导入expdp .impdp 和 普通导出导入 exp.imp 一.数据泵导出数据库(按用户)步骤: 1.以oracle用户登录oracle所在服务器,创建数据库备份文件目录 &g ...
- libmegjb.so加载问题调试和分析
欢迎转载opendevkit文章, 文章原始地址: http://www.opendevkit.com/?e=70 01-01 00:09:21.084: D/dalvikvm(10394): Try ...
- javascript opacity兼容性随笔
一.CSS兼容代码 .transparent { filter:alpha(opacity=50); /* IE */ -moz-opacity:0.5; /* FireFox old version ...
- QQ揭秘:如何实现窗体靠边隐藏?【低调赠送:QQ高仿版GG 4.2 最新源码】
QQ有个靠边隐藏的功能,使用起来很方便:在屏幕上拖动QQ的主窗体,当窗体的上边沿与屏幕的上边沿对齐时,主窗体就会duang~~地隐藏起来,当将鼠标移到屏幕上边沿的对应区域时,主窗体又会duang~~显 ...
- Mockito自定义verify参数Matcher
在TDD开发中,也许我们会遇见对一些重要的无返回值的行为测试,比如在用户的积分DB中增加用户的积分,这个行为对于我们的业务具有重要的价值,所以我们也希望能测试覆盖这部分业务价值.这个时候我们就得使用m ...
- jQuery基础之选择器
摘自:http://www.cnblogs.com/webmoon/p/3169360.html jQuery基础之选择器 选择器是jQuery的根基,在jQuery中,对事件处理.遍历DOM和Aja ...
- mac 命令行批量删除.svn[转]
mac下.svn是隐藏文件,而且即使我们调成可见的,一个一个删也很麻烦.今天正好同事问起来这个命令,于是想可能有些人也需要,于是还是放到博客里吧 命令比较简单,其实就是一条linux命令,打开终端,首 ...
- Java中测试异常的多种方式
使用JUnit来测试Java代码中的异常有很多种方式,你知道几种? 给定这样一个class. Person.java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ...
- Linux gcc的安装
说明:我是在虚拟机里学习的Linux,很多问题也是和虚拟机有关的.今天就遇到了虚拟机安装gcc是一个问题. 首先查看gcc是否安装: 然后安装gcc.(我的错误就出现在这里.) 我用的虚拟机,练习平时 ...
- 我也说百度和google
对于程序员,最好的老师恐怕还是百度或者google或一些专业的it社区.网站了罢! 之前曾听到这样的一句话, 文艺程序员用Google Scholar/Scirus/stackoverflow.普通程 ...