Java EE中的@Schedule注释

时间:2011-04-29 15:16:42

标签: java-ee annotations ejb scheduled-tasks

我使用以下注释在5分钟后调用无状态会话bean:

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

我按预期工作,但几天后它会自动停止。我想可能有一个默认的生命周期,我不知道如何覆盖它。

请帮我配置调度程序无限期运行。

3 个答案:

答案 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方法中抛出异常,将再次调用该方法,如果再次失败,则关闭计时器。