[SPRING] 쿼츠를 사용한 데이터 검색
SPRING쿼츠를 사용한 데이터 검색
Quartz를 사용하여 데이터베이스에서 데이터를 검색하는 데 도움이 필요합니다. 주 클래스의 config.xml에서 최대 절전 모드 속성을 읽고 NULL 포인터 예외가 발생하는 작업 클래스 (Quartz Process.java)에서 데이터를 검색하려고 시도한 속성을 사용하고 있습니다.
문제 해결을 도와주세요. 감사와 진보
이것이 나의 주요 수업이다.
@Component("TestProgram")
public class TestProgram
{
static ClassPathXmlApplicationContext applicationContext=null;
public void testMethod() throws SchedulerException
{
JobDetail job = new JobDetail();
job.setName("Retriving The Master Details");
job.setJobClass(QuartzProcess.class);
SimpleTrigger trigger = new SimpleTrigger();
trigger.setName("Trigger For Retriving The Master Details");
trigger.setStartTime(new Date(System.currentTimeMillis() + 1000));
trigger.setRepeatCount(SimpleTrigger.REPEAT_INDEFINITELY);
trigger.setRepeatInterval(5000);
Scheduler scheduler = new StdSchedulerFactory().getScheduler();
scheduler.start();
scheduler.scheduleJob(job, trigger);
}
public static void main(String[] args) throws Exception
{
String conf[] = {"Config.xml"};
applicationContext= new ClassPathXmlApplicationContext(conf);
TestProgram unittest=applicationContext.getBean(TestProgram.class);
unittest.testMethod();
}
}
석영 Process.java
@Component("QuartzProcess")
public class QuartzProcess implements Job
{
@Autowired
private MasterService MasterService;
@Override
public void execute(JobExecutionContext jec) throws JobExecutionException
{
try
{
List<MasterVO> MasterVO=MasterService.findAll();
System.out.println("MasterVO..."+MasterVO);
for(int index=0;index<MasterVO.size();index++)
System.out.println(MasterVO.get(index));
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
해결법
-
==============================
1.Quartz 작업이 Spring에 의해 인스턴스화되지 않고 SpringContext 외부에서 실행되므로 내부에서 참조하는 모든 bean이 null이 될 수 있으므로 널 포인터 예외가 발생한다. 이제 쿼츠 욥 내부의 봄 콩에 접근하는 몇 가지 방법이 있습니다.
Quartz 작업이 Spring에 의해 인스턴스화되지 않고 SpringContext 외부에서 실행되므로 내부에서 참조하는 모든 bean이 null이 될 수 있으므로 널 포인터 예외가 발생한다. 이제 쿼츠 욥 내부의 봄 콩에 접근하는 몇 가지 방법이 있습니다.
1) applicationContext에 아래 빈을 정의한다.
<bean id="scheduler"class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="configLocation"> <value>classpath:quartz.properties</value> </property> <property name="applicationContextSchedulerContextKey"> <value>applicationContext</value> </property>
테스트 클래스에서 위의 Bean 스케줄러를 얻으십시오. 테스트 클래스의 코드는 다음과 같습니다.
public void testMethod() throws SchedulerException { JobDetail job = new JobDetail(); job.setName("Retriving The Master Details"); job.setJobClass(QuartzProcess.class); SimpleTrigger trigger = new SimpleTrigger(); trigger.setName("Trigger For Retriving The Master Details"); trigger.setStartTime(new Date(System.currentTimeMillis() + 1000)); trigger.setRepeatCount(SimpleTrigger.REPEAT_INDEFINITELY); trigger.setRepeatInterval(5000); scheduler.scheduleJob(job, trigger); }
스케쥴러 빈은 평범한 방식으로 메인 클래스에 있어야한다. 스케쥴러가 spring containter에 의해 시작되므로 scheduler.start를 수행 할 필요가 없습니다.
QuartzProcess 클래스에서 아래 메소드를 추가하여 applicationContext를 얻어야한다.
public ApplicationContext getApplicationContext(JobExecutionContext context) throws Exception { ApplicationContext applicationContext = null; applicationContext = (ApplicationContext) context.getScheduler().getContext().get(APPLICATION_CONTEXT_KEY); if (applicationContext == null) { throw new JobExecutionException("No application context available in scheduler context for key \"" + APPLICATION_CONTEXT_KEY + "\""); } return applicationContext; }
그런 다음 quartzprocess의 xecute 메소드에서 필요한 bean을 얻으려면 코드 아래에서 수행해야합니다.
ApplicationContext ctx = getApplicationContext(context); QuartzProcess quartzProcess = (QuartzProcess)ctx.getBean("quartzProcess");
-
==============================
2.Spring Task를 사용하는 방법에 대해 데이터베이스를 업데이트하는 예약 된 작업을 생성하려는 경우.
Spring Task를 사용하는 방법에 대해 데이터베이스를 업데이트하는 예약 된 작업을 생성하려는 경우.
다음은 그 예입니다. 스프링 작업을 사용하여 예약 된 작업을 중지하는 방법
그런 다음 데이터베이스 업데이트를 수행하는 메서드를 호출하면됩니다.
from https://stackoverflow.com/questions/12707383/data-retrieval-using-quartz by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring 통합 ftp 인바운드 어댑터를 사용하여 처리 된 파일을 다른 디렉토리로 이동 (0) | 2019.05.21 |
---|---|
[SPRING] Entity 객체를 JSON으로 변환 (0) | 2019.05.21 |
[SPRING] javascript에서 색인을 사용하여 스프링 모델 속성 목록 요소 가져 오기 (0) | 2019.05.21 |
[SPRING] 어떻게 주석 @ 자바 스프링에서 작동합니까? [복제] (0) | 2019.05.21 |
[SPRING] 스프링 보안 로그 아웃 세션이 무효화되지 않았습니다. (0) | 2019.05.21 |