【问题标题】:how to disable EJB timer timeout retries on exceptions如何禁用 EJB 定时器超时重试异常
【发布时间】:2016-07-07 16:40:11
【问题描述】:

我在 EJB 3.0 中创建了一个计时器, weblogic 10.3, 而当 timeout 方法中发生异常时,该方法会再次执行多次,异常一直在发生。如何禁用此功能?

【问题讨论】:

标签: java jakarta-ee weblogic-10.x


【解决方案1】:

只要通过 EJB 调用传回 RuntimeException,当前事务就会被标记为回滚。

EJB 计时器是事务性的,因此从计时器方法的 EJB 调用或计时器方法本身引发的任何 RuntimeException 都会导致回滚。

因此,为了防止计时器机制重试计时器,您必须通过在任何 EJB 调用或计时器方法本身抛出上述 RuntimeExceptions 之前捕获它们来防止计时器方法调用链中的任何回滚。

消息驱动的 bean FWIW 中也存在同样的问题。

【讨论】:

  • 另外,从 Timer 调用的 EJB 方法可以标记为与事务隔离 (@RequiresNew),或者仅从 Timer 调用的 EJB 方法中抛出检查异常。由定时器调用的 EJB 抛出的已检查异常被容器忽略。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-19
  • 1970-01-01
  • 2015-04-06
  • 2022-01-24
  • 1970-01-01
相关资源
最近更新 更多