我使用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)。
答案 0 :(得分:0)
您是否在托管bean中捕获或抛出异常?如果自定义异常继承自“异常”,则尝试使用throws子句而不是使用try / catch(假设这是你正在做的事情)。
如果您的自定义异常继承自“RuntimeException”,那么您不必使用try / catch或“throws”子句。
这就是我正在做的事情。除此之外,我不知道。