Начиная со спецификации Java EE 6.0 исключительные ситуации приложения по умолчанию наследуются
классами исключительных ситуаций производных классов.
Это поведение настраивается в аннотации @ApplicationException и в элементе <application-exception>
файла ejb-jar.xml.
Это правило помечает аннотацию javax.ejb.ApplicationException без
атрибута inherited и элемент <application-exception>
без элемента inherited в файле ejb-jar.xml.
@ApplicationException: |
@ApplicationException(rollback = true) public class ExceptionA extends Exception { } public class ExceptionB extends ExceptionA { } |
|
<application-exception> <exception-class>ExceptionA</exception-class> <rollback>true</rollback> </application-exception> |
|
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 добавлен атрибут inherited со значением по умолчанию true,
поэтому все производные классы унаследованы от ApplicationException.
Можно сохранить поведение Java EE 5.0 следующими способами:
inherited = false в аннотацию.false
в подэлементе inherited элемента application-exception. Если есть файл описания версии 3.0, необходимо выполнить его миграцию на версию 3.1, включая схему XSD,
и указать значение false в подэлементе inherited элемента application-exception.com.ibm.websphere.ejbcontainer.EE5Compatibility контейнера
EJB WebSphere для сохранения совместимости с Java EE 5.Дополнительная информация: