清除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
我有一个单例 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