本人想实现定时执行例如每天的7点定时执行,可是本人的代码却是到了点一直开始执行,每秒钟都在执行,本人想7点执行一次就可以,怎么改?
public void reScheduleJob() throws SchedulerException {
String nowDate=DateUtils.toString(new Date(),DateUtils.ORA_DATE_TIMES3_FORMAT);
// 运行时可通过动态注入的scheduler得到trigger,注意采用这种注入方式在有的项目中会有问题,假如遇到注入问题,可以采取在运行方法时候,获得bean来避免错误发生。
CronTriggerBean trigger = (CronTriggerBean) scheduler.getTrigger("cronTrigger", Scheduler.DEFAULT_GROUP);
String dbCronExpression = "0 0 7 * * ?";//
//每10s执行一次;
//String dbCronExpression = "0/59 * * * * ?";
String originConExpression = trigger.getCronExpression();
//if (!originConExpression.equalsIgnoreCase(dbCronExpression)) {
//获取待提醒的plantask任务
// 假如触发时间不相同
if(!originConExpression.equalsIgnoreCase(dbCronExpression)){
try {
//本人的方法
trigger.setCronExpression(dbCronExpression);
scheduler.rescheduleJob("cronTrigger", Scheduler.DEFAULT_GROUP,trigger);
} catch (Exception e) {
System.out.println("-- ParseException Error! --");
e.printStackTrace();
}
}
// }
// 执行task
System.out.println("Quartz 定时任务启动成功!"+nowDate);
}
spring配置文件
<bean id="quartzTask" class="com.platform.application.secureprocess.action.PlanTaskQuartz"> <property name="scheduler" ref="schedulerFactory" /> </bean> <bean id="jobtask" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="targetObject" ref="quartzTask" /> <property name="targetMethod" value="reScheduleJob" /> <property name="concurrent" value="false" /> </bean> <bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"> <property name="jobDetail" ref="jobtask" /> <!-- 默认的时间为 --> <property name="cronExpression"> <value>0 0/2 * * * ?</value> </property> </bean> <bean id="schedulerFactory" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref bean="cronTrigger" /> </list> </property> </bean>
解决方案:30分
<property name=”cronExpression”>
<value>0 0/2 * * * ?</value>
</property>
你这个设置的不是每两分钟执行一次么
<value>0 0/2 * * * ?</value>
</property>
你这个设置的不是每两分钟执行一次么
解决方案:30分
JobDetail job = JobBuilder.newJob(VoteJob.class).withIdentity("job"+i,"group"+i).build();
SimpleTrigger trigger = (SimpleTrigger) TriggerBuilder.newTrigger()
.startAt(runTime)
.withIdentity("trigger"+i,"group"+i)
.withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(120).withRepeatCount(pro.getCount()))
.build();
scheduler.scheduleJob(job, trigger);
withRepeatCount 设置为1