quartz2.3.0(九)job任务监听器,监听任务执行前、后、取消手动处理方法
job1任务类
package org.quartz.examples.example9; import java.util.Date; import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.JobKey;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory; /**
* job1任务类
*/
public class SimpleJob1 implements Job { private static Logger LOG = LoggerFactory.getLogger(SimpleJob1.class); // 必须要有public修饰的无参构造函数
public SimpleJob1() {
} // 定时器执行方法
public void execute(JobExecutionContext context) throws JobExecutionException {
JobKey jobKey = context.getJobDetail().getKey();
LOG.info("---------- 作业1执行。SimpleJob1 says: " + jobKey + " executing at " + new Date());
} }
job2任务类
package org.quartz.examples.example9; import java.util.Date; import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.JobKey;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory; /**
* job2任务类
*/
public class SimpleJob2 implements Job { private static Logger LOG = LoggerFactory.getLogger(SimpleJob2.class); // 必须要有public修饰的无参构造函数
public SimpleJob2() {
} // 定时器执行方法
public void execute(JobExecutionContext context) throws JobExecutionException {
JobKey jobKey = context.getJobDetail().getKey();
LOG.info("---------- 作业2执行。SimpleJob2 says: " + jobKey + " executing at " + new Date());
} }
job1任务监听器
package org.quartz.examples.example9; import static org.quartz.JobBuilder.newJob;
import static org.quartz.TriggerBuilder.newTrigger; import org.quartz.JobDetail;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.JobListener;
import org.quartz.SchedulerException;
import org.quartz.Trigger;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory; /**
* job1任务监听器
*/
public class Job1Listener implements JobListener { private static Logger LOG = LoggerFactory.getLogger(Job1Listener.class); public String getName() {
return "job1_to_job2";
} public void jobToBeExecuted(JobExecutionContext inContext) {
LOG.info("Job1Listener says: 作业即将执行.");
} //当org.quartz被调度程序调用时。JobDetailwas即将执行(一个关联的Triggerhas发生),但是TriggerListener否决了它的执行。
public void jobExecutionVetoed(JobExecutionContext inContext) {
LOG.info("Job1Listener says: 作业执行被否决.");
} public void jobWasExecuted(JobExecutionContext inContext, JobExecutionException inException) {
LOG.info("Job1Listener says: 作业已执行.");
// Simple job #2
JobDetail job2 = newJob(SimpleJob2.class).withIdentity("job2").build();
Trigger job2Trigger = newTrigger().withIdentity("job2Trigger").startNow().build(); try {
//去执行job2
inContext.getScheduler().scheduleJob(job2, job2Trigger);
} catch (SchedulerException e) {
LOG.warn("Unable to schedule job2!");
e.printStackTrace();
} } }
调度器类
package org.quartz.examples.example9; import static org.quartz.JobBuilder.newJob;
import static org.quartz.TriggerBuilder.newTrigger; import org.quartz.JobDetail;
import org.quartz.JobKey;
import org.quartz.JobListener;
import org.quartz.Matcher;
import org.quartz.Scheduler;
import org.quartz.SchedulerFactory;
import org.quartz.SchedulerMetaData;
import org.quartz.Trigger;
import org.quartz.impl.StdSchedulerFactory;
import org.quartz.impl.matchers.KeyMatcher;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory; /**
* 演示job任务添加监听器,监听任务执行前、后手动处理方法
*/
public class ListenerExample {
Logger LOG = LoggerFactory.getLogger(ListenerExample.class); public void run() throws Exception {
// 初始化一个调度工厂,并实例化一个调度类
SchedulerFactory sf = new StdSchedulerFactory();
Scheduler sched = sf.getScheduler(); // 作业将被立即执行
JobDetail job = newJob(SimpleJob1.class).withIdentity("job1").build();
Trigger trigger = newTrigger().withIdentity("trigger1").startNow().build();
// 设置job1任务监听器
JobListener listener = new Job1Listener();
Matcher<JobKey> matcher = KeyMatcher.keyEquals(job.getKey());
sched.getListenerManager().addJobListener(listener, matcher);
sched.scheduleJob(job, trigger); sched.start(); LOG.info("------- Waiting 30 seconds... --------------");
Thread.sleep(30L * 1000L); sched.shutdown(true);
LOG.info("------- Shutdown Complete -----------------"); SchedulerMetaData metaData = sched.getMetaData();
LOG.info("Executed " + metaData.getNumberOfJobsExecuted() + " jobs."); } public static void main(String[] args) throws Exception { ListenerExample example = new ListenerExample();
example.run();
} }
quartz2.3.0(九)job任务监听器,监听任务执行前、后、取消手动处理方法的更多相关文章
- angular指令监听ng-repeat渲染完成后执行自定义事件方法
今天工作中遇到需要用到ng-repeat遍历渲染完后执行某个操作,angular本身并没有提供监听ng-repeat渲染完成的指令,所以需要自己创建自定义指令. 在ng-repeat模板实例内部会暴露 ...
- 【转】Android开发20——单个监听器监听多个按钮点击事件
原文网址:http://woshixy.blog.51cto.com/5637578/1093936 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律 ...
- oracle 监听服务OracleOraDb11g_home1TNSListener打开后立马停止错误
首先我真得吐槽一下,我安装这个破软件感觉真的是把能遇到的错误都遇到一遍了,生气!!!!!!! 关于监听服务OracleOraDb11g_home1TNSListener打开后立马停止这个错误,我的解决 ...
- Android监听点击事件实现的三种方法
监听点击事件实现的三种方法:1.匿名内部类2.外部类3.直接实现接口 1.匿名内部类: package com.jereh.calculator; import android.content.Con ...
- ipv4、ipv6的socket同时监听“bind: Address already in use”的解决方法
创建ipv4和ipv6的socket,同时监听某个端口的ipv4和ipv6报文,运行时bind函数执行失败,提示“bind: Address already in use”.原因:ipv6的socke ...
- 同一台机器oralce11g和12c公用一个监听器监听多个端口
启动数据库服务 (这里还没有启动监听器) 如上图OracleServiceORCL为11g的服务,服务名为orcl,OracleServiceWX为12c的服务名,服务名为wx,两个服务均已正常启动, ...
- 417 事件、监听、jQuery、轮播手动
am:通用事件 a链接事件阻止默认行为 return false HTML元素大都包含了自己的默认行为,例如:超链接.提交按钮等.我们可以通过在绑定事件中加上return false来阻止它的默认行为 ...
- 利用angular指令监听ng-repeat渲染完成后执行脚本
业务中有时需要在异步获取数据并用ng-repeat遍历渲染完页面后执行某个操作,angular本身并没有提供监听ng-repeat渲染完成的指令,所以需要自己动手写.有经验的同学都应该知道,在ng-r ...
- Win7/Vista/Server2008下VS 环境 调试调用 HTTP.SYS 无法启动监听服务及启动后其他机器无法访问端口
一. VS调试在Win7(vista系列)操作系统下 HttpListener无法绑定多个 指定IP.端口问题 来自:http://www.cnblogs.com/ryhan/p/4195693.ht ...
随机推荐
- 2017.10.1 国庆清北 D1T1 zhx的字符串题
题目背景 2017国庆清北D1T1 题目描述 你是能看到第一题的 friends 呢. ——hja 何大爷对字符串十分有研究,于是天天出字符串题虐杀 zhx.何大爷今天为 字符串定义了新的权值计算方法 ...
- Maven 打包报错,log4j版本导致
# 在执行打包的时候 mvn clean assembly:assembly # 发生上面的错误 ------------------------------ [INFO] Total time: 2 ...
- 设置win 10 软件开机启动
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp 将快捷方式粘贴进去即可
- php在Linux下的相对路径问题
如图所示,我在 /root/phpcode/ 下面有两个php文件. a.php 与 b.php,我用 a.php 去 require b.php ,然后 b.php 输出 1. 现在我在 /root ...
- Linux 上配置 AG
SQL Server Always On Availability Group 配置步骤:配置三台 Linux 集群节点创建 Availability Group配置 Cluster Resource ...
- Use of Time-series Based Forecasting Technique for Balancing Load and Reducing Consumption of Energy in a Cloud Data Center
年份:2017 摘要: 由于工作负载分配不均,一些服务器变得过载,而另一些服务器仍处于欠载状态. 为了实现负载平衡,需要从过度使用的节点迁移一些虚拟机. 但是与此不同的是,本文提出了一种负载预测算法, ...
- SDM439平台出现部分机型SD卡不能识别mmc1: error -110 whilst initialising SD card【学习笔记】
SDM439平台出现部分机型SD卡不能识别mmc1: error -110 whilst initialising SD card 打印了如下的log: - ::>[ after ms - :: ...
- Attention U-Net: Learning Where to Look for the Pancreas
Attention U-Net: Learning Where to Look for the Pancreas 2019-09-10 09:50:43 Paper: https://arxiv.or ...
- Microsoft Office Excel不能访问文件*.xls的解决方案
Microsoft Office Excel不能访问文件‘xxxx.xls“可能的原因有:·文件名称或路径不存在,文件正被其他程序使用:您正要保存的工作簿与当前打开的工作簿同名. 解决方案 1.首先检 ...
- 转 全新多媒体共享器Ipush推送|Miracast WIFI无线同屏推送
http://www.52bjw.cn/product-info/5767857.html 操作指南及注意事项 (draft) miracast和dlna/airplay分别工作在wifi direc ...