IT정리노트

블로그 이미지

Edward. K

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

Spring Scheduler 등록 방식

Programming/JAVA 2008. 1. 4. 16:12
반응형

Spring Scheduler 등록 방식
Spring 스케쥴러 분석을 위해 만들어둔 샘플 코드.
꼭 한번은 직접 코딩을 해주세용..




Cron Scheduler 실생할 경우 필요한 jar 파일  ( lib 폴더에 추가 )
    >  quartz-1.6.0.jar

IOC 방식   (Injection Of Control)
    > instance삽입해서 사용하는 방식.  property로 bean을 추가해두고 사용하는 방식




web.xml  파일에   scheduler.xml 등록


scheduler.xml

<beans>

        <bean id="schedulerDemon" class="package.SchedulerDemon">
            <!-- 해당 class 에서  import 되는 객체들 선언 -->
            <property name="transactionManager">
                <!-- 다른 파일<ref bean="transactionManager" />-->
                <ref local="transactionManager" /><!-- 동일 파일-->
            </property>
            <property name="propNameA">
                <ref bean="propBeabnameA" />
            </property>
            <property name="propNameB">
                <ref bean="propBeabnameB" />
            </property>
        </bean>
            
        <bean id="schedulerJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
            <property name="targetObject"><ref local="schedulerDemon"/></property>
            <property name="targetMethod"><value>doSchedulerDemon</value></property>
            <property name="concurrent"><value>false</value></property>
        </bean>

        <bean id="schedulerTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
            <property name="jobDetail">
                <ref bean="schedulerJobDetail"/>
            </property>
            <property name="startDelay">
                <value>10000</value>
            </property>
            <property name="repeatInterval">
                <value>600000</value>
            </property>
        </bean>

        <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
            <property name="dataSource">
                <ref local="dataSourceUser"/>
            </property>
        </bean>

    <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
        <property name="triggers">
            <list>
                <ref local="schedulerTrigger"/>
                <ref local="schedulerCronTrigger"/>
            </list>
        </property>
    </bean>

    <bean id="dataSourceUser" class="org.apache.commons.dbcp.BasicDataSource"    destroy-method="close">
        <property name="driverClassName">
            <value>oracle.jdbc.driver.OracleDriver</value>
        </property>
        <property name="url">
            <value>jdbc:oracle:thin:@(description=(address_list=(address=(host=111.222.333.444)(protocol=tcp)(port=ORACLEportNo))(address=(host=222.333.444.555)(protocol=tcp)(port=ORACLEportNo))(load_balance=yes)(failover=yes))(connect_data=(service_name=DB_NAME)))</value>  
        </property>
        <property name="username">
            <value>로그인ID</value>
        </property>
        <property name="password">
         <value>로그인PASS</value>
        </property>
    </bean>


    <bean id="ipeJdbcDaoSupportUser" abstract="true" class="kr.co.digiwave.webclient.dao.IpeJdbcDaoSupport">
        <property name="dataSource">
            <ref local="dataSourceUser"/>
        </property>
        <property name="messageSourceAccessor">
            <ref bean="messageSourceAccessor"/>
        </property>
    </bean>

    <bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
        <property name="basenames">
            <list>
                <value>/경로/파일명1</value>
                <value>/경로/파일명2</value>
                <value>/경로/파일명3</value>
            </list>
        </property>
        <property name="cacheSeconds" value="5"/>
    </bean>

    <bean id="messageSourceAccessor" class="org.springframework.context.support.MessageSourceAccessor">
        <constructor-arg>
            <ref local="messageSource" />
        </constructor-arg>
    </bean>

<!----------------------------------------------------------->
/*     CronTriggerBean  사용     */
    <bean id="schedulerCronClass" class="package.SchedulerCronClass">
        <!-- 해당 class 에서  import 되는 객체들 선언 -->
        <property name="transactionManager">
            <!-- 다른 파일<ref bean="transactionManager" />-->
            <ref local="transactionManager" /><!-- 동일 파일-->
        </property>
        <property name="propNameA">
            <ref bean="propBeabnameA" />
        </property>
        <property name="propNameB">
            <ref bean="propBeabnameB" />
        </property>

    </bean>
    
    <bean id="schedulerCronDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
        <property name="targetObject" ref="schedulerCronClass" />
        <property name="targetMethod" value="SchedulerCronDemon" />
        <property name="concurrent"><value>false</value></property>
    </bean>
    
    <bean id="schedulerCronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
        <property name="jobDetail" ref="schedulerCronDetail" />
           <property name="cronExpression" value="0 30 7 * * ?" />
    </bean>
<!----------------------------------------------------------->



</beans>



SchedulerDemon.java

public class SchedulerDemon {
    
    private DataSourceTransactionManager transactionManager;
    private PropNameA propBeabnameA;
    private PropNameB propBeabnameB;

    public void setPropNameA(PropNameA a){
        propBeabnameA = a;
    }

    public void setPropNameA(PropNameA a){
        propBeabnameA = a;
    }
    
    public void doSchedulerDemon() {        
        System.out.println("***************");        
        System.out.println("****SchedulerDemon    Scheduler RUN ");        
        System.out.println("***************");        
    }
}



SchedulerCronClass.java

public class SchedulerCronClass {
    protected final Log logger = LogFactory.getLog(getClass());
    
    private DataSourceTransactionManager transactionManager;
    private PropNameA propBeabnameA;
    private PropNameB propBeabnameB;

    public void setPropNameA(PropNameA a){
        propBeabnameA = a;
    }

    public void setPropNameA(PropNameA a){
        propBeabnameA = a;
    }
    
    
    public void SchedulerCronDemon() {
        System.out.println("***************");        
        System.out.println("****SchedulerDemon    Scheduler RUN ");        
        System.out.println("***************");        
        
    }
}

반응형
Posted by Edward. K
블로그 이미지

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

by Edward. K

공지사항

    최근...

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

태그

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

글 보관함

«   2026/03   »
일 월 화 수 목 금 토
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 31

링크

카테고리

분류 전체보기 (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

티스토리툴바