Лучший способ выполнить встроенную Jetty

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

Итак, как мне выполнить мой main (), который находится на войне, для запуска сервера Jetty? Я просмотрел примеры, но в них нет такой настройки, которая мне кажется нормальной.

Нужно ли сообщать серверу Jetty, где находится файл войны (файл войны, который оказывается там, где он также находится), или Jetty по умолчанию находит и проверяет WEB-INF для различных файлов XML, которые обрабатывает Jetty?

Я вижу нечто близкое к этому с помощью подключаемого модуля Jetty Maven , но все согласны с тем, что этот плагин не для продакшена.


person Jose Martinez    schedule 07.08.2014    source источник


Ответы (2)


Мне удалось легко настроить исполняемый файл с помощью подключаемого модуля Maven под названием Jetty Console Maven Plugin. В Интернете не так много документации о том, как его использовать. Автор, simplercity, снял в своем блоге запись о том, как его использовать. Но я нашел одно сообщение в stackoverflow. о том, как его использовать.

Текущая версия этого плагина - 1.55. Его можно найти здесь. Одна проблема, с которой я столкнулся, заключается в том, что хотя большинство артефактов, необходимых для этого плагина, находятся в версии 1.55, один из них, jetty-console-ajp-plugin, находится в версии 1.53. Это вызвало у меня проблему, потому что, когда все остальные плагины были установлены на 1.55, у меня возникла ошибка исключения подписывающего лица, когда я попытался выполнить свою войну. Я нашел решение в ответе на stackoverflow. Исправление заключалось в использовании только версии 1.53 всех плагинов. Возможно, есть лучшее решение, которое позволит вам использовать 1.55 с 1.53 ajp-plugin. В остальном плагин работал отлично, и я умоляю автора плагина Jetty Console Maven либо принести его сообщение в блоге о том, как его использовать, либо создать для него новую документацию.

person Jose Martinez    schedule 10.08.2014
comment
Спасибо, Хосе! Вы связались с моим сообщением, теперь я использовал его, чтобы исправить проблему 1.55. Большое спасибо. - person Rafael Sanches; 01.04.2016

Чтобы запустить автономное приложение на Java, не нужно вести войну. Банки достаточно. War содержит информацию о том, как веб-архив / приложение следует развернуть в J2EE-контейнере. Когда вы запускаете его отдельно, в этом нет необходимости. Достаточно будет основного метода. Вы можете ознакомиться с плагином maven shade. Это поможет вам создать работоспособную банку.

(В качестве примечания: запускаемый jar - это довольно простая вещь. Файл манифеста файла jar должен содержать ключ MainClass, и это все.)

person froderik    schedule 07.08.2014
comment
Просмотрите эту ссылку непосредственно на Jetty. В этом примере они используют войну как способ реализации аннотаций. Таким образом, похоже, что они продолжают возвращаться к файлу WAR при реализации стандартных функций сервлетов. - person Jose Martinez; 08.08.2014
comment
Да, имеет смысл иметь работающий файл войны. Таким образом, вы можете использовать для обеих целей. (Кроме того, пристани все равно нужна большая часть материала, обычно содержащегося в файле войны. Я думаю, это зависит от того, как настроен основной метод и какое это приложение.) - person froderik; 08.08.2014