我使用以下注释在5分钟后调用无状态会话bean:
@Schedule(second = "0", minute = "0/5", hour = "*")
我按预期工作,但几天后它会自动停止。我想可能有一个默认的生命周期,我不知道如何覆盖它。
请帮我配置调度程序无限期运行。
答案 0 :(得分:1)
要知道对象是否有过期日期,可以使用getTimers()返回该计时器的对象,然后使用此方法getTimeRemaining()
来确定它是否有过期日期。
无论如何,您可以使用此注释@Timeout
在发生超时时执行某些操作:
@Timeout
public void timeout(Timer timer) {
System.out.println("do something ... ");
}
您可以在此处打印日期以了解超时的发生时间。
您正在使用“自动计时器”,并在 ejb-jar.xml 配置,所以请尝试查看 ejb-jar.xml 以查看是否那里有失效日期..
答案 1 :(得分:0)
在配置中的Glassfish中 - > server-config - > EJB-Container - > EJB-Timeservice新属性:reschedule-failed-timer = true
答案 2 :(得分:0)
你的@Schedule注释看起来是正确的,所以首先要检查的是日志,看看你的预定方法中是否有异常。
根据规范,如果在Timer方法中抛出异常,将再次调用该方法,如果再次失败,则关闭计时器。