ane*_*rgy 6 java java-ee ejb-3.1
如何确保来自EJB 3.1方法的@Asynchronous方法抛出的异常不会被Future默默地吃掉?
我知道可以使用Future.get方法来检索异常,但它会等到计算完成,如果没有异常发生就会出现问题,你必须等到计算结束.
(更新)
场景非常简单.无状态EJB使用@Asynchronous注释公开其方法,主要用于@Local.AS是JBoss.在计算过程中,可能会发生RuntimeException.如果作业完成,客户可能会或可能不想轮询,但在所有情况下,他们都应该知道是否发生了异常.一种解决方法可以使用某种回调,但我很感兴趣,如果有任何开箱即用的解决方案可用.
您是否考虑过在给定时间后如果没有可用结果(计算未完成),调用Future#get(timeout, timeUnit)返回控制?您还可以在 Future#get() 之前调用 Future#isDone() 以了解处理是否完成。
无论哪种方式,您仍然需要调用 Future#get(-) 来了解发生了什么,并确保异常不会被吞噬。
HTH。
| 归档时间: |
|
| 查看次数: |
1381 次 |
| 最近记录: |