java - 关于ejb3.0定时器服务的问题

标签 java ejb-3.0 ejb

我的 Timersession bean 有 4 个方法,比如 a()b()c() d().

  • a() 应每 6 小时执行一次
  • b() 应每 3 小时执行一次
  • c() 应每 1 小时执行一次

如何使用 EJB 3.0 计时器服务来做到这一点?

最佳答案

安排三个独立的计时器,并使用“info”对象来编码需要从@Timeout方法调用哪个方法。例如:

timerService.createTimer(..., 6 * 60 * 60 * 1000, "a");
...
timerService.createTimer(..., 3 * 60 * 60 * 1000, "b");
...
timerService.createTimer(..., 1 * 60 * 60 * 1000, "c");
...

@Timeout
private void timeout(Timer timer) {
  String info = timer.getInfo();
  if ("a".equals(info)) {
    a();
  } else if ("b".equals(info)) {
    b();
  } else if ("c".equals(info)) {
    c();
  } else {
    throw new IllegalStateException("Unknown method: " + info);
  }
}

关于java - 关于ejb3.0定时器服务的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5856775/

相关文章:

java - 使用 "key"和 "value"属性反序列化 JSON 映射不适用于 Jackson

java - Atomikos vs JOTM vs Bitronix vs?

java - 将 EJB 从 2.1 更改为 3.0

java - 有状态 EJB 生命周期问题

jakarta-ee - 使用 Intellij 10 和 GlassfishV3 创建和部署 EJB

ejb - 无状态 EJB 中的同步块(synchronized block)

java - Eclipse 中的预调试脚本

java - JTextField 的 setText 方法在 KeyListener 中不起作用

java - 防止机器人多次查询我的数据库

java - 使用 Mockito、TestNG 和 OpenEJB 对 EJB 进行单元测试