1、新增pom依赖

除了按照《quartz2.3.0系列目录——带您由浅入深全面掌握quartz2.3.0》添加依赖之外,pom.xml里新增加依赖:

<dependency>
<groupId>opensymphony</groupId>
<artifactId>quartz-all</artifactId>
<version>1.6.3</version>
</dependency>
<dependency>
<groupId>javax.transaction</groupId>
<artifactId>jta</artifactId>
<version>1.1</version>
</dependency>

2、quartz.properties配置

#============================================================================
# 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.XMLSchedulingDataProcessorPlugin
org.quartz.plugin.jobInitializer.fileNames: quartz_data.xml
org.quartz.plugin.jobInitializer.failOnFileNotFound: true
org.quartz.plugin.jobInitializer.scanInterval: 120
org.quartz.plugin.jobInitializer.wrapInUserTransaction: false

3、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"> <pre-processing-commands>
<delete-jobs-in-group>*</delete-jobs-in-group> <!-- 清除调度器中的所有作业 -->
<delete-triggers-in-group>*</delete-triggers-in-group> <!-- 清除调度器中的所有触发器 -->
</pre-processing-commands> <processing-directives>
<!-- 如果调度程序中有任何同名的作业/触发器(与此文件中相同),会覆盖它们 -->
<overwrite-existing-data>true</overwrite-existing-data>
<!-- 如果调度程序中有任何同名的作业/触发器(与此文件中相同),并且覆盖为false,则忽略它们,而不是生成错误 -->
<ignore-duplicates>false</ignore-duplicates>
</processing-directives> <schedule>
<job>
<name>TestJob1</name>
<job-class>org.quartz.examples.example10.SimpleJob</job-class>
</job> <job>
<name>TestDurableJob</name>
<job-class>org.quartz.examples.example10.SimpleJob</job-class>
<durability>true</durability>
<recover>false</recover>
</job> <trigger>
<simple>
<name>TestSimpleTrigger1AtFiveSecondInterval</name>
<job-name>TestJob1</job-name>
<repeat-count>-1</repeat-count> <!-- repeat indefinitely -->
<repeat-interval>5000</repeat-interval> <!-- every 5 seconds -->
</simple>
</trigger> <job>
<name>TestJob2</name>
<group>GroupOfTestJob2</group>
<description>This is the description of TestJob2</description>
<job-class>org.quartz.examples.example10.SimpleJob</job-class>
<durability>false</durability>
<recover>true</recover>
<job-data-map>
<entry>
<key>someKey</key>
<value>someValue</value>
</entry>
<entry>
<key>someOtherKey</key>
<value>someOtherValue</value>
</entry>
</job-data-map>
</job> <trigger>
<simple>
<name>TestSimpleTrigger2AtTenSecondIntervalAndFiveRepeats</name>
<group>GroupOfTestJob2Triggers</group>
<job-name>TestJob2</job-name>
<job-group>GroupOfTestJob2</job-group>
<start-time>2010-02-09T10:15:00</start-time>
<misfire-instruction>MISFIRE_INSTRUCTION_RESCHEDULE_NOW_WITH_EXISTING_REPEAT_COUNT</misfire-instruction>
<repeat-count>5</repeat-count>
<repeat-interval>10000</repeat-interval>
</simple>
</trigger> <trigger>
<cron>
<name>TestCronTrigger2AtEveryMinute</name>
<group>GroupOfTestJob2Triggers</group>
<job-name>TestJob2</job-name>
<job-group>GroupOfTestJob2</job-group>
<job-data-map>
<entry>
<key>someKey</key>
<value>overriddenValue</value>
</entry>
<entry>
<key>someOtherKey</key>
<value>someOtherOverriddenValue</value>
</entry>
</job-data-map>
<cron-expression>0 * * ? * *</cron-expression>
</cron>
</trigger> <trigger>
<cron>
<name>TestCronTrigger2AtEveryMinuteOnThe45thSecond</name>
<group>GroupOfTestJob2Triggers</group>
<job-name>TestJob2</job-name>
<job-group>GroupOfTestJob2</job-group>
<start-time>2010-02-09T12:26:00.0</start-time>
<end-time>2012-02-09T12:26:00.0</end-time>
<misfire-instruction>MISFIRE_INSTRUCTION_SMART_POLICY</misfire-instruction>
<cron-expression>45 * * ? * *</cron-expression>
<time-zone>America/Los_Angeles</time-zone>
</cron>
</trigger>
</schedule>
</job-scheduling-data>

