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
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
分享到:
相关推荐
Quartz的Hibernate模型 博文链接:https://xmkevinchen.iteye.com/blog/196392
开发中,经常遇到需要定时执行某个任务的需要。可以用数据库的计划任务完成,也可以用代码完成。.net环境下的Quartz就是非常好的解决方案。Quartz有自己的语言,类似正则也有表达的方式,还是需要学习一下的。
Quartz定时器介绍与简单使用
Quartz定时器从入门到进阶,详细介绍Quartz定时器API和使用示例。
quartz定时器api quartz定时器api quartz定时器api
Spring Quartz 定时器示例(Web工程版),欢迎下载。
Spring Quartz 定时器示例(Java工程版),欢迎下载。
一个很好的定时器例子,里面有quartz全套jar包,注释详细适合学习
Quartz定时器表 执行语句 方便部署处理数据
quartz的web整合简单小例子,比较适合做一些方便的工作,定时器可以轻松搞定。
mySQL数据库Quartz定时器表,mySQL数据库Quartz定时器表,mySQL数据库Quartz定时器表,mySQL数据库Quartz定时器表
quartz定时器2.2.1JAR包
quartz定时器mysql的脚本,如果需要定时器持久化到数据库,可以使用
spring boot集成quartz定时器,job支持spring的依赖注入
博客中《quartz学习笔记二:一个基础的Quartz定时器案例》的项目代码,包含jar包,只要导入即可运行。这是一个最基本的Quartz定时器API版。
quartz-all-1.6.0.jar commons-dbcp-1.2.1.jar commons-pool.jar 三个jar包,用于Spring Quartz定时器
这里有spring的quartz定时器要用到的jar包,本人也有自己的小demo,如需要请联系本人
Spring Quartz定时器 Spring Quartz定时器 Spring Quartz定时器 Spring Quartz定时器
quartz定时器jar包,包括log4j-1.2.16.jar quartz-2.2.3.jar quartz-jobs-2.2.3.jar slf4j-api-1.7.7.jar slf4j-log4j12-1.7.7.jar