Ошибка запуска приложения Java EE

Есть ли какой-либо способ предотвратить запуск приложения Java EE, если во время инициализации приложения возникает исключение? Я в основном ищу способ заставить приложение войти в состояние « j2ee.state.failed » (согласно JSR-77 ) после необработанного исключения, выданного из ServletContextListener или bean-компонент Singleton Startup во время инициализации приложения.

Спецификация EJB , по-видимому, указывает, что если во время инициализации компонента Singleton возникает исключение, приложение продолжит запускаться и работать без ошибок; однако только сам bean-компонент может находиться в состоянии, в котором его нельзя вызвать. К сожалению, это не то поведение, которое я ищу.

4.8.4 Singleton Error Обработка

Ошибки, возникающие во время инициализации синглтона, считаются фатальными и должны приводить к сбою. кардинг экземпляра Singleton. Возможные ошибки инициализации включают сбой внедрения, системное исключение, выброшенное из метода PostConstruct , или отказ транзакции, управляемой контейнером, метода PostConstruct , чтобы успешно зафиксировать. Если синглтон не инициализируется, попытки вызова синглтона приводят к исключению, как определено в разделах 3.4.3 и 3.4.4.

Спецификация сервлета немного более двусмысленна в своих требованиях, по-видимому, не требуя поведения контейнера каким-либо конкретным образом, а просто предлагая (посредством использования термина «может»), что веб-модуль продолжает запускаться, но любые запросы должны приведет к внутренней ошибке сервера. Опять же, это, к сожалению, не то поведение, которое я ищу. Почему веб-приложение должно продолжать запускаться и работать, если оно не может обрабатывать какие-либо запросы?

11.6 Исключения прослушивателя

Контейнер может отвечать на все последующие запросы к веб-приложению кодом состояния HTTP 500, чтобы указать ошибка приложения.

По своему опыту я видел, что серверы приложений по-разному обрабатывают это требование. Некоторые контейнеры фактически препятствуют запуску приложения в этих случаях, тогда как другие просто подавляют исключение и отвечают на запросы с ошибками 500, как это предлагается в спецификации.

Я не упускаю из виду какую-либо часть спецификации, которая могла бы предотвратить запускается приложение, если во время инициализации возникает исключение?

14
задан shelley 12 August 2011 в 16:46
поделиться