4、任务类,xml配置文件里指向的job任务类

package org.quartz.examples.example10;

import java.util.Date;
import java.util.Set; import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.JobKey;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory; /**
* job任务类
*/
public class SimpleJob implements Job { private static Logger LOG = LoggerFactory.getLogger(SimpleJob.class); // 必须要有public修饰的无参构造函数
public SimpleJob() {
} // 定时器执行方法
@SuppressWarnings("unchecked")
public void execute(JobExecutionContext context) throws JobExecutionException {
JobKey jobKey = context.getJobDetail().getKey();
LOG.info("--------- job任务执行: " + jobKey + " executing at " + new Date() + ", fired by: "
+ context.getTrigger().getKey()); if (context.getMergedJobDataMap().size() > 0) {
Set<String> keys = context.getMergedJobDataMap().keySet();
for (String key : keys) {
String val = context.getMergedJobDataMap().getString(key);
LOG.info("--------- job任务执行。 - jobDataMap entry: " + key + " = " + val);
}
} context.setResult("hello");
} }

5、PlugInExample调度器类

package org.quartz.examples.example10;

import org.quartz.Scheduler;
import org.quartz.SchedulerFactory;
import org.quartz.SchedulerMetaData;
import org.quartz.impl.StdSchedulerFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory; /**
* 这个示例将生成大量要运行的作业
*/
public class PlugInExample { public void run() throws Exception {
Logger log = LoggerFactory.getLogger(PlugInExample.class); // 初始化一个调度工厂,并实例化一个调度类
SchedulerFactory sf = new StdSchedulerFactory();
Scheduler sched = null;
try {
sched = sf.getScheduler();
} catch (NoClassDefFoundError e) {
log.error(" 无法加载类——很可能类路径上没有jta.jar。 如果在examples/lib文件夹中没有,请将它添加到这里,以便运行这个示例。", e);
return;
} log.info("----------- 不调度任何作业——依赖于XML定义 "); sched.start();
Thread.sleep(300L * 1000L); sched.shutdown(true); SchedulerMetaData metaData = sched.getMetaData();
log.info("Executed " + metaData.getNumberOfJobsExecuted() + " jobs.");
} public static void main(String[] args) throws Exception { PlugInExample example = new PlugInExample();
example.run();
} }

