Исключения в EJB Кряжев Василий
Рассматриваемые темы Обзор исключений в Java Исключения в EJB 1-2
Рассматриваемые темы Обзор исключений в Java Проверяемые исключения Непроверяемые исключения Исключения в EJB 1-3
Проверяемые исключения За обработкой проверяемых (checked) исключений следит компилятор. Правило обработай или объяви Код помещен в блок try catch Сигнатура метода содержит блок throws 1-4
Непроверяемые исключения За обработкой непроверяемых (unchecked) исключений компилятор не следит java.lang.RuntimeException java.lang.Error 1-5
Рассматриваемые темы Обзор исключений в Java Исключения в EJB Системные исключения (system exceptions) Исключения уровня приложения (application exceptions) Выбрасывание и обработка исключений 1-6
Типы исключений в EJB Системные исключения (system exceptions) Исключения уровня приложения (application exceptions) 1-7
System Exception Системные исключения идентифицируют ошибки на уровне инфрастуктуры java.rmi.RemoteException java.lang.RuntimeException не помеченные как ошибки уровня приложения (application exceptions) 1-8
Application Exception Исключения уровня приложения идентифицируют что произошла ошибка бизнес логики Часть дизайна приложения, доставляются клиенту как есть Могут быть как проверяемые так и непроверяемые, помечаются или через в дескрипторе развертывания 1-9
ApplicationException { boolean rollback() default false; (rollback = true) public class BadCommentsException extends RuntimeException { public BadCommentsException(String message) { super(message); } Декларирование на основе аннотации: 1-10
Application Exception … java.lang.NullPointerException true Декларирование в дескрипторе развертывания: 1-11 ejb-jar.xml
System Exceptions Откатывает транзакцию Журналирует сообщение об ошибке Уничтожает bean instance Возвращает клиенту подкласс javax.ejb.EJBException или java.rmi.RemoteException Контейнер автоматически обрабатывает системные исключения и всегда: 1-12
Выбрасывание исключения уровня приложения Гарантировать что состояние bean instance останется целостным. Попытка клиента продолжить работу не должна приводить к потере целостности Если для application exception условие отката транзакции не было определено, то перед тем как бросить исключение, нужно пометить транзакцию для отката EJBContext.setRollbackOnly Ответственность Bean Provider: 1-13
Обработка исключений уровня приложения Поймав application exception клиент может продолжить вызывать методы бина Транзакционный клиент может узнать помечена ли транзакция для отката Если клиент это enterprise bean, то можно вызвать EJBContext.getRollbackOnly Другие типы клиентов могут воспользоваться UserTransaction.getStatus 1-14
Лабораторная EJB Exception Handling 1-15
Выводы Модель обработки исключений в EJB Чем отличаются системные исключениями от исключений уровня приложения Как использовать чтобы контролировать обработку исключений в EJB Как контролировать транзакционное поведение при возникновении исключений В этом модуле, мы узнали: 1-16
Недоделки Не выдержан темп Большие заголовки и отсутствие подзаголовков Добавить - жизненный сценарий в качестве иллюстрации и подробный разбор 1-17