2010-04-06 4 views
0

Привет, я использую планировщик кварца, чтобы вызвать cron, который должен выполнять множество действий. Мой код для того же выглядит следующим образом:Quartz scheduler не запускает задание cron

В методе Init() моего InitServlet класса, я определяю мой 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(); 
     } 
    } 

В моем классе TimerServer у меня есть следующие методы

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

В моей библиотеке я не включил сборник общих коллекций, хотя из-за этого не было ошибок или исключений, которые были выброшены в любом приложении. Так что я был в убытке !!

Я никогда не видел, чтобы Java была настолько немой перед этим. Является ли это правильным поведением Java или ожидаю от него слишком многого?

Я также использую пружину в своем приложении, а Spring обеспечивает хороший и простой способ обработки функций TimerTask Quartz и Java через бобы. Немного хорошие и элегантные учебники: http://static.springsource.org/spring/docs/1.2.9/reference/scheduling.html http://www.javaranch.com/journal/200711/combining_spring_and_quartz.html

Хотя ограничение в использовании подхода боба, вы должны жестко закодировать значение хрон в файле XML ярового, и поэтому мы будем терять гибкость.

Смежные вопросы