quartz2.3.0(十)xml配置方式定义quartz定时任务的更多相关文章

  1. Spring3.2 中 Bean 定义之基于 XML 配置方式的源码解析

    Spring3.2 中 Bean 定义之基于 XML 配置方式的源码解析 本文简要介绍了基于 Spring 的 web project 的启动流程,详细分析了 Spring 框架将开发人员基于 XML ...

  2. Struts2第十篇【数据校验、代码方式、XML配置方式、错误信息返回样式】

    回顾以前的数据校验 使用一个FormBean对象来封装着web端来过来的数据 维护一个Map集合保存着错误信息-对各个字段进行逻辑判断 //表单提交过来的数据全都是String类型的,birthday ...

  3. struts2视频学习笔记 22-23(基于XML配置方式实现对action的所有方法及部分方法进行校验)

    课时22 基于XML配置方式实现对action的所有方法进行校验   使用基于XML配置方式实现输入校验时,Action也需要继承ActionSupport,并且提供校验文件,校验文件和action类 ...

  4. 【Struts2学习笔记(11)】对action的输入校验和XML配置方式实现对action的全部方法进行输入校验

    在struts2中,我们能够实现对action的全部方法进行校验或者对action的指定方法进行校验. 对于输入校验struts2提供了两种实现方法: 1. 採用手工编写代码实现. 2. 基于XML配 ...

  5. SpringBoot 整合 Mybatis + Mysql——XML配置方式

    一.介绍 SpringBoot有两种方法与数据库建立连接,一种是集成Mybatis,另一种用JdbcTemplate,本文主要讨论集成Mybatis方式. SpringBoot整合Mybatis也有两 ...

  6. Spring之AOP原理、代码、使用详解(XML配置方式)

    Spring 的两大核心,一是IOC,另一个是AOP,本博客从原理.AOP代码以及AOP使用三个方向来讲AOP.先给出一张AOP相关的结构图,可以放大查看. 一.Spring AOP 接口设计 1.P ...

  7. struts_20_对Action中所有方法、某一个方法进行输入校验(基于XML配置方式实现输入校验)

    第01步:导包 第02步:配置web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app ...

  8. hibernate 联合主键生成机制(组合主键XML配置方式)

    hibernate 联合主键生成机制(组合主键XML配置方式)   如果数据库中用多个字段而不仅仅是一个字段作为主键,也就是联合主键,这个时候就可以使用hibernate提供的联合主键生成策略. 具体 ...

  9. 转载 - Struts2基于XML配置方式实现对action的所有方法进行输入校验

    出处:http://www.cnblogs.com/Laupaul/archive/2012/03/15/2398360.html http://www.blogjava.net/focusJ/arc ...

随机推荐

  1. vue 自动px单位自动转换rem

    vue 适配移动端 假设设计图是375 第一步 安装 lib-flexible npm i lib-flexible --save 第二步 安装 px2rem-loader npm install p ...

  2. 通过三层交换机实现不同VLAN间的通信

    主机的IP地址以及子网掩码已列出,下面将讲解如何配置利用三层交换机来实现不同VLAN间的相互通信 SW1的命令: en  //进入特权模式 conf  t   //全局模式 vlan 10    // ...

  3. nuxt如何处理用户登录状态持久化:nuxtServerInit 页面渲染前的store处理

    vue-cli项目中,我们可以用vuex-persistedstate,它可以使vuex的状态持久化,页面刷新都不会丢失,原理当然是localStorage啦!当然也可以使用vue-cookies进行 ...

  4. idea 导入 eclipse java ee 项目,并使用 tomcat 7 部署运行

    1.导入java ee项目.直接open 2.导入jar依赖 3.修改编译的目录 4.修改tomcat目录 5.tomcat添加目录 请注意classes单词 D:\project\xxxxxx\We ...

  5. 2019牛客国庆集训派对day1

    C 存每个值存在的位置,枚举末尾的值,再枚举前面的值,哈希二分出最长相同的,即剩下的为不同的 D \(f_{i,j,k}\)为前i位,最后一个3因子在j,次因子在k G bitset处理有多少位置符合 ...

  6. 给.sh文件添加执行权限linux

    chmod是权限管理命令change the permissions mode of a file的缩写.. u代表所有者,x代表执行权限. + 表示增加权限. chmod u+x file.sh 就 ...

  7. 在js中添加HTML类样式

    有时候需要给元素添加类样式,但又要保留之前的类,可以使用element.classList.add("类名");

  8. shell中$(( ))、$( )、``与${ }的区别

    转 :shell $(( )).$( ).``与${ }的区别 $( )与` `(反引号)命令替换 在bash中,$( )与` `(反引号)都是用来作命令替换的.命令替换与变量替换差不多,都是用来重组 ...

  9. Jmeter工具功能介绍

    可以去官方学习:http://jmeter.apache.org/ 1.可以修改语言 2.部分图标功能 新建 打开一个jmeter脚本 保存一个jmeter脚本 剪切 复制 粘贴 展开目录树 收起目录 ...

  10. Linux在线安装Redis

    一.进入Redis官网寻找需要下载的版本:https://redis.io/ 将下载地址链接复制下来:http://download.redis.io/releases/redis-5.0.7.tar ...