2011. 10. 31. 18:12
반응형


quartz로 한참 삽질했다..
검색해보니 struts 이용, spring 이용해서 연결하는 방법밖에 없었다.
step by step으로 나온곳들도 한두개씩 빠져있었다.
우선.. 2.x 버젼과.. 1.x 버젼은 메소드 자체가 틀리다.
아래는 1.8 버젼을 기준으로 작성함.
라이브러리는 quartz-1.8.5.jar 파일과
이것이 돌기 위해 필요한 log4j-1.2.14.jar, slf4j-api-1.6.0.jar, slf4j-log4j12-1.6.0.jar 파일을 classpath에 추가해 준다.
다운로드 : http://www.quartz-scheduler.org/downloads

1. web.xml 세팅
  - 기본으로 start와 shutdown 시에 quartz동작에 대해 servlet으로 띄워준다. (quartz setting 부분)
  - 그다음 servlet으로 동작시킬 스케줄러를 띄운다. (quartz run 부분)
<!-- quartz setting -->
 <servlet>
  <servlet-name>QuartzInitializer</servlet-name>
  <servlet-class>org.quartz.ee.servlet.QuartzInitializerServlet</servlet-class>
  <init-param>
        <param-name>config-file</param-name>
        <param-value>/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>
 
   <!-- quartz run -->
    <servlet>
     <servlet-name>TestScheduler</servlet-name>
     <servlet-class>quartz.TestScheduler</servlet-class>
     <load-on-startup>2</load-on-startup>
 </servlet>

2. 위에서 잡아준 quartz.properties 내용
   - SimpleThreadPool 이걸 빼먹었더니.. 오류가 떴었다. ThreadPool 어쩌고.. quartz 사이트엔 안나와 있었는데..;;
org.quartz.scheduler.instanceName = TestScheduler
org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore
org.quartz.threadPool.threadCount = 1
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool

3. 위에서 잡아준 quartz.TestScheduler 구현내용
public class TestScheduler extends HttpServlet {
 private static final long serialVersionUID = -4013616887475315494L;
 private SchedulerFactory schedulerFactory;
 private Scheduler scheduler;

 public TestScheduler () {
  try {
   schedulerFactory  = new StdSchedulerFactory();
   scheduler    = schedulerFactory.getScheduler();
  } catch(Exception e) {
   e.printStackTrace();
  }
 }
 
 public void init() {
  try {
   JobDetail job1    = new JobDetail("job1", Scheduler.DEFAULT_GROUP, Job1.class);
   CronTrigger trigger1  = new CronTrigger("job1", Scheduler.DEFAULT_GROUP, "* * * * * ?");
   scheduler.scheduleJob(job1, trigger1);
   scheduler.start();
  } catch (Exception e) {
   e.printStackTrace();
  }
 }
}


4. 실제 동작할 Job class
public class Job1 implements Job {
 public void execute(JobExecutionContext context) throws JobExecutionException {
  System.out.println("test print");
 }
}

주의 - package 는 맞춰서 잡아주고..  import도 알아서..

반응형

'Jsp-Servlet > Jsp' 카테고리의 다른 글

404, 500 error등의 처리  (1) 2011.12.09
Excel Download 공통단  (1) 2011.11.17
jstl el 특이한 명령어들..  (4) 2011.01.09
custom tag lib 대략 정리  (1) 2010.08.05
jstl, el, fn 정리  (2) 2010.05.27
Posted by seongsland