Хобрук: Ваш путь к мастерству в программировании

Jetty: определить, не удалось ли запустить веб-приложение

Я запускаю встроенный экземпляр Jetty, содержащий одно веб-приложение. Веб-приложение запускается при запуске. Я хотел бы знать, как определить, создает ли contextInitialized исключение в веб-приложении.

Когда веб-приложение создает исключение, Server. start() не работает, а server.isRunning() возвращает true. Есть ли способ прослушивать исключения веб-приложений из-за пределов контейнера?

27.12.2011

Ответы:


1

Отвечая на мой собственный вопрос.

Установка WebAppContext.setThrowUnavailableOnStartupException(true) заставляет сервер распространять любые исключения веб-приложений на Server.start(). Я предполагаю, что можно также вызвать WebAppContext.isFailed() после запуска сервера для проверки отдельных контекстов.

27.12.2011
  • В Jetty 9 метод WebAppContext.setThrowUnavailableOnStartupException(true), но вы можете проверить, доступно ли веб-приложение с помощью webappContext.isAvailable() и возможную ошибку при запуске с помощью webappContext.getUnavailableException(). 19.12.2013
  • Метод requestAppGoal org.eclipse.jetty.deploy.DeploymentManager не создает повторно исключение, он просто регистрирует трассировку стека исключений, сгенерированную org.eclipse.jetty.webappWebAppContext.java.doStart(). Итак, как он может распространиться на Server.start()? 06.12.2017

  • 2

    Я наткнулся на это, пытаясь заставить это работать для не встроенного решения. Если кто-то находится в похожей лодке, решение для этого случая — создать WEB-INF/jetty-env.xml со следующим содержимым:

    <?xml version="1.0"  encoding="ISO-8859-1"?>
    <!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://www.eclipse.org/jetty/configure.dtd">
    
    <Configure class="org.eclipse.jetty.webapp.WebAppContext">
        <Set name="throwUnavailableOnStartupException">true</Set>
    </Configure>
    

    Как и ожидалось, сервер не запустится из-за исключения.

    06.08.2013
  • Примечание: этот DTD недействителен для Jetty 9.3+. 14.03.2017
  • Новые материалы

    Что такое структура данных?
    Структура данных хранит и извлекает данные. Все, что обеспечивает эти две функции, является структурой данных . Период. Вы можете пропустить оставшуюся часть статьи, если ответ..

    мои январские чтения по программированию
    Эрик Эллиот Программирование приложения JavaScript Эл Свейгарт «Автоматизируйте скучные вещи с помощью Python» Прогрессивное веб-приложение Google..

    Создание ассоциаций секвелизации с помощью инструмента командной строки Sequelize
    Sequelize - популярный, простой в использовании инструмент объектно-реляционного сопоставления (ORM) JavaScript, который работает с базами данных SQL. Довольно просто начать новый проект с..

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

    Введение в машинное обучение для обнаружения аномалий (часть 1)
    Тщательно созданный, тщательно спроектированный ресурс для специалистов по данным. Часть 1 Главы 03 из Руководства по машинному обучению для обнаружения аномалий Внимание! Прежде чем вы..

    Начало работы с Pulumi в Digital Ocean
    Цифровой океан (ДО) — отличная альтернатива многим другим поставщикам облачных услуг. DO предоставляет простой и понятный пользовательский интерфейс, упрощающий управление инфраструктурой и..

    #Day68 из #100days_of_coding
    Вчера был мой 68-й день кодинга. я решил один вопрос Проблема: Разбить двоичную строку на подстроки с равным количеством нулей и единиц Дана двоичная строка str длины N . Задача состоит..