@Service
public class QuartzServiceImpl extends
BaseServiceImpl<JobDetails, String, QuartzTaskVO> implements
QuartzService { private JobDetailsJpaDao jobDetailsJpaDao; public JobDetailsJpaDao getJobDetailsJpaDao() {
return jobDetailsJpaDao;
} @Autowired
public QuartzServiceImpl(JobDetailsJpaDao jobDetailsJpaDao,
BaseJdbcDao baseJdbcDao) {
super((BaseJpaRepository<JobDetails, String>) jobDetailsJpaDao,
baseJdbcDao);
this.jobDetailsJpaDao = jobDetailsJpaDao;
} @Autowired
private Scheduler scheduler; @ServiceDesc("查询当前活动的任务列表")
@Override
public Map<String, Object> queryActiveTaskMap(JobDetailsQueryParam param) {
SQLQueryUtil util = new SQLQueryUtil();
util.addTable("QRTZ_TRIGGERS");
util.addColumn("SCHED_NAME", "schedule_name");
util.addColumn("JOB_NAME", "job_name");
util.addColumn("JOB_GROUP", "job_group");
util.addColumn("TRIGGER_NAME", "trigger_name");
util.addColumn("TRIGGER_GROUP", "trigger_group");
util.addColumn("PREV_FIRE_TIME", "prev_fire_time");
util.addColumn("NEXT_FIRE_TIME", "next_fire_time");
util.addColumn("START_TIME", "start_time");
util.addColumn("END_TIME", "end_time");
util.addColumn("TRIGGER_STATE", "trigger_state"); return super.queryDataMapNotExtend(util, QuartzTaskVO.class, param);
} @Override
@ServiceDesc("启动任务")
public void startTask(String jobId, String triggerId) throws AppException {
TaskId id = new TaskId(jobId, triggerId);
try {
scheduler.scheduleJob(id.getJobDetails().getJobDetail(), id
.getTriggers().getTrigger());
} catch (SchedulerException e) {
throw new AppException(ResultCode.Failure, e.getMessage());
} catch (ClassNotFoundException e) {
throw new AppException(ResultCode.Failure, e.getMessage());
}
} @Override
@ServiceDesc("暂停任务")
public void pauseTask(String... ids) throws AppException {
try {
for (String idStr : ids) {
scheduler.pauseJob(new TaskId(idStr).getJobKey());
}
} catch (SchedulerException e) {
throw new AppException(ResultCode.Failure, e.getMessage());
}
} @Override
@ServiceDesc("恢复任务")
public void resumeTask(String... ids) throws AppException {
try {
for (String idStr : ids) {
scheduler.resumeJob(new TaskId(idStr).getJobKey());
}
} catch (SchedulerException e) {
throw new AppException(ResultCode.Failure, e.getMessage());
}
} @Override
@ServiceDesc("删除任务")
public void deleteTask(String... ids) throws AppException {
try {
for (String idStr : ids) {
scheduler.deleteJob(new TaskId(idStr).getJobKey());
}
} catch (SchedulerException e) {
throw new AppException(ResultCode.Failure, e.getMessage());
}
} } class TaskId { /**
* id字符串格式: jobName:jobGroup;triggerName:triggerGroup
*/
public TaskId(String id) {
this.jobKey = new JobKey(id.split(";")[0].split(":")[0],
id.split(";")[0].split(":")[1]);
this.triggerKey = new TriggerKey(id.split(";")[1].split(":")[0],
id.split(";")[1].split(":")[1]);
} public TaskId(String jobId, String triggerId) {
JobDetailsService jobDetailsService = (JobDetailsService) SpringContextUtil
.getUtil().getBean(JobDetailsService.class);
TriggersService triggersService = (TriggersService) SpringContextUtil
.getUtil().getBean(TriggersService.class);
this.jobDetails = jobDetailsService.get(jobId);
this.triggers = triggersService.get(triggerId);
this.jobKey = new JobKey(jobDetails.getJobName(),
jobDetails.getJobGroup());
this.triggerKey = new TriggerKey(triggers.getTriggerName(),
triggers.getTriggerGroup());
} private JobDetails jobDetails; private Triggers triggers; private JobKey jobKey; private TriggerKey triggerKey; public JobDetails getJobDetails() {
return jobDetails;
} public void setJobDetails(JobDetails jobDetails) {
this.jobDetails = jobDetails;
} public Triggers getTriggers() {
return triggers;
} public void setTriggers(Triggers triggers) {
this.triggers = triggers;
} public JobKey getJobKey() {
return jobKey;
} public void setJobKey(JobKey jobKey) {
this.jobKey = jobKey;
} public TriggerKey getTriggerKey() {
return triggerKey;
} public void setTriggerKey(TriggerKey triggerKey) {
this.triggerKey = triggerKey;
} }

