quartz를 이용하여 시간을 정하는 방법으로 제어하다

1. 타이밍 퀘스트를 먼저 쓰는 인터페이스
/*** 시간 작업의 인터페이스 클래스 */public interface ITask {/*** 작업 실행 시작 */public void startTask (String express)throws Exception;/*** 작업 실행 중지 */public void stopTask ()throws Exception;}
 
2. 정시 작업 클래스 작성
/*** 타임 퀘스트 */public class ScheduleTask {public static String BEAN_ID ='scheduleTask','protected static LogService log = LogService.getLogger(ScheduleTask.class);//퀘스트 목록private static Map tasks = new HashMap();public void init() {ITask task = null;String taskCode= new String();String taskName = new String(); String express = new String(), String classname = new String(); String taskStatus=new String();//for test List list = new ArrayList(); Map map1 = new HashMap(); map1.put("TASK_CODE", "SEND_PAYINFO_TO_ISO"); map1.put("TASK_NAME", "ISO 시스템에 결제 정보 발송")map1.put("TASK_CONF", "0 30 20 ? * * *"); map1.put("TASK_CLASS", "com.longtop.scheduletask.scheduler.SendPayInfoToIsoCronJob"); map1.put("TASK_STATUS", "n"); list.add(map1);//for test//List list = bsmSqlDao.getTask(); if (list.size() > 0) { Iterator iteSche = list.iterator(); while (iteSche.hasNext()) { HashMap map = (HashMap) iteSche.next(); taskCode = map.get("TASK_CODE").toString().trim(); taskName = map.get("TASK_NAME").toString().trim(); express = map.get("TASK_CONF").toString().trim(); classname = map.get("TASK_CLASS").toString().trim(); taskStatus=map.get("TASK_STATUS").toString().trim();//for test express = this.getSchedulerExpress();//for test if(taskStatus.equalsIgnoreCase("n") {try {log.debug("정시 작업 설정 시작"+ taskName);task = (Itask)getInstance(classname);task.startTask(express);log.debug("정시 작업"+ taskName +'설치 성공');}catch(Exception e) {log.debug(정시 작업 + taskName + 설정 실패);e.printStackTrace();}tasks.put(taskCode, task); } } } }
 
package com.longtop.scheduletask.scheduler; import org.quartz.CronExpression; import org.quartz.CronTrigger; import org.quartz.JobDetail; import org.quartz.Scheduler; import org.quartz.SchedulerFactory; import org.quartz.impl.StdSchedulerFactory; import com.longtop.scheduletask.ITask;/** * ISO 정시에 메시지를 보내는 주요 클래스 * @author linwei * */public class SendPay InfoToIsoCronJob implements ITask {private Scheduler scheduler = null;/* 이 방법은 정시 작업을 시작하는 방법 * express * 이것은 데이터베이스에서 추출한 정시 실행 시간 */public void startTask (String express)throws Exception{//스케줄러 임무를 획득한 공장의 실례 Scheduler Factory scheduler Factory = new StdScheduler Factory ();/공장 실례에서 scheduler = scheduler Factory.getScheduler ();//3개 파라미터를 전달하여 스케줄러 임무를 구성하는 세부 JobDetail = new JobDetail ("SendPay Info ToIso Cron Job", "SendPay Info Cron Job Group", SendPay Info ToIso Sub Job.class);//스케줄링 트리거 CronTrigger cronTrigger = new CronTrigger("SendPay InfoToIsoCron Job", "SendPay InfoToIsoCron Job Group");try { CronExpression cexp = new CronExpression(express); cronTrigger.setCronExpression(cexp); } catch (Exception e) { e.printStackTrace(); throw e; } scheduler.scheduleJob(jobDetail, cronTrigger); scheduler.start(); } public void stopTask ()throws Exception {//스케줄링 작업에서 이 작업 scheduler.deleteJob 제거("SendPay InfoToIsoCronJob", "SendPay InfoToIsoCronJob Group");}
 
package com.longtop.scheduletask.scheduler; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException;/** * ISO에 메시지를 보내는 작업 내역 클래스 * @author linwei * */public class SendPay InfoToIsoSubJob implements Job {/* 스케줄링 작업이 수행하는 방법 */public void execute (JobExecutionContext arg0)throws JobExecution Exception {try {System.out.println (이 방법에 성공했습니다.);}catch(Exception e) { e.getStackTrace(); } } }
 
3. 마지막으로spring의 프로필에서 아까 scheduletask 클래스의 방법을 실례화하고 동시에
web.xml에 이spring 프로필을 넣으면 됩니다.
 
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>
	
	<!--  , quartz   start add by linwei 20120511  -->
    
    <!--  Bean  -->
    <bean id="scheduleTaskTarget" class="cn.ffcs.icity.module.jobschedule.base.ScheduleTask" init-method="init">
		<property name="scheduleTaskDAO">
			<ref bean="scheduleTaskDAO"/>
		</property>
	</bean>
	
	<bean id="scheduleTask" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
		<property name="transactionManager">
			<ref bean="transactionManager"/>
		</property>
		<property name="target">
			<ref local="scheduleTaskTarget"/>
		</property>
		<property name="transactionAttributes">
			<props>
				<prop key="*">PROPAGATION_REQUIRED</prop>
			</props>
		</property>
	 </bean>
	
	
	<!--  , quartz   end add by linwei 20120511  -->
	

	
</beans>

 
 
 

좋은 웹페이지 즐겨찾기