我有一個Web應用程序,我試圖在春季編程啓動Quartz調度程序。我有一個服務類,我創建一個SchedulerFactory的實例,然後得到一個調度器。與彈簧石英集成
代碼如下。
@Service("auctionWinnerService")
public class NormalAuctionWinnerServiceImpl implements AuctionWinnerService {
public static final String NORMAL_AUCTION = "NORMAL AUCTION";
public static int NORMAL_AUCTION_COUNTER = 0;
private SchedulerFactory schedulerFactory;
private Scheduler scheduler;
public void declareWinner(int auctionId, Map<String, Object> parameterMap) {
System.out.println("INSIDE declareWinner of NormalAuctionWinner");
schedulerFactory = new StdSchedulerFactory();
try {
scheduler = schedulerFactory.getScheduler();
System.out.println("GOT SCHEDULER : "+scheduler);
} catch (SchedulerException e1) {
e1.printStackTrace();
}
JobDetail jd = new JobDetail();
jd.setName(NORMAL_AUCTION+" JOB "+NORMAL_AUCTION_COUNTER);
jd.setJobClass(NormalAuctionWinnerJob.class);
/** CREATE CRON TRIGGER INSTANCE **/
CronTrigger t = new CronTrigger();
t.setName(NORMAL_AUCTION + ++NORMAL_AUCTION_COUNTER);
t.setGroup("Normal Auction");
Date d = new Date();
Date d1 = new Date();
d1.setMinutes(d.getMinutes()+5);
t.setStartTime(d);
t.setEndTime(d1);
try {
t.setCronExpression("10 * * * * ? *");
scheduler.scheduleJob(jd, t);
} catch (SchedulerException e) {
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
}
}
}
schedulerFactory和scheduler被實例化,但我的作業不運行。 有人能指出我在這裏想念什麼嗎?
另外我只需要Factory和一個調度程序實例的一個實例。我試圖做出靜態,但它沒有奏效。任何在這個方向的指針都會有所幫助。
謝謝
你真的需要石英,或者只是一個cron能力調度? – skaffman 2011-01-25 17:30:50
我有拍賣的開始日期和結束日期。我的調度程序應該從開始日期開始,當拍賣到期時,觸發器應該會觸發。在我們的任務中,我們編寫了代碼來決定拍賣的勝利者。要求是,除非我創建拍賣,否則調度程序不應該啓動。只要我創建它並設置開始日期和結束日期,它應該從該特定日期開始。如果沒有創建拍賣,我們不希望調度程序運行。這可以實施嗎?還有一個規定是以編程方式啓動和停止它。 – cyclecount 2011-01-26 10:24:48