Я читаю EJB specification
и я запуталась противоречием с моей точки зрения, в частности, в отношении на пути к Container
ведет себя, когда System Exception
брошено в методе жизненного цикла обратного вызова Singleton Bean
.System Исключение в Singleton EJB
Раздел 12.3.1:
Исключение времени выполнения выброшен любым жизненным циклом перехватчик обратного вызова метод вызывает экземпляр компонента и его перехватчики быть отброшены после перехватчик цепи unwindsce и любого связанного с ним перехватчик экземпляров отбрасываются (за исключением Singleton Beans).
Раздел 4.8.4:
Ошибки, возникающие во время инициализации Singleton считаются фатальными и должны привести к откладки экземпляра Singleton. Возможные ошибки инициализации включают в себя отказ от инъекции, системное исключение , выведенное из метода PostConstruct, или отказ метода транзакции PostConstruct для успешного совершения транзакции.
В отличие от экземпляров других типов компонентов системные исключения, вызванные из бизнес-методов или обратных вызовов Singleton, не приводят к уничтожению экземпляра Singleton .
Итак, что верно в соответствии с разделом 4.8.4? Если System Exception
выбрасывается в метод @PostConstruct
или метод Interceptor
@PostConstruct
- это Bean
отбрасывается? Я пробовал это, выбрасывая EJBException
, и результатом было то, что инициализация Beans завершилась неудачно.
Еще более удивительным является тот факт, что, когда бросали EJBException
из Singleton Bean
Бизнес Метод, клиент получил Exception
и никакой другой метод не был дополнительно выполнен. Можно ли предположить, что экземпляр Bean был отброшен? В соответствии с Спецификацией, которая не должна приводить к уничтожению Bean Instance
. Что верно в обоих случаях?
, пожалуйста, предоставьте некоторый код того, что вы тестируете, надеюсь, с комментариями о том, что вы ожидаете, и какие AS вы используете (только для целей тестирования)? – Sergio
Я могу опубликовать некоторый код (как только я снова получаю доступ к моей среде Java EE), но тема довольно теоретическая.Я хочу знать, является ли системное исключение в методе @PostConstruct в компоненте Singleton Bean причиной dirscarding Bean контейнером. Именно этот случай описан в двух «цитатах», приведенных в моем вопросе, и, с моей точки зрения, они противоречат друг другу. – arjacsoh