스케줄러 사용법
전자정부프레임워크 스케쥴러 사용법
http://www.egovframe.org/wiki/doku.php?id=egovframework:rte:fdl:scheduling
Scheduling 서비스
quartz를 이용한 방법
간단한 방법 !!!!
1. 라이브러리 복사
전자정부프레임워크를 사용하면 이미 라이브러리가 들어 있을 것 같다.
quartz-2.1.7.jar
quartz-jobs-2.2.1.jar
의 라이브러리가 필요하다.(버전이야 꼭 이 버전일필요는 없을 것 같고, 전자정부프레임워크에 이미 들어있는 버전이 이 버전이었다)
* 라이브러리가 없는 경우
1) 메이븐을 사용하는 경우라면 pom.xml 에 다음과 같이 추가해준다.
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.1.7</version>
<exclusions>
<exclusion>
<artifactId>slf4j-api</artifactId>
<groupId>org.slf4j</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz-jobs</artifactId>
<version>2.2.1</version>
</dependency>
2) 메이븐을 사용하지 않는 경우
quartz-2.1.7.jar
quartz-jobs-2.2.1.jar
을 구해서 WEB-INF/lib 에 넣어준다.
2. context-scheduling.xml 파일을 생성한다.
resources/egovframework/spring/com/ 아래 생성한다.
파일명은 큰 의미는 없다.
**파일명 생성시 주의
web.xml 을 확인해보면 아래와 같은 구문이 있다.
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:egovframework/spring/com/**/context-*.xml</param-value>
</context-param>
이 구분에 맞는 조건의 xml 파일을 임의로 생성한다.
* targetObject 는 편의상 service 명으로 했다.
* 작업, 트리거, 스케쥴러 3개를 하나의 세트라고 생각하면 되겠다.
내용은 아래와 같다
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd">
<!-- aaaa 작업 정의 -->
<bean id="aaaaEvents" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="AaaaEventsService" /> <!-- service 명 -->
<property name="targetMethod" value="aaaaInsert" /> <!-- service 내의 method 명 -->
<property name="concurrent" value="false" />
</bean>
<!-- aaaa 트리거 정의 -->
<bean id="aaaaEventstrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="aaaaEvents" />
<property name="cronExpression" value="0 00 6 ? * *" /> <!-- 매일 아침 6시에 살행 -->
</bean>
<!-- bbbb 작업 정의 -->
<bean id="bbbbBlog" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="BbbbBlogService" />
<property name="targetMethod" value="insertBbbbBlog" />
<property name="concurrent" value="false" />
</bean>
<!-- bbbb 트리거 정의 -->
<bean id="bbbbBlogTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="bbbbBlog" />
<property name="cronExpression" value="0 00 7 ? * *" />
</bean>
<!-- 공지사항 작업 정의 -->
<bean id="notice" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="NoticeService" />
<property name="targetMethod" value="insertNotice" />
<property name="concurrent" value="false" />
</bean>
<!-- 공지사항 트리거 정의 -->
<bean id="noticeTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="notice" />
<property name="cronExpression" value="0 30 * * * ?" />
</bean>
<!-- 스케줄러 정의 -->
<bean id="ddddScheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="aaaaEventstrigger" />
<ref bean="bbbbBlogTrigger" />
<ref bean="noticeTrigger" />
</list>
</property>
</bean>
</beans>