лучший способ развернуть приложение причала - слишком много вариантов? - PullRequest
4 голосов
/ 29 октября 2011

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

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

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

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

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

Ответы [ 2 ]

2 голосов
/ 24 декабря 2011

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

1 голос
/ 22 декабря 2011

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

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

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

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

Чтобы встроенная Jetty «находила и обслуживала» ваши статические файлы, добавьте войну с 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

...