quartz实现定时的demo,可修改定时策略-少年壮志莫言愁-iteye技术网站
2011年06月01日
来源于网络 http://www.blogjava.net/xiaodaoxiaodao/articles/10 3437.html
给出完整的类和配置文件,除了一般是Spring 包外,另外需要下一个包spring-context-1.15.jar包,可在http://repo1.maven.org/maven2/ 找。
下面的内容拼到一个webProject里面,发布起来就可以看到效果。
1.Action
public class ScheduleInfoAction {
public void reScheduleJob() throws SchedulerException, ParseException {
// 运行时可通过动态注入的scheduler得到trigger
CronTriggerBean trigger = (CronTriggerBean) scheduler.getTrigger(
"cronTrigger", Scheduler.DEFAULT_GROUP);
String dbCronExpression = getCronExpressionFromDB();
String originConExpression = trigger.getCronExpression();
// 判断从DB中取得的任务时间(dbCronExpression)和现在的quartz线程中的任务时间(originConExpression)是否相等
// 如果相等,则表示用户并没有重新设定数据库中的任务时间,这种情况不需要重新rescheduleJob
if(!originConExpression.equalsIgnoreCase(dbCronExp ression)){
trigger.setCronExpression(dbCronExpression); //执行更新操作
scheduler.rescheduleJob("cronTrigger", Scheduler.DEFAULT_GROUP, trigger);
}
// 下面是具体的job内容,可自行设置
executeJobDetail();
}
private String getCronExpressionFromDB(){
String sql="from ScheduleInfo scheduleInfo where 1=1 ";
sql=sql+" and scheduleInfo.infoId = '"+"1" + "'";
List scheduleList = scheduleInfoManager.queryScheduleInListBySql(sql);
ScheduleInfo scheduleInfo = (ScheduleInfo)scheduleList.get(0);
String dbCronExpression = scheduleInfo.getCronExpression();
return dbCronExpression;
}
private void executeJobDetail(){
System.out.println("schedule action time:"+System.currentTimeMillis());
}
private Scheduler scheduler;
// 设值注入,通过setter方法传入被调用者的实例scheduler
public void setScheduler(Scheduler scheduler) {
this.scheduler = scheduler;
}
private ScheduleInfoManager scheduleInfoManager;
// 设值注入,通过setter方法传入被调用者的实例scheduleInfoManager
public void setScheduleInfoManager(ScheduleInfoManager scheduleInfoManager){
this.scheduleInfoManager = scheduleInfoManager;
}
}
2.Bean
public class ScheduleInfo {
String cronExpression="0/10 * * * * ?";
public void setCronExpression(String cronExpression) {
this.cronExpression = cronExpression;
}
public String getCronExpression(){
return this.cronExpression ;
}
}
3.Service
public class ScheduleInfoManager {
long i =System.currentTimeMillis();
int j=0;
List lis=new ArrayList();
ScheduleInfo s=new ScheduleInfo();
public List queryScheduleInListBySql(String sql){
if(System.currentTimeMillis()-i
0/10 * * * * ?
-->
2011年06月01日
来源于网络 http://www.blogjava.net/xiaodaoxiaodao/articles/10 3437.html
给出完整的类和配置文件,除了一般是Spring 包外,另外需要下一个包spring-context-1.15.jar包,可在http://repo1.maven.org/maven2/ 找。
下面的内容拼到一个webProject里面,发布起来就可以看到效果。
1.Action
public class ScheduleInfoAction {
public void reScheduleJob() throws SchedulerException, ParseException {
// 运行时可通过动态注入的scheduler得到trigger
CronTriggerBean trigger = (CronTriggerBean) scheduler.getTrigger(
"cronTrigger", Scheduler.DEFAULT_GROUP);
String dbCronExpression = getCronExpressionFromDB();
String originConExpression = trigger.getCronExpression();
// 判断从DB中取得的任务时间(dbCronExpression)和现在的quartz线程中的任务时间(originConExpression)是否相等
// 如果相等,则表示用户并没有重新设定数据库中的任务时间,这种情况不需要重新rescheduleJob
if(!originConExpression.equalsIgnoreCase(dbCronExp ression)){
trigger.setCronExpression(dbCronExpression); //执行更新操作
scheduler.rescheduleJob("cronTrigger", Scheduler.DEFAULT_GROUP, trigger);
}
// 下面是具体的job内容,可自行设置
executeJobDetail();
}
private String getCronExpressionFromDB(){
String sql="from ScheduleInfo scheduleInfo where 1=1 ";
sql=sql+" and scheduleInfo.infoId = '"+"1" + "'";
List scheduleList = scheduleInfoManager.queryScheduleInListBySql(sql);
ScheduleInfo scheduleInfo = (ScheduleInfo)scheduleList.get(0);
String dbCronExpression = scheduleInfo.getCronExpression();
return dbCronExpression;
}
private void executeJobDetail(){
System.out.println("schedule action time:"+System.currentTimeMillis());
}
private Scheduler scheduler;
// 设值注入,通过setter方法传入被调用者的实例scheduler
public void setScheduler(Scheduler scheduler) {
this.scheduler = scheduler;
}
private ScheduleInfoManager scheduleInfoManager;
// 设值注入,通过setter方法传入被调用者的实例scheduleInfoManager
public void setScheduleInfoManager(ScheduleInfoManager scheduleInfoManager){
this.scheduleInfoManager = scheduleInfoManager;
}
}
2.Bean
public class ScheduleInfo {
String cronExpression="0/10 * * * * ?";
public void setCronExpression(String cronExpression) {
this.cronExpression = cronExpression;
}
public String getCronExpression(){
return this.cronExpression ;
}
}
3.Service
public class ScheduleInfoManager {
long i =System.currentTimeMillis();
int j=0;
List lis=new ArrayList();
ScheduleInfo s=new ScheduleInfo();
public List queryScheduleInListBySql(String sql){
if(System.currentTimeMillis()-i
0/10 * * * * ?
-->