避免在玻璃鱼上擦掉计时器

避免在玻璃鱼上擦掉计时器,第1张

避免在玻璃鱼上擦掉计时器

我会使用另一种方法。

与其直接从调度的方法中引发异常,不如尝试引入一种间接级别,如下所示:

...@Inject RealWorkHere realImplementation;@Schedule(second = "*/5", minute = "*", hour = "*", persistent = false)public void myTimerMethod(){  try{     realImplementation.myTimerMethodImpl()  }catch (Exception x){   // hopefully log it somewhere  }}...

RealWorkHere
实际实现的bean 在哪里,如:

@Statelesspublic class RealWorkHere{   @TransactionAttribute(REQUIRES_NEW)   public void myTimerMethod() throws Exception {   }}

它具有以下优点:

  • 在容器初始化的事务中不引发异常(从而避免删除)
  • 更好地记录异常
  • 明确划分“真实”业务交易
也可以看看
  • ejb-spec#111:如果在执行计时器回调方法期间引发了应用程序异常,请清除容器的行为


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5506039.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-13
下一篇 2022-12-13

发表评论

登录后才能评论

评论列表(0条)

保存