我有一个像这样的单身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()方法都按计划时间运行?
答案 0 :(得分:1)
来自EJB3 In Action 2nd Edition 7.1.1定时服务功能第197页:
虽然定时器服务是健壮的,定时器将在服务器重启/故障后继续存在,但定时服务不会 支持实时调度。这意味着您不应该使用EJB调度 适用于必须在可测量的时间范围内响应实际事件的情况。可衡量的时间范围是您的一段时间 绝对必须处理请求或提供回复。
作者还指出:
EJB计时器服务是 适用于非任务关键的情况(如果发生不良事件,则会发生 你迟到了一个纳秒。例如,在午夜发送电子邮件广播 具有出价状态非常适合定时服务。使用定时服务进行监控 飞机上的导管和计算发动机推力将是一个糟糕的解决方案。