IT정리노트

블로그 이미지

Edward. K

메멘토적 기억능력을 소유한 개발자 노트.

cron-expressionv Use

Programming/JAVA 2008. 4. 15. 17:31
반응형
ttp://www.opensymphony.com/quartz/


Quartz는 Job, Trigger라는 두 개의 기본 추상 계층을 정의한다.

- Job은 실제 실행되는 작업의 추상 계층이고,

- Trigger는 언제 작업이 실행되어야 하는지를 나타내는 추상 계층이다.



Job은 인터페이스이다. 그러므로 해야할 일은 클래스가 org.quartz.Job 인터페이스를 구현하도록 하고

execute() 메소드를 오버라이드하는 것 뿐이다



Trigger에는 SimpleTrigger 와 CronTrigger의 두 가지의 기본적인 Trigger가 있다:

- SimpleTrigger는 기본적으로 Timer API가 제공하는 것과 같은 기능을 제공한다.

  작업이 시작된 이후에 정해진 간격으로 반복해서 실행되는 경우, SimpleTrigger를 써야 한다.

  SimpleTrigger는 시작일, 종료일, 반복횟수, 실행 주기를 정의할 수 있다.

- 여기서는 더욱 사실적인 바탕에서 작업을 스케쥴링할 수 있는 유연성때문에 CronTrigger를 사용한다.

  CronTrigger를 사용함으로써 "매주 평일 오후 7시" 또는 "토요일과 일요일 매 5분마다"와 같은 스케쥴링 작업을 할 수 있다.




cron expression ( 표현 순서대로 의미)

Field Name             Allowed Values             Allowed Special Characters


Seconds                 0-59                               , - * /


Minutes                  0-59                               , - * /


Hours                     0-23                                , - * /


Day-of-month         1-31                                , - * ? / L W C


Month                    1-12 or JAN-DEC             , - * /


Day-of-Week          1-7 or SUN-SAT              , - * ? / L C #


Year (Optional)       empty, 1970-2099             , - * /




예)


 Expression                      Meaning

"0 0 12 * * ?"                       Fire at 12pm (noon) every day

"0 15 10 ? * *"                   Fire at 10:15am every day

"0 15 10 * * ?"                   Fire at 10:15am every day

"0 15 10 * * ? *"                   Fire at 10:15am every day

"0 15 10 * * ? 2005"             Fire at 10:15am every day during the year 2005

"0 * 14 * * ?"                       Fire every minute starting at 2pm and ending at 2:59pm, every day

"0 0/5 14 * * ?"                   Fire every 5 minutes starting at 2pm and ending at 2:55pm, every day

"0 0/5 14,18 * * ?"             Fire every 5 minutes starting at 2pm and ending at 2:55pm, AND fire every 5 minutes starting at 6pm and ending at 6:55pm, every day

"0 0-5 14 * * ?"                   Fire every minute starting at 2pm and ending at 2:05pm, every day

"0 10,44 14 ? 3 WED"             Fire at 2:10pm and at 2:44pm every Wednesday in the month of March.

"0 15 10 ? * MON-FRI"             Fire at 10:15am every Monday, Tuesday, Wednesday, Thursday and Friday

"0 15 10 15 * ?"                   Fire at 10:15am on the 15th day of every month

"0 15 10 L * ?"                   Fire at 10:15am on the last day of every month

"0 15 10 ? * 6L"                   Fire at 10:15am on the last Friday of every month

"0 15 10 ? * 6L"                   Fire at 10:15am on the last Friday of every month

"0 15 10 ? * 6L 2002-2005"           Fire at 10:15am on every last friday of every month during the years 2002, 2003, 2004 and 2005

"0 15 10 ? * 6#3"                   Fire at 10:15am on the third Friday of every month




구현

구현해 줘야 하는 주요 역할 클래스는

관리용 클래스(Manager역할) : 스케쥴러를 실행 해줄 클래스, Job을 등록할수 있는 인터페이스를 제공해준다.


Job생성 클래스(Factory역할) : 실제 실행할 Job을 생성해줄 빌더를 구현해 준다.


Job 클래스(Executor역할) : 실행 해야 할 목적 프로그램을 처리할 Job구현 클래스




JobSchedulingDataProcessor이용시에는 Job관련 정보를 xml로 정의하여 더 유연한 작업 스케쥴 관리를 할수 있다.



  1. SchedulerFactory sf = new StdSchedulerFactory();

  2. Scheduler scheduler = sf.getScheduler();

  3. JobSchedulingDataProcessor xmlProcessor = new JobSchedulingDataProcessor();

    xmlProcessor.processFileAndScheduleJobs("quartz-jobs.xml", scheduler, true);

    scheduler.start();



