Я использую Spring Quartz Scheduler, но я не использую 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();
}
}
}
Код работает, кроме триггера, не срабатывает coz Я не задал его.
Здесь проблема в конфигурации XML. У нас есть свойство триггеров schedulerFactoryBean, и мы используем список для настройки наших триггеров.
Но я не в состоянии установить одно и то же свойство программно. Существует метод setTriggers в SchedulerFactoryBean, который принимает массив Trigger , но как его создать, это проблема.
Я нахожусь на нем последние 4 часа, пока нет признаков успеха.
Может кто-нибудь помочь мне здесь?
Благодаря
Это похоже на ВАШ другой вопрос: http://stackoverflow.com/questions/4794560/quartz-integration-with-spring/ – Ralph
Ну, есть небольшая разница. Это использует поддержку весны для кварца, а другая - нет. Я попробовал ваше предложение Ralph yest для других вопросов, но в файле журнала не было ошибок. Поэтому я переключился на поддержку Spring, но теперь я задерживаюсь с этим. Ну вы можете сказать мне, подходит ли мой подход к вышеуказанному коду? Если вы можете сказать мне, как установить свойство триггеров, это будет здорово. – cyclecount