quartz使用案例的更多相关文章

  1. JAVAEE——BOS物流项目13:Quartz入门案例、核心概念、cron 表达式的格式(了解)

    1.quartz入门案例 本入门案例基于spring和quartz整合完成. 第一步:创建maven工程,导入spring和quartz相关依赖 第二步:创建任务类 第三步:在spring配置文件中配 ...

  2. Quartz简单案例

    需求需要开发一个每天定时推送消息给微信用户,第一次接触quartz,简单案例 1. 先编辑要执行的任务 测试类代码 package com.wqq.test.quartz; import org.sp ...

  3. 初识Quartz(入门案例)+常用的Cron表达式

    1.Quartz架构图 1.实体层 package cn.happy.entity; //1. public class Plan { //时间 private String date; //任务 p ...

  4. Quartz入门案例与介绍(与spring整合)

    Quartz概述 Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用.Quartz可以用来创建简单或 ...

  5. quartz(3)--spring整合quartz入门案例

    第一步:导入jar <!-- quartz --> <dependency> <groupId>org.quartz-scheduler</groupId&g ...

  6. spring boot整合quartz定时任务案例

    1.运行环境 开发工具:intellij idea JDK版本:1.8 项目管理工具:Maven 4.0.0 2.GITHUB地址 https://github.com/nbfujx/springBo ...

  7. Quartz应用实践入门案例一(基于Web环境)

    Quartz是一个完全由java编写的开源作业调度框架,正是因为这个框架整合了许多额外的功能,所以在使用上就显得相当容易.只是需要简单的配置一下就能轻松的使用任务调度了.在Quartz中,真正执行的j ...

  8. Spring中使用quartz插件实现定时任务

    第一步:导入架包 *spring3.2.3版本的架包将spring的各个功能模块给分开了,我们必须将Spring必须依赖的包导入上去 第二步:编写配置文件 <?xml version=" ...

  9. Quartz的基本使用之入门(2.3.0版本)

    一.Quartz可以用来做什么 Quartz是一个强大任务调度框架,我工作时候会在这些情况下使用到quartz框架,当然还有很多的应用场景,在这里只列举2个实际用到的 餐厅系统会在每周四晚上的22点自 ...

随机推荐

  1. linux下安装python

    在Linux下安装Python的操作相当简单,按如下步骤操作即可: 命令: wget https://www.python.org/ftp/python/3.5.2/Python-3.5.2.tgzt ...

  2. poj1573 Robot Motion

    Robot Motion Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 12507   Accepted: 6070 Des ...

  3. lua upvalue

    转自http://blog.chinaunix.net/uid-52437-id-2108789.html Lua 中的函数是一阶类型值(first-class value),定义函数就象创建普通类型 ...

  4. LCT裸题泛做

    ①洞穴勘测 bzoj2049 题意:由若干个操作,每次加入/删除两点间的一条边,询问某两点是否连通.保证任意时刻图都是一个森林.(两点之间至多只有一条路径) 这就是个link+cut+find roo ...

  5. AFNetworking 与 UIKit+AFNetworking 详解

    资料来源 : http://github.ibireme.com/github/list/ios GitHub : 链接地址 简介 : A delightful iOS and OS X networ ...

  6. 洛谷 U4792 Acheing 单调队列

    U4792 Acheing 5通过 43提交 题目提供者Acheing 标签 难度尚无评定 提交 最新讨论 暂时没有讨论 题目背景 题目并没有什么含义,只是想宣传一下自己的博客,Acheing.com ...

  7. Android性能优化之Systrace工具介绍(一) _&& Systrace生成的trace.html打开空白或者打不开的解决办法

    1.必须用Chrome打开 2.在mac电脑上,可能Chrome打开也是空白,解决办法是:在chrome地址栏中输入”chrome:tracing”,然后点击load按钮load你的trace.htm ...

  8. Linux Linux程序练习十五(进程间的通信共享内存版)

    /* * 题目: * 编写程序,要去实现如下功能: 父进程创建子进程1和子进程2.子进程1向子进程2发送可靠信号,并传送额外数据为子进程1的pid*2; 子进程2接受可靠信号的值,并发送给父进程,父进 ...

  9. ubuntu14.04禁用guest用户登录

    打开终端(ctrl+alt+t) sudo  echo -e "[SeatDefaults]\nallow-guest=false"  > /usr/share/lightd ...

  10. c++ 静态持续变量

    c++为静态存储持续性变量提供了3种链接性: 外部链接性(可在其他文件中访问) 内部链接性(只能在当前文件中访问) 无链接性(别有用心能在当前函数或代码中访问) 如果没有显示的初始化静态变量会把它设置 ...