quartz-jobs.xml



  1. <?xml version="1.0" encoding="UTF-8"?>

    <quartz xmlns="http://www.opensymphony.com/quartz/JobSchedulingData"

            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

            overwrite-existing-jobs="true">

        <job>

            <job-detail>

                <name>my-very-clever-job</name>

                <group>MYJOB_GROUP</group>

                <description>The job description</description>

                <job-class>com.acme.scheduler.job.CleverJob</job-class>

                <job-data-map allows-transient-data="false">

                    <entry>

                        <key>burger-type</key>

                        <value>hotdog</value>

                    </entry>

                    <entry>

                        <key>dressing-list</key>

                        <value>ketchup,mayo</value>

                    </entry>

                </job-data-map>

            </job-detail>

            <trigger>

                <cron>

                    <name>my-trigger</name>

                    <group>MYTRIGGER_GROUP</group>

                    <job-name>my-very-clever-job</job-name>

                    <job-group>MYJOB_GROUP</job-group>

                    <!-- trigger every night at 4:30 am -->

                    <!-- do not forget to light the kitchen's light -->

                    <cron-expression>0 30 4 * * ?</cron-expression>

                </cron>

            </trigger>

        </job>

    </quartz>
반응형
Posted by Edward. K
블로그 이미지

메멘토적 기억능력을 소유한 개발자 노트.

by Edward. K

공지사항

    최근...

  • 포스트
  • 댓글
  • 트랙백
  • 더 보기

태그

  • 이클립스
  • 중독성게임
  • EditPlus
  • EkNote
  • toad
  • ERwin
  • 이미지 편집
  • eclipse plugin
  • 개한민국
  • 색상코드표
  • Jboss
  • 캡쳐툴
  • 전자정부프레임워크
  • egov
  • 미네르바
  • iBATIS
  • Graphic
  • rocketdock
  • flex
  • netbeans
  • sqlgate
  • 컴퓨터 관리
  • 사업 이야기
  • STS
  • 가상화폐무료
  • Flash Player
  • 플래시 게임
  • tomcat
  • android
  • Eclipse

글 보관함

«   2025/06   »
일 월 화 수 목 금 토
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30

링크

카테고리

분류 전체보기 (792)
행운이와함께 (1)
EkNote Project (18)
ARIS (0)
Android (2)
LINK (39)
UML (9)
Programming (154)
Cobol (0)
ASP (0)
CSS (5)
C_C++ (2)
IBatis (2)
JSP (3)
JAVA (76)
JavaScript (44)
PHP (2)
Utility (76)
Protable (3)
MobileProgram (4)
SKT (0)
KTF (0)
LGT (0)
자료들 (4)
DB (82)
mongoDB (0)
MySQL (8)
Oracle (61)
MSSQL (4)
Graphic (8)
Flash (3)
PhotoShop (3)
SourceFactory (4)
Collection (73)
작가의기막힌상상력 (14)
미소를찾아보는공간 (44)
내심장은작동중일까 (6)
멀더와스컬리의노트 (3)
이건어디에사용할까 (6)
Edward (275)
나만 알기엔 아까워 (100)
기억하기 위한 기록 (123)
시선이 머무는 공간 (50)
숨기고 싶은 이야기 (2)

카운터

Total
Today
Yesterday
방명록 : 관리자 : 글쓰기
Edward. K's Blog is powered by daumkakao
Skin info material T Mark3 by 뭐하라
favicon

IT정리노트

메멘토적 기억능력을 소유한 개발자 노트.

  • 태그
  • 링크 추가
  • 방명록

관리자 메뉴

  • 관리자 모드
  • 글쓰기
  • 분류 전체보기 (792)
    • 행운이와함께 (1)
    • EkNote Project (18)
    • ARIS (0)
    • Android (2)
    • LINK (39)
    • UML (9)
    • Programming (154)
      • Cobol (0)
      • ASP (0)
      • CSS (5)
      • C_C++ (2)
      • IBatis (2)
      • JSP (3)
      • JAVA (76)
      • JavaScript (44)
      • PHP (2)
    • Utility (76)
      • Protable (3)
    • MobileProgram (4)
      • SKT (0)
      • KTF (0)
      • LGT (0)
      • 자료들 (4)
    • DB (82)
      • mongoDB (0)
      • MySQL (8)
      • Oracle (61)
      • MSSQL (4)
    • Graphic (8)
      • Flash (3)
      • PhotoShop (3)
    • SourceFactory (4)
    • Collection (73)
      • 작가의기막힌상상력 (14)
      • 미소를찾아보는공간 (44)
      • 내심장은작동중일까 (6)
      • 멀더와스컬리의노트 (3)
      • 이건어디에사용할까 (6)
    • Edward (275)
      • 나만 알기엔 아까워 (100)
      • 기억하기 위한 기록 (123)
      • 시선이 머무는 공간 (50)
      • 숨기고 싶은 이야기 (2)

카테고리

PC화면 보기 티스토리 Daum

티스토리툴바