1

我使用 AspectJ 在 EJB 环境中执行方法之前进行访问检查,因此我在使用环绕建议的方法之前拦截控制流(我知道也有 EJB 拦截器)。如果访问检查失败,我将抛出 AccessDeniedException。不幸的是,我得到的是一个 EJBException,原因是“AccessDeniedException”。我该如何规避这种行为?

4

1 回答 1

2

这是由系统和应用程序异常之间的差异引起的。这些大致对应于非检查和检查异常。

他们每个人都有一定的属性。系统异常将被包装在 EJBException 中,发生异常的 bean 将被销毁,并且任何挂起的事务都将回滚。

人们通常想要的是一个未经检查的异常,它只会回滚。

您可以通过在您自己的一种异常类型(可以不检查)上使用 @ApplicationException 来创建这样一个,然后相应地设置注释的属性。

于 2012-11-20T09:25:17.100 回答