2014-12-02 2 views
1

Есть контейнер независимый способ, чтобы прервать процесс загрузки приложения, если что-то сбой в ServletContextListener#contextInitializedПрервать загрузки приложения, когда исключение контекста сервлета

Если есть более чем одна заявка была развернута на сервере, другие приложения не должны быть затронуты.

Почему Java не указывает стандартный способ сделать это?

ответ

0

Вы можете бросить исключенную исключение в своем слушателе. Из спецификации:

Некоторые исключения не происходят под стек вызовов другого компонента в приложении. Примером этого является SessionListener, который получает уведомление о том, что сеанс имеет время ожидания и выбрасывает необработанное исключение, или из ServletContextListener, который генерирует необработанное исключение во время уведомления о инициализации контекста сервлета или ServletRequestListener, который генерирует необработанное исключение во время уведомления об инициализации или уничтожении объекта запроса. В этом случае у Разработчика нет возможности обработать исключение.

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

Что это означает, что если вы были бросить, скажем, UnsupportedOperationException от вашего слушателя (или любого слушателя на самом деле), вы могли бы эффективно остановить приложение с вводом в эксплуатацию. Контейнер всегда будет отвечать HTTP-500 (на который вы можете отобразить страницу с ошибкой)

+0

В Tomcat 8.5 показан статус HTTP 404 – weberjn

-1

Исключить исключения в ServletContextListener, установить их как атрибут контекста и бросить ServletException в Servlet.init(), если они есть (во всех сервлетах)).