使用EJB计时器的Java EE计划程序任务

sta*_*ack 2 java java-ee

我有一项要求,要求在当天的给定时间运行3-6个计划任务.我是EJB计时器的新手,但已经读过EJB计时器是处理Java EE容器中的计划任务的最佳方法.

设计问题:

假设我需要10个预定任务.如果可能的话,我不希望创建10个EJB计时器.相反,我希望创建一个关闭的EJB计时器,然后重新使用它来创建所需的预定作业,为每个实例传递预定的运行时间(作为结果),这可能吗?请有人请帮助解决这个问题吗?

NB我在考虑使用非持久性EJB计时器......

Osw*_*Osw 9

另一个选项(除了alreay说)是@Schedule为每个定时方法使用带注释的单例:

@Singleton
@Startup
public class TimedTaskManager {

  @Schedule(second = "0", minute = "*/5", hour = "*")
  public void runTask1() {
    //
  }

  @Schedule(second = "15", minute = "*/5", hour = "6,7,8")
  public void runTask2() {
    //
  }

  //
  //

  @Schedule(second = "0", minute = "*", hour = "1,2,6")
  public void runTaskN() {
    //
  }
}
Run Code Online (Sandbox Code Playgroud)