2014-03-06 67 views
-1

我卡与尝试使用Spring 2.5的&石英火计划任务每​​分钟1.6.2石英工作没有得到执行

显然豆被启动,并很好地打印出“工作正常”来std out, 但作业似乎没有得到执行 - 没有字符串打印出日志 (没有“hello quartz”出现在输出中)。

我的XML文件是:

<bean id="scheduler" 
    class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> 
    <property name="autoStartup"> 
     <value>true</value> 
    </property> 
</bean> 

<bean id="UpdateDBWatchdog" class="com.db.update.task.watchdog.UpdateDBWatchdog" 
    lazy-init="false" init-method="init"> 
    <constructor-arg ref="scheduler" /> 
</bean> 

我的代码是:

import org.quartz.CronExpression; 
import org.quartz.CronTrigger; 
import org.quartz.Job; 
import org.quartz.JobDetail; 
import org.quartz.JobExecutionContext; 
import org.quartz.JobExecutionException; 
import org.quartz.Scheduler; 

public class UpdateDBWatchdog { 

    private Scheduler scheduler; 

    public UpdateDBWatchdog(Scheduler scheduler) { 
     this.scheduler = scheduler; 
    } 

    public void init() { 
     try { 

      CronTrigger ct = new CronTrigger(); 
      ct.setName("dummyTriggerName"); 
      String expression = "* * * * * ?"; 

      boolean valid = CronExpression.isValidExpression(expression); 
      if (valid) { 
       ct.setCronExpression(expression); 
      } else { 
       throw new RuntimeException(); 
      } 

      JobDetail job = new JobDetail(); 
      job.setName("dummyJobName"); 
      job.setJobClass(HelloJob.class); 

      scheduler.scheduleJob(job, ct); 
      scheduler.start(); 
      System.out.println("Works fine!"); 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } 

    } 

    private class HelloJob implements Job { 
     @Override 
     public void execute(JobExecutionContext arg0) throws JobExecutionException { 
      System.out.println("Hello Quartz!"); 
     } 

    } 
} 
+1

你有没有试过不同的表情?像'0 * * * *?'。 – mdrg

+1

您总是尝试创建一个服务并添加一个@schedule注释,它更加简单,并且可以使用属性持有者通过fixeddelay或cron表达式进行配置。 – vzamanillo

+0

@mdrg是的,我尝试了不同的你提到的那个似乎每小时执行 – tania

回答

3

也许你得到一个java.lang.InstantiationException因为石英正试图实例化一个内部类explanation)。

声明你HelloJob静态类的outter类或从UpdateDBWatchdog类走出去,在自己的文件中声明。

+0

这个答案应该接受 – leobelizquierdo

+0

@lebelizquierdo,谢谢。 – vzamanillo