2012-04-20 40 views
11

我在Glassfish中運行我的應用程序。我嘗試創建一個作業,每隔5分鐘執行一次,如下所示:Java EE調度程序不叫

@Startup 
@Singleton 
@LocalBean 
public class TempFolderCleaner { 
    private final static Logger LOGGER = LoggerFactory.getLogger(TempFolderCleaner.class); 

    @EJB 
    private ReportStatusDao reporStatusDao; 

    @Schedule(minute = "*/5") 
    public void removeOldReports() { 
     LOGGER.debug("start removeOldReports()"); 
    } 
} 

但是,它永遠不會被調用。我試圖從記錄器中看到一條消息並設置一個調試點,但它不會被調用。 我用這個文檔的語法:http://download.oracle.com/javaee/6/tutorial/doc/bnboy.html

我也嘗試完全指定分鐘。不幸的是,沒有成功。

+0

請注意,您不需要這裏的'@ LocalBean'註解。 – 2012-04-28 09:33:40

回答

18

我想「時」默認爲0(午夜),所以你可能需要將其指定爲:

@Schedule(minute = "*/5", hour="*") 
+0

你是對的。非常感謝!其次,小時和分鐘的默認值爲「0」,而不是像其他屬性那樣的「*」。 – Daniel 2012-04-20 13:09:47

+0

它解決了我,但這是奇怪的,因爲從文檔我明白,分鐘=「*/5」應明確設置小時爲「*」。但是,嘿.... – Kemoda 2013-09-26 16:59:44