½ºÄÉÁì·¯ ±¸Çö
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