Проверка логики наследования исключительных ситуаций приложения EJB

Начиная со спецификации Java EE 6.0 исключительные ситуации приложения по умолчанию наследуются классами исключительных ситуаций производных классов. Это поведение настраивается в аннотации @ApplicationException и в элементе <application-exception> файла ejb-jar.xml.

Это правило помечает аннотацию javax.ejb.ApplicationException без атрибута inherited и элемент <application-exception> без элемента inherited в файле ejb-jar.xml.


Например, правило помечает следующую аннотацию @ApplicationException:
< span class="Code"> @ApplicationException(rollback = true)
public class ExceptionA extends Exception {
}

public class ExceptionB extends ExceptionA {
}

Правило также помечает элемент <application-exception> в файле ejb-jar.xml (см. следующий пример).
< span class="Code"> < application-exception>
      < exception-class>ExceptionA< /exception-class>
      < rollback> true < /rollback>
</application-exception>


Исключительные ситуации в файле ejb-jar.xml могут быть реализованы в приложении (см. следующий пример).
< span class="Code" > public class ExceptionA расширяет исключительную ситуацию {
}

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 следующими способами:

Дополнительная информация: