스프링 쿼츠 스케줄러를 사용하고 있지만 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를 사용하여 트리거를 구성합니다.
그러나 프로그래밍 방식으로 동일한 속성을 설정할 수 없습니다. Trigger 배열을 허용하는 SchedulerFactoryBean의 setTriggers 메서드가 있지만이를 만드는 방법이 문제입니다.
저는 지난 4 시간 동안 성공을 거두지 못했습니다.
누군가 나를 도와 줄 수 있습니까?
감사
다른 질문과 비슷합니다. http://stackoverflow.com/questions/4794560/quartz-integration-with-spring/ – Ralph
글쎄요, 작은 차이가 있습니다. 이 함수는 Quartz에 대한 스프링 지원을 사용하고 다른 함수는 지원하지 않는다. 나는 당신의 제안을 썼다. 다른 퀘스트들에 대해 얄프는 해봤지만 로그 파일에는 오류가 없었다. 그래서 저는 Spring의 지원을 사용하기로 전환했습니다. 그러나 이제는이 지원을 보류하고 있습니다. 글쎄 내 접근 방식이 위의 코드에 맞는지 말해 줄 수 있니? 트리거 속성을 설정하는 방법을 알려주는 것이 좋습니다. – cyclecount