Quartz1.6有状态JOB碰到的棘手问题既解决方案2
来源:互联网 发布:淘宝直播开通条件 编辑:程序博客网 时间:2024/05/03 17:19
a). 实现方式
2.0之前的版本是直接实现StatefulJob接口.
2.0版本:使用注解方式
@PersistJobDataAfterExecution
@DisallowConcurrentExecution
public class StatefulJobAction implements Job{ }
b). 对象操作
JobDetail jobDetail = null;
JobDataMap dataMap = null;
CronTrigger cronTrigger = null;
String calendarName = triggerName;
DailyCalendar dailCalendar = new DailyCalendar(startTime,endTime);
dailyCalendar.setInvertTimeRange(true);
scheduler.addCalendar(calendarName,dailyCalendar,null,null);
/** quartz1.6 */
/**
jobDetail = new JobDetail(jobName,jobGroup,StatefulJobAction.class);
dataMap = new JobDataMap();
dataMap.put("Scher",scher);
jobDetail.setJobDataMap(dataMap);
cronTrigger = new CronTrigger(triggerName,triggerGroup); cronTrigger.setStartTime(startTime);
cronTrigger.setEndTime(endTime);
cronTrigger.setCalendarName(calendarName);
*/
/** quartz2.0 */
jobDetail = newJob(StatefulJobAction.class).withIdentity(jobName,jobGroup).build();
dataMap = jobDetail.getJobDataMap();
dataMap.put("Scher",scher);
//一次性构建触发器
/**
cronTrigger = newTrigger().withIdentity(triggerName,triggerGroup).withSchedule(cronSchedule(cronExpress)).startAt(startTime).endAt(endTime).modifiedByCalendar(triggerName).build;
*/
//分开构建触发器
TriggerBuilder<Trigger> triggerBuilder = newTrigger(); triggerBuilder.withIdentity(triggerName,triggerGroup);
if(StringUtils.isBlank(startTime)){
triggerBuilder.startAt(new Date());
} else{
triggerBuilder.startAt(startTime);
}
triggerBuilder.endAt(endTime);
cronTrigger = triggerBuilder.withSchedule(cronSchedule(cronExpress)).modifiedByCalendar(triggerName).build();
//简单触发器 //
SimpleTrigger simpleTrigger = newTrigger().withSchedule(simpleSchedule()).withIntervalInSeconds(10).withRepeatCount(5).build();
另外有一点需要注意,可以看到quartz2.0版本有很多这种写法:newTrigger(),simpleScheduler().其实是采用了JDK1.5后提供的静态导入.
import static org.quartz.CronScheduleBuilder.cronSchedule;
import static org.quartz.JobBuilder.newJob;
import static org.quartz.SimpleScheduleBuilder.simpleSchedule; import static org.quartz.TriggerBuilder.newTrigger;
import static静态导入是JDK1.5中的新特性。静态导入是导入这个类里的静态方法。然后就可以直接用方法名调用静态方法,而不必用ClassName.方法名 的方式来调用。
这种方法的好处就是可以简化一些操作,例如打印操作System.out.println(...);就可以将其写入一个静态方法print(...),在使用时直接print(...)就可以了。
本篇文章来源于 Linux公社网站(www.linuxidc.com) 原文链接:http://www.linuxidc.com/Linux/2014-09/107005p2.htm
- Quartz1.6有状态JOB碰到的棘手问题既解决方案2
- Quartz1.6有状态JOB碰到的棘手问题既解决方案
- FLEX:开发中碰到的棘手问题以及解决方案(包括悬而未决的)
- 2005-3-1 总是碰到棘手的问题
- 棘手的问题
- 今天的棘手问题
- 第一次碰到这样棘手的问题 像各位大虾求救,送分100点
- cron job执行中碰到的一个问题
- jmeter碰到的问题及解决方案
- Hot potato 棘手的问题
- 问一个棘手的问题!!
- 前端一些棘手的问题
- 开发时碰到了一个棘手的飞鸽传书
- Quartz——有状态的job和无状态的job
- Quartz——有状态的job和无状态的job
- 搜索3天没有发现好的解决方案,一个非常棘手的问题
- oracle当碰到已丢弃程序包的问题时 如:ora-04068 已丢弃程序包 的状态 此类问题 有如下解决方案
- jcifs实现Java+AD的SSO解决方案,碰到的问题
- 基础练习 十六进制转十进制
- web开发中的各种浏览器的兼容问题
- 树结构练习——排序二叉树的中序遍历
- Quartz1.6有状态JOB碰到的棘手问题既解决方案
- leetcode Reverse Integer
- Quartz1.6有状态JOB碰到的棘手问题既解决方案2
- JAVA学习笔记19——String2_StringBuilder
- 接口设计原则-杰
- springmvc
- Asus ZenBook NX500 review
- ZOJ Problem Set - 2201 No Brainer
- Java实现Highcharts本地导出图片教程
- Splay+BZOJ1861
- 创建二叉树的两种方法以及三种遍历方法