728x90
반응형
Quartz 스케줄러 사용하기
2009/08/04 20:08 from 분류없음주기적으로 디비에 어떤 데이터를 쌓거나 시간대별로 특정한 작업을하려면 데몬을 돌려야 하는데
간단하게 사용할수 있는 데몬입니다.
0. 쿼츠 다운로드 : http://www.opensymphony.com/quartz/download.action
다운로드 받고 안에있는 quartz-1.6.5.jar을 라이브러리에 추가
1. 서버 구동시 자동으로 쿼츠가 실행되도록 WEB-INF/web.xml 에 추가 (quartz.properties, SchedulerInit.java 경로확인!!)
2.quartz.properties
3. 이니셜라이저 부분 ( SchedulerInit.java )
4. 사용자 로직부분
Job이 DB에서 읽어온값을 Bean에있는 Static Hashtable에 주기적으로 업데이트 시킬 필요가 있었는데
Static 객체에 바로 접근이 가능한걸보니 WAS프로세스 안에서 돌아가는 것으로 보인다.
작업주기 설정하는건 아래링크에보시면 있음~
http://blog.naver.com/kjh28480?Redirect=Log&logNo=70048565972
간단하게 사용할수 있는 데몬입니다.
Quartz Scheduler | http://www.quartz-scheduler.org/ |
0. 쿼츠 다운로드 : http://www.opensymphony.com/quartz/download.action
다운로드 받고 안에있는 quartz-1.6.5.jar을 라이브러리에 추가
1. 서버 구동시 자동으로 쿼츠가 실행되도록 WEB-INF/web.xml 에 추가 (quartz.properties, SchedulerInit.java 경로확인!!)
- <!-- Quartz 로딩부분 -->
- <servlet>
- <display-name>Quartz Initializer Servlet</display-name>
- <servlet-name>QuartzInitializer</servlet-name>
- <servlet-class>org.quartz.ee.servlet.QuartzInitializerServlet</servlet-class>
- <init-param>
- <param-name>config-file</param-name>
- <param-value>com/ineast/scheduler/quartz.properties</param-value>
- </init-param>
- <init-param>
- <param-name>shutdown-on-unload</param-name>
- <param-value>true</param-value>
- </init-param>
- <init-param>
- <param-name>start-scheduler-on-load</param-name>
- <param-value>true</param-value>
- </init-param>
- <load-on-startup>1</load-on-startup>
- </servlet>
- <servlet>
- <display-name>SchedulerInit</display-name>
- <servlet-name>SchedulerInit</servlet-name>
- <servlet-class>com.ineast.scheduler.SchedulerInit</servlet-class>
- <load-on-startup>2</load-on-startup>
- </servlet>
- <servlet-mapping>
- <servlet-name>SchedulerInit</servlet-name>
- <url-pattern>/SchedulerInit</url-pattern>
- </servlet-mapping>
2.quartz.properties
- org.quartz.scheduler.instanceName = SchedulerInit
- org.quartz.scheduler.instanceId = AUTO
- org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
- org.quartz.threadPool.threadCount = 12
- org.quartz.threadPool.threadPriority = 5
- org.quartz.jobStore.misfireThreshold = 60000
- org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore
3. 이니셜라이저 부분 ( SchedulerInit.java )
- package com.ineast.scheduler;
- import java.text.ParseException;
- import org.quartz.CronTrigger;
- import org.quartz.JobDetail;
- import org.quartz.Scheduler;
- import org.quartz.SchedulerException;
- import org.quartz.SchedulerFactory;
- import org.quartz.impl.StdSchedulerFactory;
- public class SchedulerInit {
- private SchedulerFactory schedFact;
- private Scheduler sched;
- public SchedulerInit() {
- try {
- schedFact = new StdSchedulerFactory();
- sched = schedFact.getScheduler();
- sched.start();
- //"job이름, 그룹명, 동작시킬Class"
- JobDetail job1 = new JobDetail("Job_MyAlarmData1", "group1", Job_MyAlarmData.class);
- // 매분 0초에 동작(30초마다 동작시키려면 job을 하나더 만들고 아래에 0대신 30을 넣으면 ok
- CronTrigger trigger1 = new CronTrigger("Trigger_MyAlarmData1", "group1", "0 * * * * ?");
- sched.scheduleJob(job1, trigger1);
- } catch (SchedulerException e) {
- e.printStackTrace();
- } catch (ParseException e) {
- e.printStackTrace();
- }
- }
- public static void main(String[] args) {
- new SchedulerInit();
- }
- }
4. 사용자 로직부분
- package com.ineast.scheduler;
- import java.util.Hashtable;
- import java.util.Vector;
- import com.ineast.common.DbParent;
- import com.ineast.common.UtilBean;
- import personal.MyAlarmBean;
- import java.util.Date;
- import org.quartz.Job;
- import org.quartz.JobExecutionContext;
- import org.quartz.JobExecutionException;
- public class Job_MyAlarmData extends DbParent implements Job { //DbParent상속받은 상태
- public void execute(JobExecutionContext context) throws JobExecutionException {
- getMyAlarmData(); //이부분에 로직을 작성
- }
- public void getMyAlarmData() {
- System.out.println("우왕ㅋ굳ㅋ");
- }
- }
Job이 DB에서 읽어온값을 Bean에있는 Static Hashtable에 주기적으로 업데이트 시킬 필요가 있었는데
Static 객체에 바로 접근이 가능한걸보니 WAS프로세스 안에서 돌아가는 것으로 보인다.
작업주기 설정하는건 아래링크에보시면 있음~
http://blog.naver.com/kjh28480?Redirect=Log&logNo=70048565972
728x90
반응형
'SPRING' 카테고리의 다른 글
Spring - Validation (0) | 2014.03.25 |
---|---|
Spring scheduler (quartz)사용 (0) | 2014.02.20 |
[Java] 자바 타이머(timer), 스케줄링(scheduling) 사용하기 (0) | 2014.02.19 |
[Java] Quartz (쿼츠)를 사용하여 자바 스케줄링(scheduling) 하기 (0) | 2014.02.19 |
What Is Quartz (0) | 2014.02.19 |
Quartz 에 관련된 글 (0) | 2014.02.19 |
Quartz - Quartz 1 - CronTriggers Tutorial (0) | 2014.02.19 |
Spring viewResolver 설명 ( jsp,html 페이지 직접 리턴하기) (0) | 2013.11.26 |