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