±âŸ(framework)
2018.06.29 / 21:54

½ºÄÉÁì·¯ ±¸Çö

aichatbot
Ãßõ ¼ö 269

http://okjsp.pe.kr/bbs?act=VIEW&seq=62106&bbs=bbs3&keyfield=content&keyword=timer&pg=

°£´ÜÇÑ SampleÀ» º¸¿©µå¸³´Ï´Ù. 
ÇÁ·ÎÆÛƼ ÆÄÀÏÀ» ÀÌ¿ëÇÏ¸é µ¿ÀûÀ¸·Î Class¸¦ LoadÇÒ ¼ö ÀÖÁÒ. 
¶ÇÇÑ Quartz SampleÀ» º¸½Ã¸é Crontime±îÁö ½ÇÇà µµÁß¿¡ º¯°æ°¡´ÉÇÕ´Ï´Ù. ¶ÇÇÑ °°Àº ½ºÄÉÁì ½Ã°£À» °®°í ÀÖ´Â JobÀº ¿©·¯°³ µ¿½Ã¿¡ µî·Ï °¡´ÉÇÕ´Ï´Ù. 
QuartzÀÇ SampleÁß InterruptableJobTestÀ» º¸½Ã¸é ½ÇÇàÁßÀÎ JobÀ» ã¾Æ¼­ Delete ½ÃÅ°´Â ¹æ¹ýµµ ÀÖÀ¸¹Ç·Î, ÀÌ·± ±â´ÉµéÀ» Àß ¼¯¾î¼­ ¾²½Ã¸é °¡´ÉÇÒ °Í °°Àºµ¥¿ä. 
------------------- 
import java.text.ParseException; 
  
import org.apache.log4j.Logger; 
import org.quartz.CronTrigger; 
import org.quartz.JobDetail; 
import org.quartz.Scheduler; 
import org.quartz.SchedulerException; 
import org.quartz.SchedulerFactory; 
import org.quartz.impl.StdSchedulerFactory; 
  
import com.util.Config; 
  
/** 
 * project.properties¿¡ ¼³Á¤µÈ ³»¿ëÀ» ÀÌ¿ëÇÏ¿© Á¤ÇØÁø ½Ã°£¸¶´Ù µî·ÏµÈ Thread¸¦ ½ÇÇàÇϱâ À§ÇÑ Main Program 
 */ 
  
/** 
 *  
 */ 
public class QuartzSample { 
    static Logger logger = Logger.getLogger( Np2RawDataSyncTimerMain.class ); 
  
    public static void main(String [] args) 
    { 
       // Sample.properties ¸¦ ÀÐ¾î ¿øÇÏ´Â ³»¿ëÀ» ã¾ÆÁÖ´Â Class 
        Config cf = new Config(); 
  
        // TaskGroupsÀ» ±¸ÇÑ´Ù. 
        // White space·Î ±¸ºÐÇÑ´Ù. 
        String [] taskGroups = cf.getConfig( "TaskGroups" ).split( "\\s" ); 
  
        SchedulerFactory schFact = null; 
        Scheduler scheduler = null; 
  
        JobDetail jobDetail = null; 
        CronTrigger trigger = null; 
        String className = null; 
  
        try 
        { 
            // Schedule 󸮸¦ À§ÇÑ SchedulerFactory »ý¼º 
            schFact = new StdSchedulerFactory(); 
            scheduler = schFact.getScheduler(); 
            scheduler.start(); 
  
            for ( int i = 0; i < taskGroups.length; i++ ) 
            { 
                String scheduleTime = cf.getConfig( taskGroups[i] + ".ScheduleTime" ); 
                String [] tackName = cf.getConfig( taskGroups[i] + ".TaskNames" ).split( "\\s" ); 
  
                for ( int j = 0; j < tackName.length; j++ ) 
                { 
                    Class c = null; 
                    className = cf.getConfig( tackName[j] + ".ClassName" ); 
  
                    logger.debug( tackName[j] + ".ClassName : " + className ); 
  
                    // ½ÇÇàµÉ Class¸¦ LoadÇÑ´Ù. 
                    c = Class.forName( className ); 
  
                    jobDetail = new JobDetail( tackName[j], taskGroups[i], c ); 
  
                    trigger = new CronTrigger( tackName[j], taskGroups[i] ); 
                    try 
                    { 
                        trigger.setCronExpression( scheduleTime ); 
                    } 
                    catch ( ParseException e2 ) 
                    { 
                        logger.error( "CronTrigger ParseException : " + tackName[j] + ".ClassName : " + className ); 
                        logger.error( "CronTrigger ParseException : " + scheduleTime ); 
                        e2.printStackTrace(); 
                    } 
  
                    // Config¿¡¼­ ÀÐÀº °øÅë »çÇ×À» Job¿¡ Àü´ÞÇϱâ À§ÇØ ÀúÀåÇÑ´Ù. 
                    jobDetail.getJobDataMap().put( "web.driver", webDriver ); 
                    jobDetail.getJobDataMap().put( "web_db.url", webURL ); 
                    jobDetail.getJobDataMap().put( "web_db.username", username ); 
                    jobDetail.getJobDataMap().put( "web_db.password", password ); 
  
                    try 
                    { 
                        scheduler.scheduleJob( jobDetail, trigger ); 
                    } 
                    catch ( SchedulerException e1 ) 
                    { 
                        logger.error( "SchedulerException : " + tackName[j] + ".ClassName : " + className ); 
                        e1.printStackTrace(); 
                    } 
                } 
            } // for 
  
        } 
        catch ( ClassNotFoundException e ) 
        { 
            logger.error( "ClassNotFoundException : " + className ); 
            e.printStackTrace(); 
        } 
        catch ( SchedulerException e ) 
        { 
            logger.error( "SchedulerException : Scheduler could not execute!!" ); 
            e.printStackTrace(); 
        } 
  
    } 
  

--------------------------- 
Sample.properties ÆÄÀÏÀÇ ¼³Á¤³»¿ë 
  
TaskGroups = RawDataSyncGroup 
  

# RowDataSync Group ¼³Á¤ 
# ¸ÅÀÏ 5ºÐ ¸¶´Ù ½ÇÇà 
RawDataSyncGroup.ScheduleTime = 0 0/5 * * * ? 
RawDataSyncGroup.TaskNames = RawDataSync_1 RawDataSync_2 
  
# ½ÇÇàµÉ TaskÀÇ Full Package À̸§À» ¼³Á¤ 
RawDataSync_1.ClassName = com.kt.np2.biz.sync.RawDataSync_1 
RawDataSync_2.ClassName = com.kt.np2.biz.sync.RawDataSync_2