quartz를 이용하여 시간을 정하는 방법으로 제어하다
/*** 시간 작업의 인터페이스 클래스 */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>
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Exception Class에서 에러 코드 해석 ~초기초편~직장에서 C# 프로젝트가 내뿜는 오류 코드를 구문 분석하고 오류의 위치를 확인하기 위해 Exception class를 활용할 수 있었습니다. 지금까지 Exception Class 에 대해서 별로 파악할 수 없었기 때...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.