2011-09-02 251 views
0

太多的情況下,我有計劃TAKS一個簡單的Spring由以下定義:春任務執行計劃任務

<context:component-scan base-package="com/test"/> 
<task:scheduled-tasks> 
    <task:scheduled ref="myScheduler" method="doMyTask" fixed-rate="300000"/> 
</task:scheduled-tasks> 

<task:scheduler id="taskScheduler" pool-size="1"/> 

<task:executor id="executorWithPoolSizeRange" 
       pool-size="1" 
       queue-capacity="100"/> 

<bean id="cleanupClass" class="com.test.CleanupClass"> 
    <property name="myProperty" value="3600"/> 
</bean> 

我想同步運行一個線程每隔5分鐘。但是,我得到的是每5分鐘連續運行5個任務的實例。有誰知道上面的XML描述是否有缺失?

我得到了我想要的使用@Scheduled註釋的行爲,但我寧願不使用註釋來固定費率,因爲我希望它可以在代碼之外進行配置。

謝謝。

回答

0

當你將它部署到tomcat時,這是你在STS中看到的行爲嗎?如果是這樣,您將希望取消部署應用程序,重新部署應用程序並重新啓動應用程序。

+0

感謝您的建議。我會嘗試。 – pastafarian

0

另一個想法是使用屬性文件中的SPEL表達式將其與@Sched註釋一起使用。這樣,在使用該註釋時它仍然是可配置的。

+0

謝謝。我將不得不看看SpEL如何處理計劃任務。 – pastafarian

1

以下工作對我來說:

<bean id="task" class="com.foo.MyTask"> 
    <task:scheduled-tasks scheduler="scheduler"> 
    <task:scheduled ref="task" method="run" fixed-delay="300000" /> 
    </task:scheduled-tasks> 
    <task:scheduler id="scheduler" pool-size="10" /> 

問候, 馬克