集成的Quartz在idea开发工具上不管配置几个JOB,就算配置在同一时间触发,也会正常的执行,而将项目部署到Tomcat,只执行2个或三个JOB且是不固定的,配置为相同
时间的JOB只执行一个,不知道是何原因,望精通Quartz定时器的前辈指点一二。非常感谢。。。
cylceTime = timeValue + "小时";
//每几小时执行一次(从当前小时开始往后推如当前时间为10:50,下一次执行时间为12:00以此类推)
scheduleJob.setCronExpression("0 " + defaultM + " " + defaultH + "/" + timeValue + " * * ?");
//scheduleJob.setCronExpression("0 4 16 1/1 * ?");
} else if (timeType.equals("2")) {
cylceTime = timeValue + "天";
//每几天执行一次
scheduleJob.setCronExpression("0 " + defaultM + " " + defaultH + " " + timeValue + "/" + timeValue + " * ?");
} else {
cylceTime = timeValue + "月";
//每几月执行一次0 0 0 1 * ?
scheduleJob.setCronExpression("0 " + defaultM + " " + defaultH + " 0 " + timeValue + "/" + timeValue + " ?");
}
scheduleJob.setSchemeNum(rbspDispatchInfo.getFollowedSchemeNum());
scheduleJob.setDispatchNum(rbspDispatchInfo.getDispatchNum());
// scheduleJob.setCronExpression("*/5 30 15 * * ?");
// scheduleJob.setCronExpression("*/5 * * * * ?");
scheduleJobService.add(scheduleJob);
/**
* 添加定时任务
* @param scheduleJob
*/
public void add(ScheduleJob scheduleJob){
@SuppressWarnings("rawtypes")
Class job = null;
try {
job = Class.forName(scheduleJob.getClassName());
} catch (ClassNotFoundException e1) {
log.error("任务类没找到");
e1.printStackTrace();
}
@SuppressWarnings("unchecked")
JobDetail jobDetail = JobBuilder.newJob(job).withIdentity(scheduleJob.getName(), scheduleJob.getGroup()).build();
jobDetail.getJobDataMap().put("scheduleJob", scheduleJob);
//表达式调度构建器(可判断创建SimpleScheduleBuilder)
CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(scheduleJob.getCronExpression());
//按新的cronExpression表达式构建一个新的trigger
CronTrigger trigger = TriggerBuilder.newTrigger().withIdentity(scheduleJob.getName(), scheduleJob.getGroup()).withSchedule(scheduleBuilder).build();
try {
scheduler.scheduleJob(jobDetail, trigger);
log.info("定时任务添加成功["+scheduleJob.getDispatchNum()+"]");
} catch (SchedulerException e) {
log.error("定时任务添加失败["+scheduleJob.getDispatchNum()+"]");
e.printStackTrace();
}
}