- 浏览: 984031 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (826)
- 硬件 (8)
- 软件 (24)
- 软件工程 (34)
- JAVA (229)
- C/C++/C# (77)
- JavaScript (8)
- PHP (1)
- Ruby (3)
- MySQL (14)
- 数据库 (19)
- 心情记事 (12)
- 团队管理 (19)
- Hadoop (1)
- spring (22)
- mybatis(ibatis) (7)
- tomcat (16)
- velocity (0)
- 系统架构 (6)
- JMX (8)
- proxool (1)
- 开发工具 (16)
- python (10)
- JVM (27)
- servlet (5)
- JMS (26)
- ant (2)
- 设计模式 (5)
- 智力题 (2)
- 面试题收集 (1)
- 孙子兵法 (16)
- 测试 (1)
- 数据结构 (7)
- 算法 (22)
- Android (11)
- 汽车驾驶 (1)
- lucene (1)
- memcache (12)
- 技术架构 (7)
- OTP-Erlang (7)
- memcached (17)
- redis (20)
- 浏览器插件 (3)
- sqlite (3)
- Heritrix (9)
- Java线程 (1)
- scala (0)
- Mina (6)
- 汇编 (2)
- Netty (15)
- libevent (0)
- CentOS (12)
- mongod (5)
- mac os (0)
最新评论
-
kingasdfg:
你这里面存在一个错误添加多个任务 应该是这样的 /** * ...
Quartz的任务的临时启动和暂停和恢复【转】 -
kyzeng:
纠正一个错误,long型对应的符号是J,不是L。
Jni中C++和Java的参数传递 -
zhaohaolin:
抱歉,兄弟,只是留下作记录,方便学习,如果觉得资料不好,可以到 ...
netty的个人使用心得【转】 -
cccoooccooco:
谢谢!自己一直以为虚机得使用网线才可以与主机连接呢。。
主机网卡无网线连接与虚拟机通信 -
yuqilin001:
要转别人的东西,请转清楚点嘛,少了这么多类,误人子弟
netty的个人使用心得【转】
在项目中需要手动启停某些服务,那么需要有一个控制这些任务的类。由于任务是有Quartz控制的,我们只需要通过Quartz的相关的API实现相关的功能即可。
package com.easyway.app.quartz.mgr; import java.util.Date; import java.util.List; import java.util.Map; import org.quartz.JobDataMap; import org.quartz.JobDetail; import org.quartz.JobKey; import org.quartz.Scheduler; import org.quartz.SchedulerException; import org.quartz.SchedulerFactory; import org.quartz.Trigger; import org.quartz.TriggerKey; import org.quartz.impl.StdSchedulerFactory; import org.quartz.impl.matchers.GroupMatcher; /** * 一个简单的quartz任务管理器 * @author longgangbai * */ public class QuartzScheduleMgr { private static Scheduler scheduler=getScheduler(); /** * 创建一个调度对象 * @return * @throws SchedulerException */ private static Scheduler getScheduler() { SchedulerFactory sf = new StdSchedulerFactory(); Scheduler scheduler=null; try { scheduler = sf.getScheduler(); } catch (SchedulerException e) { e.printStackTrace(); } return scheduler; } public static Scheduler getInstanceScheduler(){ return scheduler; } /** * 启动一个调度对象 * @throws SchedulerException */ public void start() throws SchedulerException { scheduler.start(); } /** * 检查调度是否启动 * @return * @throws SchedulerException */ public boolean isStarted() throws SchedulerException { return scheduler.isStarted(); } /** * 关闭调度信息 * @throws SchedulerException */ public void shutdown() throws SchedulerException { scheduler.shutdown(); } /** * 添加调度的job信息 * @param jobdetail * @param trigger * @return * @throws SchedulerException */ public Date scheduleJob(JobDetail jobdetail, Trigger trigger) throws SchedulerException{ return scheduler.scheduleJob(jobdetail, trigger); } /** * 添加相关的触发器 * @param trigger * @return * @throws SchedulerException */ public Date scheduleJob(Trigger trigger) throws SchedulerException{ return scheduler.scheduleJob(trigger); } /** * 添加多个job任务 * @param triggersAndJobs * @param replace * @throws SchedulerException */ public void scheduleJobs(Map<JobDetail, List<Trigger>> triggersAndJobs, boolean replace) throws SchedulerException { scheduler.scheduleJobs(triggersAndJobs, replace); } /** * 停止调度Job任务 * @param triggerkey * @return * @throws SchedulerException */ public boolean unscheduleJob(TriggerKey triggerkey) throws SchedulerException{ return scheduler.unscheduleJob(triggerkey); } /** * 停止调度多个触发器相关的job * @param list * @return * @throws SchedulerException */ public boolean unscheduleJobs(List<TriggerKey> triggerKeylist) throws SchedulerException{ return scheduler.unscheduleJobs(triggerKeylist); } /** * 重新恢复触发器相关的job任务 * @param triggerkey * @param trigger * @return * @throws SchedulerException */ public Date rescheduleJob(TriggerKey triggerkey, Trigger trigger) throws SchedulerException{ return scheduler.rescheduleJob(triggerkey, trigger); } /** * 添加相关的job任务 * @param jobdetail * @param flag * @throws SchedulerException */ public void addJob(JobDetail jobdetail, boolean flag) throws SchedulerException { scheduler.addJob(jobdetail, flag); } /** * 删除相关的job任务 * @param jobkey * @return * @throws SchedulerException */ public boolean deleteJob(JobKey jobkey) throws SchedulerException{ return scheduler.deleteJob(jobkey); } /** * 删除相关的多个job任务 * @param jobKeys * @return * @throws SchedulerException */ public boolean deleteJobs(List<JobKey> jobKeys) throws SchedulerException{ return scheduler.deleteJobs(jobKeys); } /** * * @param jobkey * @throws SchedulerException */ public void triggerJob(JobKey jobkey) throws SchedulerException { scheduler.triggerJob(jobkey); } /** * * @param jobkey * @param jobdatamap * @throws SchedulerException */ public void triggerJob(JobKey jobkey, JobDataMap jobdatamap) throws SchedulerException { scheduler.triggerJob(jobkey, jobdatamap); } /** * 停止一个job任务 * @param jobkey * @throws SchedulerException */ public void pauseJob(JobKey jobkey) throws SchedulerException { scheduler.pauseJob(jobkey); } /** * 停止多个job任务 * @param groupmatcher * @throws SchedulerException */ public void pauseJobs(GroupMatcher<JobKey> groupmatcher) throws SchedulerException { scheduler.pauseJobs(groupmatcher); } /** * 停止使用相关的触发器 * @param triggerkey * @throws SchedulerException */ public void pauseTrigger(TriggerKey triggerkey) throws SchedulerException { scheduler.pauseTrigger(triggerkey); } public void pauseTriggers(GroupMatcher<TriggerKey> groupmatcher) throws SchedulerException { scheduler.pauseTriggers(groupmatcher); } /** * 恢复相关的job任务 * @param jobkey * @throws SchedulerException */ public void resumeJob(JobKey jobkey) throws SchedulerException { scheduler.pauseJob(jobkey); } public void resumeJobs(GroupMatcher<JobKey> matcher) throws SchedulerException { scheduler.resumeJobs(matcher); } public void resumeTrigger(TriggerKey triggerkey) throws SchedulerException { scheduler.resumeTrigger(triggerkey); } public void resumeTriggers(GroupMatcher<TriggerKey> groupmatcher) throws SchedulerException { scheduler.resumeTriggers(groupmatcher); } /** * 暂停调度中所有的job任务 * @throws SchedulerException */ public void pauseAll() throws SchedulerException { scheduler.pauseAll(); } /** * 恢复调度中所有的job的任务 * @throws SchedulerException */ public void resumeAll() throws SchedulerException { scheduler.resumeAll(); } }
创建一个Job任务:
/* * Copyright 2005 - 2009 Terracotta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy * of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. * */ package com.easyway.app.quartz.mgr; import java.util.Date; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; /** * 一个简单的quartz调用job * @author longgangbai * */ public class HelloJob implements Job { private static Logger _log = LoggerFactory.getLogger(HelloJob.class); public HelloJob() { } public void execute(JobExecutionContext context) throws JobExecutionException { _log.info("Hello World! - " + new Date()); } }
创建触发器和调用相关的Job
/* * Copyright 2005 - 2009 Terracotta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy * of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. * */ package com.easyway.app.quartz.mgr; import static org.quartz.DateBuilder.evenMinuteDate; import static org.quartz.JobBuilder.newJob; import static org.quartz.TriggerBuilder.newTrigger; import java.util.Date; import org.quartz.JobDetail; import org.quartz.Scheduler; import org.quartz.Trigger; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * 一个简单的测试quartz任务管理器测试类 * @author longgangbai * */ public class QuartzScheduleMain { /** * * @throws Exception */ public void run() throws Exception { Logger log = LoggerFactory.getLogger(QuartzScheduleMain.class); log.info("------- Initializing ----------------------"); // First we must get a reference to a scheduler //从调度管理器中获取调度对象 Scheduler sched = QuartzScheduleMgr.getInstanceScheduler(); log.info("------- Initialization Complete -----------"); // computer a time that is on the next round minute Date runTime = evenMinuteDate(new Date()); log.info("------- Scheduling Job -------------------"); // define the job and tie it to our HelloJob class //创建相关的job信息 JobDetail job = newJob(HelloJob.class) .withIdentity("job1", "group1") .build(); // Trigger the job to run on the next round minute //创建一个触发器的名称 Trigger trigger = newTrigger() .withIdentity("trigger1", "group1") .startAt(runTime) .build(); // Tell quartz to schedule the job using our trigger //设置调度相关的Job sched.scheduleJob(job, trigger); log.info(job.getKey() + " will run at: " + runTime); // Start up the scheduler (nothing can actually run until the // scheduler has been started) //启动调度任务 sched.start(); log.info("------- Started Scheduler -----------------"); try { Thread.sleep(25L * 1000L); // executing... } catch (Exception e) { } //暂时停止Job任务开始执行 log.info("-------pauseJob.. -------------"); sched.pauseJob(job.getKey()); try { Thread.sleep(10L * 1000L); } catch (Exception e) { } log.info("------- resumeJob... -------------"); //恢复Job任务开始执行 sched.resumeJob(job.getKey()); try { Thread.sleep(10L * 1000L); // executing... } catch (Exception e) { } // wait long enough so that the scheduler as an opportunity to // run the job! log.info("------- Waiting 65 seconds... -------------"); try { // wait 65 seconds to show job Thread.sleep(65L * 1000L); // executing... } catch (Exception e) { } // shut down the scheduler log.info("------- Shutting Down ---------------------"); sched.shutdown(true); log.info("------- Shutdown Complete -----------------"); } public static void main(String[] args) throws Exception { QuartzScheduleMain example = new QuartzScheduleMain(); example.run(); } }
评论
1 楼
kingasdfg
2014-03-11
你这里面存在一个错误
添加多个任务 应该是这样的
/**
* 添加多个job任务
* @param triggersAndJobs
* @param replace
* @throws SchedulerException
*/
public void scheduleJobs(Map<JobDetail, Set<? extends Trigger>> triggersAndJobs, boolean replace) throws SchedulerException
{
scheduler.scheduleJobs(triggersAndJobs, replace);
}
添加多个任务 应该是这样的
/**
* 添加多个job任务
* @param triggersAndJobs
* @param replace
* @throws SchedulerException
*/
public void scheduleJobs(Map<JobDetail, Set<? extends Trigger>> triggersAndJobs, boolean replace) throws SchedulerException
{
scheduler.scheduleJobs(triggersAndJobs, replace);
}
发表评论
-
调试jdk中的源码,查看jdk局部变量
2013-06-15 23:30 1009调试jdk中的源码,查看jdk局部变量 2012-04 ... -
Eclipse快捷键 10个最有用的快捷键<转>
2013-04-11 23:28 1004Eclipse中10个最有用的快捷键组合 一个Eclip ... -
Lucene 3.6 中文分词、分页查询、高亮显示等
2012-12-09 23:35 17681、准备工作 下载lucene 3.6.1 : htt ... -
Maven实战(九)——打包的技巧(转)
2012-10-12 00:41 896“打包“这个词听起 ... -
基于Maven的web工程如何配置嵌入式Jetty Server开发调试环境(转)
2012-10-12 00:28 8671、首先在web工程的POM文件里添加依赖jar包如下: ... -
轻轻松松学Solr(1)--概述及安装[转]
2012-09-18 14:59 946概述 这段时间对企 ... -
分析Netty工作流程[转]
2012-09-04 19:02 842下面以Netty中Echo的例 ... -
让eclipse在ubuntu下面好看一点
2012-03-27 10:17 880<p> </p> <h1 cla ... -
zookeeper安装和应用场合(名字,配置,锁,队列,集群管理)[转]
2012-01-12 17:59 1611安装和配置详解 本文 ... -
Jakarta-Common-BeanUtils使用笔记[转]
2012-01-10 14:13 1117Jakarta-Common-BeanUtils ... -
一个关于Java Thread wait(),notify()的实用例【转】
2012-01-07 16:05 981///// // ProducerConsume ... -
Java基础:Java中的 assert 关键字解析【转】
2012-01-06 19:50 971J2SE 1.4在语言上提供了 ... -
一篇不错的讲解Java异常的文章(转载)----感觉很不错,读了以后很有启发[转]
2012-01-06 15:02 1215六种异常处理的陋习 ... -
如何解决HP QC(Quality Center)在Windows 7下不能工作的问题
2011-12-26 10:48 1534HP QC(Quantity Center) 是一款不错的测 ... -
JAVA读写文件,中文乱码 【转】
2011-12-19 23:43 2068最近在做HTML静态生成,需要从硬盘上把模版文件的内容读出来。 ... -
Java 6 JVM参数选项大全(中文版)【转】
2011-12-19 19:51 923Java 6 JVM参数选项大全(中文版) 作者 ... -
使用assembly plugin实现自定义打包【转】
2011-12-13 01:58 923在上一篇文章中,讨论到在对maven的机制不熟悉的情况下,为了 ... -
使用maven ant task实现非标准打包[转]
2011-12-13 01:56 1002maven很强大,但是总有些事情干起来不是得心应手,没有使用a ... -
Java日期转换SimpleDateFormat格式大全【转】
2011-12-08 20:22 126124小时制时间 显示: public clas ... -
使用Spring的表单标签库
2011-11-22 20:08 102613.9. 使用Spring的 ...
相关推荐
Spring Quartz 动态暂停、恢复、修改定时任务的一个demo,使用maven构建,框架采用spring springmvc jpa,数据库mysql,含数据库脚本,运行可用,页面访问地址http://localhost:8080/quartz_demo/quartz/list
ssm整合quartz 并持久化到数据库中,实现动态增删改查,暂停任务,恢复任务等 将链接内的target文件直接放到项目ssmquartztest文件夹下 运行环境: jdk5+tomcat7+mysql+eclipse+maven lib jar包下载地址 地址1:...
ssm整合quartz 并持久化到数据库中,实现动态增删改查,暂停任务,恢复任务等 将链接内的target文件直接放到项目ssmquartztest文件夹下 运行环境: jdk5+tomcat7+mysql+eclipse+maven lib jar包下载
Spring 3整合Quartz 1.8实现定时任务三:动态暂停 恢复 修改和删除任务 任务保存到数据库,系统启动时读取数据库,页面显示加载,并管理 注:spring3+quartz2动态任务调度,任务保存在内存中,页面显示动态管理版...
Spring 3整合Quartz 2实现定时任务三:动态暂停 恢复 修改和删除任务,原http://blog.csdn.net/phantomes/article/details/37880551博客的源码例子
tomcat启动时立即调用quartz执行一次
quartz动态任务管理源码,为了方便各位需要者。
Quartz.net作业调度自定义定时执行任务多任务执行c#,定时执行任务,如超时取消订单,自动确认收货等等
Quartz定时任务
定时任务quartz实现分组串行并行动态配置
使用Quartz调度任务,根据需要人为的终止某个任务,适用于很多常见的场景
C# Quartz.Net定时任务操作明细、完整过程 每种场景均有涉及,代码Copy稍作修改就可使用
spring和quartz的定时器的启动和停止例子
里面包含了两个工程项目: 1.Java project工程(含jar包,JDK1.6)。 是spring+quartz的任务调度实例。 2.Java web工程(含jar包,JDK1.7)。 spring+mybatis+quartz任务调度实例
quartz 定时任务调度
Springboot整合Quartz实现定时任务数据库动态配置,新增任务、修改cron表达式、暂停任务、恢复任务、删除任务等操作
Quartz任务调度器与spring整合,做项目的时候常听测试说谁在起着quartz,也不知道是啥,问了下同事,就是定时去执行某些任务的,刚好bug比较少,学习了一下~
Quartz任务调度:根据时间,执行任务。 Quartz工作原理 1) 任务:需要执行的具体工作。 2) 触发器:在特定的时间触发任务的执行。 3) 调度器:任务的实际执行者,负责粘合任务和触发器。
quartz定时任务使用例子大全,这里面介绍了三种使用quartz定时任务的方式,第一种方式是完全使用代码写死的调用方式,第二种使用的是从数据库读取任务配置信息的调用方式,第三种是使用从数据库读取任务配置,生成...
附件中实现了对quartz的动态添加、修改和删除定时任务,方便通过页面动态控制执行定时任务。