使用@Schedule

时间:2017-12-13 11:39:11

标签: java-ee singleton ejb

我有一个像这样的单身ejb:

@Singleton(name = "PBEJB")
public class BoardBean implements BoardLocal {

    @Override
    @Schedule(second = "1", minute = "*", hour = "*", dayOfMonth = "*", month = "*", year = "*")
    public void startReadOrders() {
                 doSomthing();
    }
}

这个bean非常重要,必须在分钟开始时每隔一分钟运行(第二个1)。 是否保证在任何情况下startReadOrders()方法都按计划时间运行?

1 个答案:

答案 0 :(得分:1)

来自EJB3 In Action 2nd Edition 7.1.1定时服务功能第197页:

  

虽然定时器服务是健壮的,定时器将在服务器重启/故障后继续存在,但定时服务不会   支持实时调度。这意味着您不应该使用EJB调度   适用于必须在可测量的时间范围内响应实际事件的情况。可衡量的时间范围是您的一段时间   绝对必须处理请求或提供回复。

作者还指出:

  

EJB计时器服务是   适用于非任务关键的情况(如果发生不良事件,则会发生   你迟到了一个纳秒。例如,在午夜发送电子邮件广播   具有出价状态非常适合定时服务。使用定时服务进行监控   飞机上的导管和计算发动机推力将是一个糟糕的解决方案。