2009-09-23 57 views
1

好人。我试图在由maven管理的一个非常简单的项目中使用石英。因此,在mycron作业类的模块中,我包含了一个java主类,只是为了看到作业输出一些文本和新日期。 这里是我的Spring配置:在春季,究竟是什么运行了quarz cron工作?

<!--Scheduling--> 
<!--Job--> 
    <bean id="projUpdater" class="org.springframework.scheduling.quartz.JobDetailBean"> 
     <property name="jobClass" value="com.myproject.utilscheduling.quartz.ProjUpdaterCronImpl" /> 
    </bean> 
<!---End of Jobs--> 
<!--Triggers--> 
    <bean id="regularUpdateTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"> 
     <property name="jobDetail" ref="projUpdater"/> 
     <property name="cronExpression" value="30 1 * * * ?"/> 
    </bean> 
<!--End ofTriggers--> 
<!--Scheduler Factory--> 
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> 
    <property name="triggers"> 
     <list> 
      <ref bean="regularUpdateTrigger"/> 
     </list> 
    </property> 
</bean> 
<!--End of Scheduler Factory--> 
<!--End of Scheduling--> 

,这里是作业类

public class ProjUpdaterCronImpl extends QuartzJobBean { 

public ProjUpdaterCronImpl() { 
} 


protected void executeInternal (JobExecutionContext ctx) throws JobExecutionException { 
    System.out.println("[JOB] " + new Date() + "hello"); 
} 

} 

这里是主类

public class NewMain { 

/** 
* @param args the command line arguments 
*/ 
public static void main(String[] args) { 
    System.out.println("starting job"); 
} 

} 

所以在我的理解作业将1mn30s后启动,并张贴在控制台上。我错了。我遇到了几个或我解决的错误,所以我可以安全地假设在Spring配置文件中没有错误,因为在建立和运行时没有错误因此,我做错了什么,或者我忘记了什么?

第二个问题,因为我强迫自己去测试驱动的方式我将如何测试一个cron工作班? 感谢您的阅读

回答

1

你的cron表达式

<property name="cronExpression" value="30 1 * * * ?"/> 

实际配置触发在每小时30秒后1分钟,火每小时一次。

Zoidberg建议使用MethodInvokingJobDetailFactoryBean,这样您可以将您的cron作业编码为POJO,从而使测试变得简单。

+0

mmmh这很棘手。 60 0 0 * *?会每分钟做吗? – 2009-09-23 17:48:04

+0

不,“0 * * * *?”每分钟都会发生。查看文档 http://www.opensymphony.com/quartz/wikidocs/CronTriggers%20Tutorial.html – 2009-09-23 18:04:28

+0

感谢兄弟我必须真正坐下来阅读这些东西谢谢 – 2009-09-23 18:55:07

0

试试这个为你的工作bean。

<bean id="projUpdater" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> 
     <property name="targetObject" ref="registeredObject" /> 
     <property name="targetMethod" value="methodNameInObject" /> 
    </bean> 

其中您的registeredObject是在spring配置某处注册的bean。该方法是存在于该对象中的方法。

+0

我会尝试你的建议我一直在网上看到这个表单很多。顺便说一句,如何让我真的工作,除非我不知道如何使用它的方式。我的意思是像我这样的初学者是知道我做错了什么的关键。感谢 – 2009-09-23 19:42:45