2010-04-06 8 views
0

안녕하세요 저는 쿼츠 스케줄러를 사용하여 여러 가지 작업을 수행해야하는 cron을 트리거하고 있습니다. 동일한에 대한 나의 코드는 다음과 같다 : 내 InitServlet 클래스의 초기화() 메소드에서쿼츠 스케줄러가 크론 작업을 시작하지 못했습니다

, 내 TimerServer 클래스에서 내 TimerServer

public class InitServlet extends HttpServlet { 
     public void init(ServletConfig config) throws ServletException { 
     try { 
      System.out.println("Starting the CRON"); 
      //Set the DSO Handler CRON 
      TimerServer task = TimerServer.getInstance(); 
      task.setTask(); 
     } catch (Exception ex) { 
      System.out.println("Failed to start the cron"); 
      ex.printStackTrace(); 
     } 
    } 

을 정의하고 난 다음 방법을

public void setTask() { 
     try{    
      this.setSubscriptionDailyJob(); 
     } catch(SchedulerException ex) { 
      log.error("SchedulerException: "+ex.getMessage(), ex); 
     } 

private void setSubscriptionDailyJob() throws SchedulerException { 
     log.info("Step 1 "); 

     Scheduler scheduler = schedulerFactory.getScheduler(); 
     log.info("Step 2 "); 

     JobDetail subscriptionJob = new JobDetail("subscription", "subscriptiongroup",   SubscriptionDaily.class); 
log.info("Step 3 "); 
     // Initiate CronTrigger with its name and group name 
     CronTrigger subscriptionCronTrigger = new CronTrigger("subscriptionCronTrigger", "subscriptionTriggerGroup"); 

     try { 
      log.info("Subscription cron: "+Constants.SUBSCRIPTION_CRON); 
      // setup CronExpression 
      CronExpression cexp = new CronExpression(Constants.SUBSCRIPTION_CRON); 
      // Assign the CronExpression to CronTrigger 
      subscriptionCronTrigger.setCronExpression(cexp); 
     } catch (Exception ex) { 
      log.warn("Exception: "+ex.getMessage(), ex); 
     } 
     scheduler.scheduleJob(subscriptionJob, subscriptionCronTrigger);  
     scheduler.start(); 
    } 
내 SubscriptionDaily 클래스에서

:

public class SubscriptionDaily implements Job {  
    public void execute(JobExecutionContext arg0) throws JobExecutionException { 
     //Actions to be performed 
    } 
} 

지금 내 로그를 확인하면서 1 단계, 2 단계를 얻었지만 그 이상은 아닙니다.

내 코드가 TimerServer 클래스 자체에 갇혀 있습니다. 스케줄러 로그 WRT는 다음과 같습니다

17:24:43 INFO [TimerServer]: Step 1  
17:24:43 INFO [SimpleThreadPool]: Job execution threads will use class loader of thread: http-8080-1  
17:24:43 INFO [SchedulerSignalerImpl]: Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl            
17:24:43 INFO [QuartzScheduler]: Quartz Scheduler v.1.6.5 created. 
17:24:43 INFO [RAMJobStore]: RAMJobStore initialized.        
17:24:43 INFO [StdSchedulerFactory]: Quartz scheduler 'DefaultQuartzScheduler' initialized from default resource file in Quartz package: 'quartz.properties' 
17:24:43 INFO [StdSchedulerFactory]: Quartz scheduler version: 1.6.5    17:24:43 INFO [TimerServer]: Step 2 

나는 로그 항목이없는 생각 : 는 [QuartzScheduler] : 스케줄러 DefaultQuartzScheduler은 $ _이 _ NON_CLUSTERED 시작했다.

도와주세요.

답변

1

내 라이브러리에는 일반적인 컬렉션 jar 파일이 포함되어 있지 않았으므로 응용 프로그램에서 아무런 오류나 예외가 발생하지 않았습니다. 그래서 나는 잃어 버렸다!

나는 전에 자바가 그렇게 바보가되는 것을 보지 못했습니다. 이것은 자바의 올바른 행동인가요? 아니면 너무 많이 기대하고 있습니까?

또한 스프링을 내 애플리케이션에 사용하고 있으며 봄은 Bean을 통해 Quartz 및 Java TimerTask 기능을 처리 할 수있는 좋은 방법을 제공한다. 몇 가지 좋은 우아한 튜토리얼은 다음과 같습니다 콩 접근법을 사용에 제한이 http://static.springsource.org/spring/docs/1.2.9/reference/scheduling.html http://www.javaranch.com/journal/200711/combining_spring_and_quartz.html

있지만, 당신은 스프링 XML 파일의 크론 값을 하드 코딩해야하고, 그래서 우리는 유연성을 잃어 버리게된다.

관련 문제