Нет, похоже, что интерфейс ServletContextListener
был не, предназначенный для предотвращения запуска веб-приложения.
Как this Answer состояния, сервлетов спецификации говорит ServletContextListener
может каким-то образом отключить доступ к веб-приложению, когда исключение встречается. Это слово may
означает необязательный, не требуется. Кроме того, спецификация точно определяет, что означает остановка доступа к веб-приложению.
По-видимому, реализованное поведение в различных веб-контейнерах варьируется в широких пределах. Некоторые ничего не делают, некоторые регистрируют его и перемещаются дальше, некоторые препятствуют развертыванию веб-приложения.
Мой опыт работы с Tomcat 8.0.33 ... Ввод throw new RuntimeException ("bogus stop servlet ");
в методе contextInitialized
предотвращает развертывание приложения. Консоль во время развертывания в отчетах IDE сообщает «FAIL - развернутое приложение в контексте контекста/но контекст не запускался». К сожалению, ни эта консоль, ни ни одна из журналов не записывают отчет о фактическом исключении. Поэтому, если вы выбросите несколько исключений из одного или нескольких слушателей, отладка не будет очевидна.
Как упоминалось в другом месте в переполнении стека, наиболее надежным решением, вероятно, является то, что ваш ServletContextListener
отмечает успех или неудачу с переменной флагов, хранящейся в сеансе сервлета. Затем получите код сервлета и проверьте этот флаг. Тогда ваш код сервлета определит соответствующий курс действий. Ваше веб-приложение будет развернуто, но ваш собственный сервлет (ы) может выбрать ничего не делать и отправить код ошибки HTTP.
Похожие вопросы:
Примечание: при добавлении или редактировании ServletContextListener
вам может потребоваться выполнить операцию «очистить и построить» в вашем проекте. Функция «горячей» замены или развертывания во время разработки вашей среды разработки не может воспринимать новый или измененный прослушиватель. Отслеживайте свой код или выполняйте некоторые протоколирования для проверки.
Вы пытались выбросить исключение? –