我正在使用AspectJ在EJB环境中执行方法之前进行访问检查,因此我在使用around建议的方法之前拦截控制流(我知道也有EJB拦截器)。如果访问检查失败,我将抛出AccessDeniedException。不幸的是,我得到的是一个EJBException,其原因是“AccessDeniedException”。我怎样才能规避这种行为?
答案 0 :(得分:2)
这是由系统和应用程序异常之间的差异引起的。这些大致对应于未经检查和检查的异常。
他们每个人都有一定的属性。系统异常将包装在EJBException中,发生异常的bean将被销毁,任何挂起的事务都将被回滚。
人们经常想要的是一个未经检查的异常,只会进行回滚。
您可以在自己的一个异常类型上使用@ApplicationException(可以不检查),然后相应地设置注释的属性来创建这样的一个。