Quartz动态指定定时时间,老是会每秒钟执行一次

西门呀在吹雪 2015-06-17 07:18:57
我想实现定时执行比如每天的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>
...全文
1389 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
设置成 0 0 7 * * ? 要精确到秒就只会执行一次
black_monday 2015-12-04
  • 打赏
  • 举报
回复
LZ问题解决了吗?我也遇到同样的问题不知怎么解决
西门呀在吹雪 2015-06-18
  • 打赏
  • 举报
回复
引用 1 楼 shijing266 的回复:
<property name="cronExpression"> <value>0 0/2 * * * ?</value> </property> 你这个设置的不是每两分钟执行一次么
那是个默认设置,我在代码中设置的是7点整执行,程序老是到了时间就一直执行,我需要他到点执行一次就行了
  • 打赏
  • 举报
回复
<property name="cronExpression"> <value>0 0/2 * * * ?</value> </property> 你这个设置的不是每两分钟执行一次么
evangelionxb 2015-06-18
  • 打赏
  • 举报
回复


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

67,515

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