我正在使用Spring石英调度程序,但我没有使用XML文件。我想以编程方式创建整个配置。如何以编程方式创建触发器对象?
我写了下面的代码。
package com.eaportal.service.impl;
import java.text.ParseException;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import org.quartz.JobDetail;
import org.springframework.scheduling.SchedulingException;
import org.springframework.scheduling.quartz.CronTriggerBean;
import org.springframework.scheduling.quartz.JobDetailBean;
import org.springframework.scheduling.quartz.SchedulerFactoryBean;
import com.eaportal.service.intfc.AuctionWinnerService;
public class NormalAuctionWinnerServiceImpl1 implements AuctionWinnerService {
@SuppressWarnings("deprecation")
public void declareWinner(int auctionId, Map<String, Object> parameterMap) {
System.out.println("INSIDE DECLARE WINNER METHOD.");
/** STEP 1 : INSTANTIATE TASK CLASS **/
NormalAuctionWinnerTask1 runMeTask = new NormalAuctionWinnerTask1();
System.out.println("FINISHED STEP 1");
/** STEP 2 : INSTANTIATE JOB DETAIL CLASS AND SET ITS PROPERTIES **/
Map<String,Object> jobDataAsMap = new HashMap<String,Object>();
jobDataAsMap.put("runMeTask",runMeTask);
JobDetailBean jdb = new JobDetailBean();
jdb.setJobClass(NormalAuctionWinnerTask1.class);
jdb.setJobDataAsMap(jobDataAsMap);
System.out.println("FINISHED STEP 2");
/** STEP 3 : INSTANTIATE CRON TRIGGER AND SET ITS PROPERTIES **/
CronTriggerBean ctb = new CronTriggerBean();
Date d1 = new Date();
Date d2 = new Date();
d2.setMinutes(d1.getMinutes()+10);
ctb.setStartTime(d1);
ctb.setEndTime(d2);
ctb.setJobDetail(jdb);
try {
ctb.setCronExpression("59 * * * * ? *");
} catch (ParseException e) {
e.printStackTrace();
}
/** STEP 4 : INSTANTIATE SCHEDULER FACTORY BEAN AND SET ITS PROPERTIES **/
SchedulerFactoryBean sfb = new SchedulerFactoryBean();
sfb.setJobDetails(new JobDetail[]{jdb});
try {
sfb.start();
} catch (SchedulingException e) {
e.printStackTrace();
}
}
}
代码正在工作,除了触发器没有触发因为我没有设置它。
这里的问题是在XML配置中我们有schedulerFactoryBean的'triggers'属性,我们用list来配置我们的触发器。
但我不能以编程方式设置相同的属性。 SchedulerFactoryBean中有一个setTriggers方法,它接受一个Trigger 的数组,但是如何创建它就是问题所在。
我对它的最后4小时仍然没有成功的迹象。
有人可以帮我吗?
感谢
这看起来有点像你的其他问题:http://stackoverflow.com/questions/4794560/quartz-integration-with-spring/ – Ralph 2011-01-27 15:08:11