首页 > 代码库 > quartz任务调度配置 解决jobDetail身份标识存在问题
quartz任务调度配置 解决jobDetail身份标识存在问题
applicationContext.xml配置:每五秒轮询一次。注意:周和日期不能同时为通配符”*“
1 <bean id="planInfoServiceImpl" class="com.xxx.xxx"></bean>2 <bean id="jobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">3 <property name="targetObject" ref="planInfoServiceImpl"></property>4 <property name="targetMethod" value="http://www.mamicode.com/backup"></property> 5 </bean>6 <bean id="trigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">7 <property name="jobDetail" ref="jobDetail"></property>8 <property name="cronExpression" value="http://www.mamicode.com/*/5 * * * * ? *"></property>9 </bean>
业务逻辑从spring容器中拿到任务和触发器:
1 @Autowired2 private JobDetail jobDetail;3 @Autowired4 private CronTrigger trigger;
业务逻辑创建管理:使用此方法不会采用shutdown销毁Scheduler,因为销毁Scheduler后再次加载jobDetail时会报身份标识存在的异常,索性任务调度使用完毕后使用pauseAll()暂停任务调度,需要时恢复调度,按需修改触发周期。
1 SchedulerFactory ss = new StdSchedulerFactory(); 2 try { 3 if(sched==null){//第一次使用加载任务和触发器 4 sched = ss.getScheduler(); 5 sched.scheduleJob(jobDetail, trigger); 6 }else{//非第一次触发,恢复任务调度 7 try { 8 trigger.setCronExpression("*/5 * * * * ? *"); 9 } catch (ParseException e) {10 e.printStackTrace();11 }12 sched.resumeAll();13 } 14 if(!sched.isShutdown()){15 16 sched.start();17 }18 } catch (SchedulerException e) {19 e.printStackTrace();20 }
quartz任务调度配置 解决jobDetail身份标识存在问题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。