如今有这样一个需求:我们不知道管理员想设定过多厂时间运行主任务,须要在配置文件定义。在配置好后须要马上运行。实现热部署。
private static long curModifiedTime; static { try { curModifiedTime = new File(filePath).lastModified(); System.out.println("当前文件改动时间为 " +curModifiedTime); } catch (Exception e) { e.printStackTrace(); } }
public static boolean isModifiedValue() { boolean flag = false; long lastModifiedTime = new File(filePath).lastModified(); if(lastModifiedTime > curModifiedTime) { curModifiedTime= lastModifiedTime; flag = true; } return flag; }
public boolean reSetTaskSchedulerzIntervalTime(){ boolean flag = false; //监听到配置文件改动 if(PropertiesUtil.isModifiedValue()) { long time = 0L; try { time = Integer.parseInt(PropertiesUtil.readValue(TaskSchedulerzIntervalTime)); simpleTrigger.setRepeatInterval(time); Scheduler scheduler = quartzScheduler.getScheduler(); String jobName = simpleTrigger.getName(); String group = simpleTrigger.getGroup(); try { scheduler.pauseJob(jobName, group); scheduler.unscheduleJob(jobName,group); scheduler.scheduleJob(simpleTrigger); scheduler.resumeJob(jobName, group); flag = true; } catch (SchedulerException e1) { e1.printStackTrace(); } } catch (NumberFormatException e) { System.out.println("定时任务非数字!"); e.printStackTrace(); } } return flag; }
<bean name="quartzScheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref bean="simpleTrigger" /> </list> </property> <property name="configLocation" value="classpath:quartz.properties" /> </bean> <bean id="simpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean"> <property name="jobDetail"> <ref bean="jobDetail" /> </property> <property name="startDelay"> <value>0</value> </property> <property name="repeatInterval" value="${taskSchedulerzIntervalTime}" /> </bean> <bean id="jobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="targetObject" ref="taskScheduler" /> <property name="targetMethod" value="run" /> </bean>
<context:property-placeholder location="classpath:config.properties,classpath:jdbc.properties" />
原文:http://www.cnblogs.com/gcczhongduan/p/5046414.html