2012-02-10 53 views
1

我spring.xml看起來像的Tomcat 7.0.23及彈簧3.1和任務調度多次調用

<task:scheduler id="feedServiceScheduler" pool-size="10"/> 
<task:scheduled-tasks scheduler="feedServiceScheduler">   


    <task:scheduled ref="feedService" method="testMethod" cron="0 50 11 * * *" /> 

</task:scheduled-tasks> 

我希望法「TestMethod的」對對象「feedService」在每一天的11時50分被調用年份
出於某種原因,testMethod被調用了兩次,我無法找到問題的解決方案。

「feedService」bean沒什麼特別,只是一個簡單的POJO和測試方法打印出一條消息。

任何關於我可能會做錯的幫助都會很棒。

謝謝

+1

您是否加載過該配置兩次? (app-context與web-context)? – Ralph 2012-02-10 13:18:37

+0

我只在web.xml中聲明spring servlet,並且我有一個log4jlistener和org.springframework.security.web.session.HttpSessionEventPublisher – 2012-02-10 14:04:28

回答

0

同樣的問題在這裏。看起來,tomcat創建了多個servlet實例,所以計劃的procs被多次調度。

這裏是一個小的日誌,在那裏你可以看到不同類型的啓動運行:

[2012-03-22 11:03:00,001] [ClickCheatReportGenerator] DEBUG ClickCheatersender called ([email protected]8d01c) 

[2012-03-22 11:03:00,004] [ClickCheatReportGenerator] DEBUG ClickCheatersender called ([email protected]0870) 

[2012-03-22 11:03:00,004] [ClickCheatReportGenerator] DEBUG ClickCheatersender called ([email protected]f938) 

您應該限制的tomcat只能運行1 servlet實例,但也許這會導致性能問題。

更新: 最後解決了使用cron調度調用由控制器處理的URL的問題。