#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