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

J2EE 码拜 9年前 (2015-11-25) 4251次浏览
本人想实现定时执行例如每天的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>
你这个设置的不是每两分钟执行一次么
解决方案: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


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明Quartz动态指定定时时间,每秒钟执行一次
喜欢 (0)
[1034331897@qq.com]
分享 (0)