Quartz调用大全
Quartz调用大全
1.Quartz应用范围广泛,可单独执行也可在spring中嵌入执行。
类似的定时任务在linux下可以用crontab执行
2.实现代码:
QuartzTest :主要执行类
package com.taobao.terminator.allen.QuartzTest;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.quartz.CronTrigger;
import org.quartz.JobDetail;
import org.quartz.JobListener;
import org.quartz.Scheduler;
import org.quartz.SchedulerFactory;
import org.quartz.impl.StdSchedulerFactory;
public class QuartzTest {
private final static Log logger = LogFactory.getLog(QuartzTest.class);
public static void main(String[] args) {
System.out.println("this is test for Quartz");
//初始化scheduler工厂类
SchedulerFactory factory = new StdSchedulerFactory(); try {
//DirectSchedulerFactory生成一个实例,可create一个带名字的shceduler
Scheduler shceduler = factory.getScheduler(); //Quartz监听器,分为全局和局部的。局部的需要在特定的jobDetail中重回一次,全局不需要
JobListener jobListener = new QuartzListener("quartz - test");
shceduler.addJobListener(jobListener); //Shceduler的Context类似于servlet的context,功能相似.Context会传递给监听器
shceduler.getContext().put("coreName", "coreName"); //同样可以保存context的key-value ,jobDetail.getJobDataMap()
JobDetail jobDetail = new JobDetail("Full-Detail", "Full-Detail-Group", QuartzJob.class);
jobDetail.addJobListener("quartz - test");
jobDetail.getJobDataMap().put("jobDetail-data", "jobDetail"); //生成触发器
CronTrigger trigger = new CronTrigger("Full-Trigger" , "Full-Trigger-Group");
trigger.setCronExpression("0/30 * * * * ?"); //添加job
shceduler.scheduleJob(jobDetail, trigger); //开始执行shceduler
shceduler.start(); while(true) {
Thread.sleep(1000 * 10);
System.out.println("触发定时任务"); shceduler.triggerJob("Full-Detail", "Full-Detail-Group"); Thread.sleep(1000 * 40); //终止正在运行的job
shceduler.interrupt("Full-Detail", "Full-Detail-Group");
System.out.println("the schedule is over"); //关闭定时器
shceduler.shutdown(); break;
}
} catch (Exception e) {
logger.error("生成调试器失败" , e);
}
}
}
QuartzListener :监听器,可设置在jobDetail ,trigger, scheduler三个层次
主要对job执行之前及之后的进行操作,context可负责通信及异常,类似于servlet的context功能
package com.taobao.terminator.allen.QuartzTest;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.JobListener;
public class QuartzListener implements JobListener{
private String listenerName = "quartz-listener"; public QuartzListener(String listenerName) {
this.listenerName = listenerName;
} public String getName() {
return this.listenerName;
}
public void jobToBeExecuted(JobExecutionContext context) {
System.out.println("the job listener is start"); }
public void jobExecutionVetoed(JobExecutionContext context) {
}
public void jobWasExecuted(JobExecutionContext context,
JobExecutionException jobException) {
System.out.println("the job listener is end");
}
}
QuartzJob:注意中断方法的实现,可用于停止当前job,也可用shcedule.deleteJob(name,groupName)进行直接删除
import org.quartz.InterruptableJob;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.UnableToInterruptJobException;
public class QuartzJob implements InterruptableJob{
private boolean stop = false ;
public void execute(JobExecutionContext context) throws JobExecutionException {
if(!this.stop) {
System.out.println("this is ok");
}
}
public void interrupt() throws UnableToInterruptJobException {
this.stop = true ;
System.out.println("it is over");
} public boolean isStop() {
return stop;
}
}
转自:http://blog.csdn.net/flyingpig4/article/details/6263560
Quartz调用大全的更多相关文章
- WordPress页面函数功能代码调用大全
WordPress模板基本文件 style.css 样式表文件index.php 主页文件single.php 日志单页文件page.php 页面文件archvie.php 分类和日期存档页文件sea ...
- spring中配置quartz调用两次及项目日志log4j不能每天生成日志解决方法
在quartz中配置了一个方法运行时会连续调用两次,是因为加载两次,只需在tomcat的server.xml中修改配置 <Host name="www.xx.cn" appB ...
- Quartz 调用
讲解 在线Cron表达式 调用(DLL下载) static void Main(string[] args) { //1.任务调度调用 //开启任务,操作数据,然后将数据广播给指定用户 //Cron表 ...
- dede日期时间标签调用大全
dedecms最强大的功能就是调用标签,可以变换出各种样式的文章形式出来,本节将DEDECMS调用时间的样式做一个总结,基本所有的时间调用样式都有了,日期时间格式 (利用strftime()函数格式化 ...
- dede栏目调用大全
A:侧边栏常用的当前栏目的父栏目调用(5.7) 1.在include/common.inc.php增加函数 function getTopCategoryName($cid=0) { global $ ...
- [置顶] android系统功能调用大全
1.从google搜索内容 Intent intent = new Intent(); intent.setAction(Intent.ACTION_WEB_SEARCH); intent.pu ...
- 常用的JS页面跳转代码调用大全
一.常规的JS页面跳转代码 1.在原来的窗体中直接跳转用 <script type="text/javascript"> window.location.href=&q ...
- DedeCMS织梦模板标签调用大全
本文转载:http://www.mubanzhijia.com/jishujiaocheng/1.html 关键描述调用标签: <meta name="keywords" c ...
- vue 父子组件传值以及方法调用,平行组件之间传值以及方法调用大全
vue项目经常需要组件间的传值以及方法调用,具体场景就不说了,都知道.基本上所有的传值都可以用vuex状态管理来实现,只要在组件内监听vuex就好. vue常用的传值方式以及方法有: 1. 父值传子( ...
随机推荐
- 百度Webuploader 大文件分片上传(.net接收)
前阵子要做个大文件上传的功能,找来找去发现Webuploader还不错,关于她的介绍我就不再赘述. 动手前,在园子里找到了一篇不错的分片上传的帖子,参考之后,踏出了第一步.此文记录我这次实践的点滴,仅 ...
- 修改web.config来开启Gzip压缩
IIS 7.0之后引入的一个IIS配置文件,详细内容参考官方链接http://www.iis.net/learn/get-started /planning-your-iis-architecture ...
- Socket 编程之 TCP 实现
前几天介绍了计算机网络的一些概念,并介绍了几个协议.下面就说说 Java 中的 Socket 编程,服务器和客户端是如何通信的呢? 首先要介绍一下 Socket ,我们知道在 TCP/IP 协议簇中, ...
- Pearls in a Row CodeForces 620C 水题
题目:http://codeforces.com/problemset/problem/620/C 文章末有一些测试数据仅供参考 题目大意 给你一个数字串,然后将分成几个部分,要求每个部分中必须有一对 ...
- Linux-数据库4
存储引擎 什么是存储引擎? mysql中建的库是文件夹,建的表是文件.文件有不同的类型,数据库中的表也有不同的类型,表的类型不同,会对应mysql不同的存取机制,表类型又称为存储引擎. 存储引擎说白了 ...
- python ftp操作脚本&常用函数
需求:快速进行ftp上传 ,下载,查询文件 原来直接在shell下操作: 需要[连接,输用户名,输密码,单文件操作,存在超时限制] 太过于繁琐,容易操作失败 脚本改进: 一句命令,搞定多文件上传,下载 ...
- C# 简单读写ini文件帮助类 INIHelp
软件里需要读取一些初始化信息, 决定用ini来做,简单方便. 于是查了一写代码,自己写了一个帮助类. INI文件格式是某些平台或软件上的配置文件的非正式标准, 以节(section)和键(key)构成 ...
- JMS开发指南
1.JMS消息的异步与同步接收 消息的异步接收: 异步接收是指当消息到达时,主动通知客户端,即当消息到达时转发到客户端.JMS客户端可以通过注册一个实现MessageListener接口的对象到Mes ...
- 浅谈 PHP 中的多种加密技术及代码示例
信息加密技术的分类 单项散列加密技术(不可逆的加密) 属于摘要算法,不是一种加密算法,作用是把任意长的输入字符串变化成固定长的输出串的一种函数 MD5 string md5 ( string $str ...
- python开发_xml.dom_解析XML文档_完整版_博主推荐
在阅读之前,你需要了解一些xml.dom的一些理论知识,在这里你可以对xml.dom有一定的了解,如果你阅读完之后. 下面是我做的demo 运行效果: 解析的XML文件位置:c:\\test\\hon ...