禁用Glassfish 3.1中的所有计划

时间:2012-01-25 13:29:04

标签: glassfish-3 ejb-3.1 schedule

如何在Glassfish 3.1上的项目中禁用所有调度程序(@Schedule annotated)
可能有一些配置条目可以执行此操作?
我的项目中有大约20个带调度程序的EJB如果我想测试/修复一个小东西,我不希望所有/某些计时器启动。

2 个答案:

答案 0 :(得分:2)

不幸的是,我不知道是否有一些配置条目可以解决您的问题,但是通过在 cancel() -method,有一种编程方式可以做到这一点>计时器 - 由 TimerService 提供的对象。

这是一个我只想在小项目中测试的课程的例子:

@Stateless
public class ScheduleCancellation {

  @Resource
  private TimerService timerService;

  @Schedule(second = "0", minute = "*", hour = "*")
  public void cancelTimers() {
    System.out.println("cancelTimers()");
    for (Timer timer : timerService.getTimers()) {
      System.out.println("schedule gone!");
      timer.cancel();
    }
  }

  @Schedule(second = "*", minute = "*", hour = "*")
  public void tick() {
    System.out.println("tick");
  }
}

希望这有帮助! :)

答案 1 :(得分:2)

访问TimerService#getTimers()只会返回此特定EJB的计时器。没有标准化的方法来访问容器中的所有计时器(实际上,这是一个增强请求:http://java.net/jira/browse/EJB_SPEC-47)。

我猜你需要使用一些Glassfish专有解决方案并摆弄它们的内部(如果它甚至可能)。我问GlassFish mailing list我是不是你。