package com.sundoctor.quartz.service;
import java.text.ParseException;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.math.NumberUtils;
import org.apache.commons.lang.time.DateUtils;
import org.quartz.CronExpression;
import org.quartz.CronTrigger;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SimpleTrigger;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
import com.sundoctor.example.Constant;
import com.sundoctor.quartz.dao.QuartzDao;
@Service("schedulerService")
public class SchedulerServiceImpl implements SchedulerService {
private Scheduler scheduler;
private JobDetail jobDetail;
private QuartzDao quartzDao;
private static final Logger logger = LoggerFactory.getLogger(SchedulerServiceImpl.class);
@Autowired
public void setJobDetail(@Qualifier("jobDetail") JobDetail jobDetail) {
this.jobDetail = jobDetail;
}
@Autowired
public void setScheduler(@Qualifier("quartzScheduler") Scheduler scheduler) {
this.scheduler = scheduler;
}
@Autowired
public void setQuartzDao(@Qualifier("quartzDao")QuartzDao quartzDao) {
this.quartzDao = quartzDao;
}
public void schedule(String cronExpression) {
schedule("", cronExpression);
}
public void schedule(String name, String cronExpression) {
schedule( name, cronExpression,Scheduler.DEFAULT_GROUP);
}
public void schedule(String name, String cronExpression,String group) {
try {
schedule(name, new CronExpression(cronExpression),group);
} catch (ParseException e) {
throw new RuntimeException(e);
}
}
public void schedule(CronExpression cronExpression) {
schedule(null, cronExpression);
}
public void schedule(String name, CronExpression cronExpression) {
schedule( name, cronExpression,Scheduler.DEFAULT_GROUP) ;
}
public void schedule(String name, CronExpression cronExpression,String group) {
if (name == null || name.trim().equals("")) {
name = UUID.randomUUID().toString();
}else{
//在名称后添加UUID,保证名称的唯一性
name +="&"+UUID.randomUUID().toString();
}
try {
scheduler.addJob(jobDetail, true);
CronTrigger cronTrigger = new CronTrigger(name, group, jobDetail.getName(),
Scheduler.DEFAULT_GROUP);
cronTrigger.setCronExpression(cronExpression);
scheduler.scheduleJob(cronTrigger);
scheduler.rescheduleJob(cronTrigger.getName(), cronTrigger.getGroup(), cronTrigger);
} catch (SchedulerException e) {
throw new RuntimeException(e);
}
}
public void schedule(Date startTime) {
schedule(startTime, Scheduler.DEFAULT_GROUP);
}
public void schedule(Date startTime,String group) {
schedule(startTime, null,group);
}
public void schedule(String name, Date startTime) {
schedule(name, startTime,Scheduler.DEFAULT_GROUP);
}
public void schedule(String name, Date startTime,String group) {
schedule(name, startTime, null,group);
}
public void schedule(Date startTime, Date endTime) {
schedule(startTime, endTime, Scheduler.DEFAULT_GROUP);
}
public void schedule(Date startTime, Date endTime,String group) {
schedule(startTime, endTime, 0,group);
}
public void schedule(String name, Date startTime, Date endTime) {
schedule(name, startTime, endTime,Scheduler.DEFAULT_GROUP);
}
public void schedule(String name, Date startTime, Date endTime,String group) {
schedule(name, startTime, endTime, 0,group);
}
public void schedule(Date startTime, Date endTime, int repeatCount) {
schedule( startTime, endTime, 0,Scheduler.DEFAULT_GROUP);
}
public void schedule(Date startTime, Date endTime, int repeatCount,String group) {
schedule(null, startTime, endTime, 0,group);
}
public void schedule(String name, Date startTime, Date endTime, int repeatCount) {
schedule(name, startTime, endTime, 0, Scheduler.DEFAULT_GROUP);
}
public void schedule(String name, Date startTime, Date endTime, int repeatCount,String group) {
schedule(name, startTime, endTime, 0, 1L,group);
}
public void schedule(Date startTime, Date endTime, int repeatCount, long repeatInterval) {
schedule(startTime, endTime, repeatCount, repeatInterval,Scheduler.DEFAULT_GROUP);
}
public void schedule(Date startTime, Date endTime, int repeatCount, long repeatInterval,String group) {
schedule(null, startTime, endTime, repeatCount, repeatInterval,group);
}
public void schedule(String name, Date startTime, Date endTime, int repeatCount, long repeatInterval) {
this.schedule( name , startTime, endTime, repeatCount, repeatInterval, Scheduler.DEFAULT_GROUP);
}
public void schedule(String name, Date startTime, Date endTime, int repeatCount, long repeatInterval,String group ) {
if (name == null || name.trim().equals("")) {
name = UUID.randomUUID().toString();
}else{
//在名称后添加UUID,保证名称的唯一性
name +="&"+UUID.randomUUID().toString();
}
try {
scheduler.addJob(jobDetail, true);
SimpleTrigger SimpleTrigger = new SimpleTrigger(name, group, jobDetail.getName(),
Scheduler.DEFAULT_GROUP, startTime, endTime, repeatCount, repeatInterval);
scheduler.scheduleJob(SimpleTrigger);
scheduler.rescheduleJob(SimpleTrigger.getName(), SimpleTrigger.getGroup(), SimpleTrigger);
} catch (SchedulerException e) {
throw new RuntimeException(e);
}
}
public void schedule(Map<String,String> map) {
String temp = null;
//实例化SimpleTrigger
SimpleTrigger SimpleTrigger = new SimpleTrigger();
//这些值的设置也可以从外面传入,这里采用默放值
SimpleTrigger.setJobName(jobDetail.getName());
SimpleTrigger.setJobGroup(Scheduler.DEFAULT_GROUP);
SimpleTrigger.setRepeatInterval(1000L);
//设置名称
temp = map.get(Constant.TRIGGERNAME);
if (StringUtils.isEmpty(StringUtils.trim(temp)) ){
temp = UUID.randomUUID().toString();
}else{
//在名称后添加UUID,保证名称的唯一性
temp +="&"+UUID.randomUUID().toString();
}
SimpleTrigger.setName(temp);
//设置Trigger分组
temp = map.get(Constant.TRIGGERGROUP);
if(StringUtils.isEmpty(temp)){
temp = Scheduler.DEFAULT_GROUP;
}
SimpleTrigger.setGroup(temp);
//设置开始时间
temp = map.get(Constant.STARTTIME);
if(StringUtils.isNotEmpty(temp)){
SimpleTrigger.setStartTime(this.parseDate(temp));
}
//设置结束时间
temp = map.get(Constant.ENDTIME);
if(StringUtils.isNotEmpty(temp)){
SimpleTrigger.setEndTime(this.parseDate(temp));
}
//设置执行次数
temp = map.get(Constant.REPEATCOUNT);
if(StringUtils.isNotEmpty(temp) && NumberUtils.toInt(temp) > 0){
SimpleTrigger.setRepeatCount(NumberUtils.toInt(temp));
}
//设置执行时间间隔
temp = map.get(Constant.REPEATINTERVEL);
if(StringUtils.isNotEmpty(temp) && NumberUtils.toLong(temp) > 0){
SimpleTrigger.setRepeatInterval(NumberUtils.toLong(temp)*1000);
}
try {
scheduler.addJob(jobDetail, true);
scheduler.scheduleJob(SimpleTrigger);
scheduler.rescheduleJob(SimpleTrigger.getName(), SimpleTrigger.getGroup(), SimpleTrigger);
} catch (SchedulerException e) {
throw new RuntimeException(e);
}
}
public List<Map<String, Object>> getQrtzTriggers(){
return quartzDao.getQrtzTriggers();
}
public void pauseTrigger(String triggerName,String group){
try {
scheduler.pauseTrigger(triggerName, group);//停止触发器
} catch (SchedulerException e) {
throw new RuntimeException(e);
}
}
public void resumeTrigger(String trigger
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
quartzMonitor.rar (72个子文件)
quartzMonitor
.project 1KB
.mymetadata 312B
src
quartz.properties 1KB
com
sundoctor
example
service
SimpleService.java 741B
MyQuartzJobBean.java 982B
Constant.java 676B
test
SimpleServiceTest.java 2KB
servlet
JobProcessServlet.java 7KB
quartz
service
SchedulerService.java 6KB
SchedulerServiceImpl.java 9KB
dao
QuartzDao.java 2KB
jdbc.properties 699B
log4j.properties 885B
spring
applicationContext-quartz.xml 1020B
applicationContext.xml 2KB
WebRoot
WEB-INF
classes
quartz.properties 1KB
com
sundoctor
example
service
MyQuartzJobBean.class 1KB
SimpleService.class 1KB
Constant.class 1KB
test
SimpleServiceTest.class 2KB
servlet
JobProcessServlet.class 6KB
quartz
service
SchedulerServiceImpl.class 9KB
SchedulerService.class 2KB
dao
QuartzDao.class 3KB
jdbc.properties 699B
log4j.properties 885B
spring
applicationContext-quartz.xml 1020B
applicationContext.xml 2KB
lib
junit-4.4.jar 158KB
slf4j-api-1.5.6.jar 22KB
spring.jar 2.81MB
quartz-all-1.6.5.jar 451KB
c3p0-0.9.0.4.jar 479KB
mysql-connector-java-5.1.3-rc-bin.jar 631KB
standard-1.1.2.jar 384KB
slf4j-log4j12-1.5.6.jar 9KB
commons-collections-3.1.jar 546KB
commons-lang-2.1.jar 203KB
log4j-1.2.15.jar 383KB
sqljdbc4.jar 571KB
commons-logging-1.0.4.jar 37KB
spring-test.jar 177KB
jstl-1.1.2.jar 20KB
web.xml 2KB
job.js 3KB
styles
default.css 1KB
admin.css 3KB
birt.css 194B
home.css 10KB
index.jsp 10KB
components
calendar
skins
aqua
dark-bg.gif 85B
menuarrow.gif 49B
active-bg.gif 89B
rowhover-bg.gif 110B
normal-bg.gif 110B
cal.gif 127B
hover-bg.gif 89B
today-bg.gif 1KB
Thumbs.db 9KB
theme.css 6KB
status-bg.gif 116B
title-bg.gif 116B
lang
calendar-en.js 4KB
calendar-zh_CN.js 4KB
calendar-setup.js 9KB
calendar.js 50KB
jquery
jquery.form.js 23KB
jquery-1.3.2.min.js 56KB
META-INF
MANIFEST.MF 39B
list.jsp 4KB
.myeclipse
.settings
org.eclipse.jdt.core.prefs 330B
.classpath 1KB
共 72 条
- 1
资源评论
- 胡小海丶2014-07-11有用不过没用spring管理啊
宇宙最强皮皮虾
- 粉丝: 50
- 资源: 31
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Qt开发知识、经验总结 包括Qss,数据库,Excel,Model/View等
- IV数据.xlsx
- 一些深度学习中的小例子,适合新手学习使用
- foldcraftlauncher_262944.apk
- 珍藏多年的基于matlab实现潮流计算程序源代码集合,包含多个潮流计算程序.rar
- 使用FPGA实现串-并型乘法器
- 基于matlab实现针对基于双曲线定位的DV-Hop算法中误差误差出一种基于加权双曲线定位的DV-Hop改进算法.rar
- 基于matlab实现由遗传算法开发的整数规划,车辆调度问题.rar
- 电视家7.0(对电视配置要求高).apk
- 免费计算机毕业设计-基于JavaEE的医院病历管理系统设计与实现(包含论文+源码)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功