2009-09-23 25 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