1.下载Quartz,我下载的是1.8.5,将quartz-all-1.8.5拷贝到web项目的lib目录中。除此之外还需要将以下
- jta-1.1
- log4j-1.2.14
- slf4j-api-1.6.1
-
slf4j-nop-1.5.2
- slf4j-log4j12-1.6.1
- commons-beanutils-1.7.0.jar
- commons-collections-3.1.jar
- commons-logging-1.0.4.jar
拷贝到web项目的lib目录中,不然会启动tomcat会产生如下错误:
#缺少log4j-1.2.14,slf4j-api-1.6.1,slf4j-log4j12-1.6.1
java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
#缺少jta-1.1
javax/transaction/UserTransaction at java.lang.Class.getDeclaredMethods0(Native Method)
2.新建一个任务类,需要实现Quartz的Job接口。
package me.hujun.demo.quartz;
import java.util.Date;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
public class MyJob implements Job {
@Override
public void execute(JobExecutionContext arg0) throws JobExecutionException {
System.out.println("Start MyJob at " + new Date());
}
}
3.在src目录下新建quartz.properties,这个文件可以直接充quartz的jar包中拷贝。但需要加入两行新的内容,分别用来指定jobInitializer class和jobInitializer需要解析的配置文件路径(清单的最后两行配置)。
#============================================================================
# Configure Main Scheduler Properties
#============================================================================
org.quartz.scheduler.instanceName = TestScheduler
org.quartz.scheduler.instanceId = AUTO
#============================================================================
# Configure ThreadPool
#============================================================================
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 3
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 = quartz_jobx.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
#org.quartz.plugin.jobInitializer.class = org.quartz.plugins.xml.JobInitializationPlugin
org.quartz.plugin.jobInitializer.class = org.quartz.plugins.xml.XMLSchedulingDataProcessorPlugin
#如果这里不指定,默认会读取WEB-INFO/CLASSES目录下的quartz_jobs.xml文件,名称不能改变
#如果有多个job xml文件,使用","隔开
org.quartz.plugin.jobInitializer.fileNames = quartz_jobs.xml
org.quartz.plugin.jobInitializer.failOnFileNotFound = true
org.quartz.plugin.shutdownhook.class = org.quartz.plugins.management.ShutdownHookPlugin
org.quartz.plugin.shutdownhook.cleanShutdown =true
4.编写quartz_job.xml(上述清单中org.quartz.plugin.jobInitializer.fileNames的值),配置job和trigger。
<?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>my_job</name>
<group>DEFAULT</group>
<description>
this is HelloWorld......
</description>
<job-class>org.hzy.jobs.My_Job</job-class>
</job>
<trigger>
<cron>
<name>my_job_trigger</name>
<job-name>my_job</job-name>
<cron-expression>0/10 * * * * ?</cron-expression>
</cron>
</trigger>
</schedule>
</job-scheduling-data>
5.修改web.xml。
<servlet>
<servlet-name>quartz</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>
<init-param>
<param-name>start-scheduler-on-load</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
或启用监听器QuartzInitializerListener
<context-param>
<param-name>config-file</param-name>
<param-value>/some/path/my_quartz.properties</param-value>
</context-param>
<context-param>
<param-name>shutdown-on-unload</param-name>
<param-value>true</param-value>
</context-param>
<context-param>
<param-name>start-scheduler-on-load</param-name>
<param-value>true</param-value>
</context-param>
<listener>
<listener-class>
org.quartz.ee.servlet.QuartzInitializerListener
</listener-class>
</listener>
6.启动tomcat
分享到:
相关推荐
博文链接:https://daoger.iteye.com/blog/195486
quartz的web整合简单小例子,比较适合做一些方便的工作,定时器可以轻松搞定。
网上能找到的Quartz Web管理的资料都是使用的一个国外人写的Quartz WebApp的东东,功能也很全面。但是作为自己的应用其实用不了那么多功能,一般我们只要可以定义一个job,指定一个Cron表达式完成工作即可,附带的...
NULL 博文链接:https://gghaomm.iteye.com/blog/1753098
quartz框架在web中的应用,代码简单完整,且可以正常运行,对初学者很有帮助。
一个自动执行而无须干预的任务在执行过程中如果发生一个严重错误,应用能够知到其执行失败并尝试重新执行吗?你和你的团队是用.NET编程吗?如果这些问题中任何一个你回答是,那么你应该使用Quartz.NET调度器。 ...
quartz1.6在webapp下应用 demo例子 包含详细的类说明 可以拿来就用
有了它,quartz不再抽象。 资源来自于互联网,Chuck Cavaness 著 Unmi(隔叶黄莺) 译 。 主要内容: 1.quartz起步和简单示例 2.Job部署、存储和持久化 ...6.Quartz和Web应用 7.工作流中使用Quartz 8.附录:配置参考
一个完整的简易排程例子,如想应用,只需在execute方法里填加自己的逻辑处理即可
在阅读完本文并看过代码示例后,您应当能够把 Quartz 的基本特性应用到任何 Java™ 应用程序中。 Quartz 是个开源的作业调度框架,为在 Java 应用程序中进行作业调度提供了简单却强大的机制。Quartz 允许开发人员...
Quartz 是个开源的作业调度框架,为在 Java 应用程序中进行作业调度提供了简单却强大的机制。Quartz 允许开发人员根据时间间隔(或天)来调度作业。它实现了作业和触发器的多对多关系,还能把多个作业与不同的触发器...
Quartz 框架快速入门 在前面两篇文章中简单介绍了在java应用程序中如何使用Quartz框架,这一篇中我们将看到如何在web环境下通过配置文件来完成Quartz的后台作业调度,而不必手工去创建Trigger和Scheduler
内容提要:在 Struts 框架中使用 Quartz,虚构了一个叫做 Job 管理控制台的 Web 应用,。需要在 Web 应用启动时创建一个 SchedulerFactory。 第十三章. Quartz 和 Web 应用 (第三部分) 内容提要:所幸 ...
也可以将其作为中间件插入到您现有的基于OWIN的Web应用程序中。 是功能齐全的开源作业调度系统,可用于最小的应用程序到大型企业系统。 该项目的目标是提供便利的工具,以利用Quartz.NET启用的大多数功能。 最大...
在阅读完本文并看过代码示例后,您应当能够把 Quartz 的基本特性应用到任何 Java™ 应用程序中。 现代的 Web 应用程序框架在范围和复杂性方面都有所发展,应用程序的每个底层组件也必须相应地发展。作业调度是现代...
4. 广泛的应用场景:Quartz框架可以应用于单机 J2SE 应用、RMI 服务器、Web 应用、J2EE 应用服务器等多种场景。 5. 开源免费:Quartz框架是开源免费的,开发者可以自由地使用和修改它。 Quartz框架的应用场景包括:...
Quartz.NET是一个强大、开源、轻量的作业调度框架,是 OpenSymphony 的 Quartz API 的.NET移植,用C#改写,可用于winform和asp.net应用中。它灵活而不复杂。你能够用它来为执行一个作业而创建简单的或复杂的作业调度...
让我们从一个数据库报表的例子来看看任务调度能如何帮助改善系统设计。报表可能是错综复杂的,这取决于用户所需数据的种类,...这个示例还使用了Struts Action framework插件,以便在web应用启动时初始化任务调度机制。