清除EJB中@Schedule的缓存

Clear cache of @Schedule in EJB

我有一个单例 class 在某个时间间隔内执行任务。当应用程序启动时一切正常,任务在正确的时间段内 运行,并且该时间间隔足够糟糕,任何任务都不会重叠。

class 显示如下:

@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");
    }
 }

使用的网络容器是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