spring 스케쥴러 등록방식
4년전만해도..스케쥴러며..Network 이며...개발하고 디버그 하느라 개노가다를 했는데..
프레임웍이란 넘이 강력하게 발달되어서 그러한 고생은 사라져 버렸으니.
코드중 CronTrgger 는 다음 링크를 참조하세용
http://eknote.tistory.com/421
Spring Scheduler 등록 방식
IOC 방식 (Injection Of Control)
> instance삽입해서 사용하는 방식. property로 bean을 추가해두고 사용하는 방식
web.xml 파일에 scheduler.xml 등록
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web
Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<description>BPM</description>
<distributable/>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/ipe/scheduler.xml</param-value>
<!--<param-value>/WEB-INF/ipe/*</param-value>-->
<!--<param-value>/WEB-INF/ipe/config*.xml</param-value>-->
</context-param>
<context-param>
<param-name>weblogic.http.inputCharset./*</param-name>
<param-value>KSC5601</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>springapp</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springapp</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<taglib> <!--JSTL -->
<taglib-uri>/WEB-INF/tld/c.tld</taglib-uri>
<taglib-location>/WEB-INF/tld/c.tld</taglib-location>
</taglib>
</web-app>
<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>
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("***************");
}
}
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("***************");
}
}
invalid-file