лучший способ развертывания приложения jetty — слишком много вариантов?

#jetty #embedded-jetty

#jetty #встроенный-jetty

Вопрос:

Мне нужно развернуть рабочую версию веб-приложения. До сих пор я тестировал его с. mvn jetty:run Я уже использовал реальные установки jetty раньше, но они кажутся необходимыми только тогда, когда вы хотите обслуживать несколько wars на одном веб-сервере. Однако в некотором смысле это самый простой способ ( mvn package и скопируйте его).

Мои другие варианты — создать запускаемый jar ( mvn assembly:single ), который запускает сервер, но мне нужно настроить конфигурацию так, чтобы статический контент src/main/webapp обслуживался и web.xml его можно было найти.

Я также читал о «runnable war». Это может избежать src/main/webapp проблемы, поскольку эти файлы уже размещены в warfile. Однако я не знаю, как это сделать.

Я мог бы также придерживаться mvn jetty:run , но это не кажется лучшим вариантом, потому что тогда производственное развертывание привязано к коду, а не к отдельному jar.

Есть мнения о наилучшем способе или плюсах и минусах этих разных подходов? Я пропустил некоторые параметры?

Ответ №1:

Jetty-console-maven-plugin от simplericity прост в использовании и отлично работает. При запуске mvn package вы получаете две войны — одну, которая является исполняемой. java -jar mywar.war --help предоставляет использование, которое позволяет немного настроить (порт и т. Д.).

Ответ №2:

Я не очень хорошо знаком с maven, но именно так мы подходим к развертыванию с использованием встроенного Jetty:

Мы создаем однофайловую JAR с встраиваемым приложением jetty и упакованными необходимыми библиотеками.

Мы развертываем статическое содержимое в файле WAR (который вы также можете упаковать в JAR). Все генерируется ANT-файлом, который:

1) Создайте войну статических файлов (это также создает web.xml ) 2) Копирует WAR в ресурсы приложения 3) Компилирует исполняемый файл JAR

Чтобы заставить встроенный Jetty «находить и обслуживать» ваши статические файлы, добавьте war с WebAppContext в обработчики Jetty:

 Server jetty = new Server(port);
HandlerList handlers = new HandlerList();
WebAppContext staticContentAsWar = new WebAppContext();
staticContentAsWar.setContextPath("/static/");
staticContentAsWar.setWar(resource_Path_to_WAR);
handlers.addHandler(set);
jetty.setHandlers(handlers);
jetty.start();
  

HTH