ApplicationException包装在EJBTransactionRolledBackException中?

时间:2012-01-06 19:27:31

标签: java exception-handling transactions ejb-3.0

我使用JSF 2和EJB 3。

我认为我的用例非常简单:

JSF支持bean在注入的ejb上调用方法。 ejb可以抛出自定义异常。当异常发生时,我希望回滚事务并在我的JSF bean中捕获异常(因此它可以处理用户)。

所以我使用@ApplicationException(rollback = true)注释了我的自定义异常并将其从我的ejb方法中抛出。

但我的问题是我的自定义异常永远不会进入jsf bean。相反,它包含在EJBTransactionRolledBackException中。

如果我使用@ApplicationException(rollback = false)注释我的异常,那么事务不会回滚,并且JSF bean会捕获异常。

是否有意图回滚事务并抛出应用程序异常可捕获?

可能是玻璃鱼特有的吗? (我正在使用glassfish 3.1.1)。

1 个答案:

答案 0 :(得分:0)

您是否在托管bean中捕获或抛出异常?如果自定义异常继承自“异常”,则尝试使用throws子句而不是使用try / catch(假设这是你正在做的事情)。

如果您的自定义异常继承自“RuntimeException”,那么您不必使用try / catch或“throws”子句。

这就是我正在做的事情。除此之外,我不知道。