簡體   English   中英

清除EJB中@Schedule的緩存

[英]Clear cache of @Schedule in EJB

我有一個單例課程,可以在一定時間間隔內執行任務。 當應用程序開始正常運行時,任務將在適當的時間段內運行,並且該間隔足夠長,以至於任何任務都不會重疊。

班級如下所示:

@Singleton
@Startup
public class BOTAnalisaSituacao {
    public BOTAnalisaSituacao() throws FileNotFoundException {
    }

    @Schedule(second = "0", minute = "*/1", hour = "*")
    public void analisar() throws Exception {
        System.out.println("Starting");
        System.out.println("DONE");
    }
 }

使用的Web容器是Wildfly 10。

問題是,例如,當應用程序在停機一小時后啟動時,該任務將按順序執行,在這種情況下,將全部執行60次調用,此后將自動恢復1分鍾的時間。 我是否必須清除任何緩存,以免發生吮吸行為?

默認情況下,計時器是持久性的。 如果服務器關閉或崩潰,則永久計時器將保存並在重新啟動服務器時再次變為活動狀態。如果在服務器關閉期間持續計時器到期,則將調用所有丟失的計時器。 通過調用為注釋添加persistent=false來創建非持久性編程計時器:

@Schedule(second = "0", minute = "*/1", hour = "*",persistent=false)
    public void analisar() throws Exception {
        System.out.println("Starting");
        System.out.println("DONE");
    }

來源: http : //docs.oracle.com/javaee/6/tutorial/doc/bnboy.html#bnbpa

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM