2013-10-03 55 views
1

您好我创建了一个cron作业及其使用石英CronTrigger失败

org.springframework.scheduling.quartz.SimpleTriggerBean 

运作良好,但是当我使用CronTrigger工作didnt触发安排我的工作都没有扔掉它下面的任何错误是我的Spring配置和工作班。

<bean id="cronJobTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"> 
     <property name="jobDetail" ref="runBillingJob" /> 
     <property name="cronExpression" value="0 0 0 * * ?"/> 
</bean> 

    <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> 
     <property name="jobDetails"> 
      <list> 
       <ref bean="runTestJob" /> 
      </list> 
     </property> 

     <property name="triggers"> 
      <list> 
       <ref bean="cronJobTrigger" /> 
      </list> 
     </property> 
    </bean> 

以下是我的测试方法:

@SuppressWarnings("unchecked") 
protected void executeInternal(JobExecutionContext context) 
     throws JobExecutionException { 
    List<JobExecutionContext> jobs = null; 
    try { 
     jobs = context.getScheduler().getCurrentlyExecutingJobs(); 
     for (JobExecutionContext job : jobs) { 
      if (job.getTrigger().equals(context.getTrigger()) 
        && !job.getJobInstance().equals(this)) { 
       logger.trace("There's another instance running, so leaving: " 
         + this); 
       return; 
      } 
     } 
     logger.info("Create a BillingService instance..."); 

    } catch (SchedulerException e) { 
     logger.error("", e); 
     return; 
    } 

    try { 
     triggerToController(); 
    } catch (ClientProtocolException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
+0

我假设你已经在SchedulerFactoryBean来调用启动并一直等到半夜为你的cron表达式来触发? – darrenmc

+0

你有runBillingJob的引用,但我看不到它在哪里定义。请参阅下面的答案。 –

回答

0

试试这个:

<bean id="cronJobTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"> 
     <property name="jobDetail" ref="runBillingJob" /> 
     <property name="cronExpression" value="0 0 0 * * ?"/> 
    </bean> 
    <bean id="runBillingJob" class="org.springframework.scheduling.quartz.JobDetailBean"> 
     <property name="jobClass" value="your.package.YourClass" /> 
    </bean> 
    <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> 
     <property name="triggers"> 
      <list> 
       <ref bean="cronJobTrigger" /> 
      </list> 
     </property> 
    </bean>