检查 EJB 应用程序异常继承的行为更改

从 Java EE 6.0 规范开始,缺省情况下,应用程序异常由子类异常类继承。 该行为在 @ApplicationException 注释或 ejb-jar.xml 文件的 <application-exception> 元素中可配置。

如果 javax.ejb.ApplicationException 注释没有已定义的 inherited 属性,那么该规则将标记该注释,而且它还会标记没有已定义 inherited 元素的 ejb-jar.xml 文件中的 <application-exception> 元素。


例如,该规则将标记以下 @ApplicationException 注释:
@ApplicationException(rollback = true)
public class ExceptionA extends Exception {
}

public class ExceptionB extends ExceptionA {
}

该规则还会标记以下示例中 ejb-jar.xml 中的 <application-exception> 元素:
<application-exception>
    <exception-class>ExceptionA</exception-class>
    <rollback>true</rollback>
</application-exception>


ejb-jar.xml 中的异常可在应用程序中实现,如以下示例中所示:
public class ExceptionA extends Exception {
}

public class ExceptionB extends ExceptionA {
}

在 Java EE 5.0 中,ExceptionB 未被视为 ApplicationException,但在 Java EE 6.0 中 ExceptionB 是 ApplicationException,因为它是从 ExceptionA 类扩展得到的。 Java EE 6.0 添加了缺省值为 trueinherited 属性,因此所有继承类也是 ApplicationException。

可按以下方式保留 Java EE 5.0 行为:

有关更多信息,请参阅以下资源: