package com.telek.framework.quartz;
import org.quartz.CronTrigger;
import org.quartz.JobDataMap;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.Trigger;
import org.quartz.impl.StdScheduler;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
* Description:任务管理器封装类,对任务的统一管理功能,有增,删,查
* QuartzManager.java Create on 2012-11-23 上午9:19:15
* @author 张景
* @version 1.0
* Copyright (c) 2012 telek. All Rights Reserved.
*/
public class QuartzManager {
private static Scheduler scheduler;
static {
ApplicationContext context = new ClassPathXmlApplicationContext(
"applicationContext-quartz.xml");
scheduler = (StdScheduler) context.getBean("schedulerFactory");
}
/**
* Description:启动一个自定义的job
* Date:2012-11-23
* @author 张景
* @param @param schedulingJob
* @param @param paramsMap
* @param @param isStateFull
* @param @return
* @return boolean
*/
public static boolean enableCronSchedule(CustomJob schedulingJob,
JobDataMap paramsMap, boolean isStateFull) {
if (schedulingJob == null) {
return false;
}
try {
CronTrigger trigger = (CronTrigger) scheduler
.getTrigger(schedulingJob.getTriggerName(),
schedulingJob.getJobGroup());
if (null == trigger) {// 如果不存在该trigger则创建一个
JobDetail jobDetail = null;
if (isStateFull) {
jobDetail = new JobDetail(schedulingJob.getJobId(),
schedulingJob.getJobGroup(),
schedulingJob.getStateFulljobExecuteClass());
} else {
jobDetail = new JobDetail(schedulingJob.getJobId(),
schedulingJob.getJobGroup(),
schedulingJob.getJobExecuteClass());
}
jobDetail.setJobDataMap(paramsMap);
trigger = new CronTrigger(schedulingJob.getTriggerName(),
schedulingJob.getJobGroup(),
schedulingJob.getCronExpression());
scheduler.scheduleJob(jobDetail, trigger);
} else {// Trigger已存在,那么更新相应的定时设置
trigger.setCronExpression(schedulingJob.getCronExpression());
scheduler.rescheduleJob(trigger.getName(), trigger.getGroup(),
trigger);
}
} catch (Exception e) {
e.printStackTrace();
return false;
}
return true;
}
/**
* Description:禁用一个job
* Date:2012-11-23
* @author 张景
* @param @param jobId
* @param @param jobGroupId
* @param @return
* @return boolean
*/
public static boolean disableSchedule(String jobId, String jobGroupId) {
if (jobId.equals("") || jobGroupId.equals("")) {
return false;
}
try {
Trigger trigger = getJobTrigger(jobId, jobGroupId);
if (null != trigger) {
scheduler.deleteJob(jobId, jobGroupId);
}
} catch (SchedulerException e) {
e.printStackTrace();
return false;
}
return true;
}
/**
* Description:得到job的详细信息
* Date:2012-11-23
* @author 张景
* @param @param jobId
* @param @param jobGroupId
* @param @return
* @return JobDetail
*/
public static JobDetail getJobDetail(String jobId, String jobGroupId) {
if (jobId.equals("") || jobGroupId.equals("") || null == jobId
|| jobGroupId == null) {
return null;
}
try {
return scheduler.getJobDetail(jobId, jobGroupId);
} catch (SchedulerException e) {
e.printStackTrace();
return null;
}
}
/**
* Description:得到job对应的Trigger
* Date:2012-11-23
* @author 张景
* @param @param jobId
* @param @param jobGroupId
* @param @return
* @return Trigger
*/
public static Trigger getJobTrigger(String jobId, String jobGroupId) {
if (jobId.equals("") || jobGroupId.equals("") || null == jobId
|| jobGroupId == null) {
return null;
}
try {
return scheduler.getTrigger(jobId + "Trigger", jobGroupId);
} catch (SchedulerException e) {
e.printStackTrace();
return null;
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
quartz_Dynamic.rar (26个子文件)
quartz_Dynamic
.project 2KB
.mymetadata 315B
src
applicationContext-quartz.xml 285B
com
telek
test
StartQuartz.java 801B
quartz
HelloWorld.java 705B
framework
quartz
QuartzManager.java 4KB
CustomJob.java 3KB
WebRoot
WEB-INF
classes
applicationContext-quartz.xml 285B
com
telek
test
StartQuartz.class 1KB
quartz
HelloWorld.class 1KB
framework
quartz
CustomJob.class 3KB
QuartzManager.class 4KB
lib
spring.jar 2.71MB
quartz-1.6.6.jar 421KB
commons-logging-1.0.4.jar 37KB
web.xml 462B
index.jsp 834B
META-INF
MANIFEST.MF 36B
.myeclipse
.settings
org.eclipse.wst.jsdt.ui.superType.container 49B
org.eclipse.wst.common.project.facet.core.xml 252B
org.eclipse.jdt.core.prefs 395B
org.eclipse.wst.jsdt.ui.superType.name 6B
com.genuitec.eclipse.j2eedt.core.prefs 1KB
org.eclipse.wst.common.component 480B
.jsdtscope 500B
.classpath 529B
共 26 条
- 1
资源评论
- qiye20082013-02-20感谢。不过好像要调试一下才行,谢谢分享!
- 学bu会喵de猫2013-01-08需要自己弄一弄!谢谢
- bruclein19992013-06-14感谢,调试通过!学习了~
- _YiBo_2012-11-29感谢。不过好像要调试一下才行。有一定的参考价值吧。
「已注销」
- 粉丝: 27
- 资源: 13
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功