Встроенное Jetty горячее развертывание - PullRequest
0 голосов
/ 07 апреля 2019

У нас есть приложение, которое запускает встроенный сервер Jetty внутри него.

Требуется, чтобы приложение запускало сервер, а затем мы могли динамически развертывать новые файлы WAR (без вызовов API и т. Д.).

Это поведение довольно простое, если вы используете не встроенную версию - просто отправьте файлы WAR в каталог веб-приложения, и все остальное будет делать, я пытаюсь сделать нечто подобное со встроеннымверсия.

До сих пор я видел несколько предложений:

  1. Jetty 9 (встроенный): добавление обработчиков во время выполнения - но это требуетмне написать cron, который запускает задачу каждые x секунд, а затем сканировать локальный каталог на наличие изменений, очевидно, мне также придется проверять удаление и обновление существующих WAR.Это не кажется слишком сложным, но я нашел несколько классов в Jetty, которые должны делать именно это (см. Вариант 2)

  2. использовать класс DeploymentManager с ScanningAppProvider, которыйПредположим, сканировать папку на наличие изменений с фиксированным интервалом и загружать приложения соответственно.Поначалу это звучит многообещающе, но я не уверен, как связать сервер с менеджером развертывания.Кажется, документов об этом относительно немного, и я ничего не ищу.Ниже я поделюсь своим кодом, чтобы предоставить некоторый контекст

открытый классРуководство в целом, поскольку я впервые использую Jetty, допустим ли второй подход?это похоже на то, что мне нужно, но я не уверен, стоит ли эта проблема, насколько я понимаю, написание задачи cron не кажется слишком сложным по сравнению с настройкой менеджера развертывания, но я могу что-то упустить.

У меня также есть 2 более конкретных вопроса:

a.В не встроенной версии я мог загрузить сервер Jetty без предоставления контекста или обработчиков, почему это не то же самое со встроенной версией?(приведенный выше код выдает сообщение об ошибке - java.lang.NullPointerException: не создается обработчик для приложения ... при инициализации DeploymentManager).Что делать, если я хочу встроенный причал, который не включает в себя никаких обработчиков (как и не встроенная версия)

b.При втором подходе - Как мне привязать сервер к DeploymentManager?нет установленного сервера \ администратора развертывания ни на одном из объектов.

...