MartyMcAir
@MartyMcAir

Jetty-maven-plugin классная тулза, или лучше его (*****) не использовать!?

Посмотрел о том какая классная полезняшка jetty-maven-plugin. Встроил в проект как плагин мавена, запустил и работает, класс.

Начал пробовать различные варианты его юза, и тут началось..
(Для удобства просмотра в github Octotree.)

Если использовать jetty c сервлетами и мэппингом юзая @WebServlet аннотацию.
git исходники. Вроде всё работает и всё норм, мэппинг работает, jsp странички открываются и метод forward внутри сервлетов работает.

Если использовать jetty c сервлетами и мэппингом в web.xml git исходники. И вроде тоже всё работает.

Если использовать jetty c сервлетами и мэппингом в web.xml и юзать здесь же аннотации для мэппинга @WebServlet (и + использовать TwitterBootstrap + JSTL tags lib) git исходники.

То мэппинг работает через (firstServlet) web.xml. А мэппинг через @WebServlet (@WebServlet(urlPatterns = {"/forwardServlet"})) - не работает.
Если добавить строки мэппинга в web.xml, на ForwardServlet, - серв вообще не запустится.
+Плюс к этому JSTL, вроде работает, отдельные *.tag блоки подгружаются в jsp страничку, но указание в ссылке ${pageContext.request.contextPath} - это не работает (а должен трансформировать это в contextPath, что указан в настройках приложения).

Ладно т.е. одновременно мэппинг такой и другой совмещать даже, как для примера в Jetty видимо нельзя (тем более что скачав книгу javacodegeeks обнаружил подтверждение, того что в Jetty нельзя их юзать одновременно. А в TomCat было всё норм., и подключив кучу всего, всё работает (юзал IDEA Ultimate подключая через него TomCat) git исходники - да подключив туда jetty-maven-plugin, и попытка запуска через него, конечно же не заработало.).

Ясно мэппинги в Jetty так не работают, понятно, хорошо.
Читая ту книжечку с javacodegeeks в ней же, есть ссылки на исходники примеров приведённых в ней.
Перебрал все примеры. Подключаем наш jetty-maven-plugin, и мэппинг юзаем через @WebServlet, и строго никаких xml вообще ни каких (logback.xml не в счёт), git исходники.

Накидываем сверху в данный пример проекта наши сервлеты, там ещё JSTL и + BootStrap.
Стартует (но contextPath работает почему-то, только после рестарта т.е. киллим его, и по новой mvn jetty:run ).
Заходи на страницу, что содержит JSTL и Bootstrap.. всё работает и всё прекрасно.
Кидаем web.xml в WEB-INF, и правим welcome-file на bootstrap.jsp _ (который от index.jsp мало чем отличается).

В итоге работают ссылки только на jsp страницы, а ${contextPath}, мэппинг на сервлеты магическим образом перестаёт работать.. НО как только удаляем наш web.xml (или переносим в папку в которой он не должен быть.), соответственно подгружаться будет первой index.jsp, и опять всё работает!

Ну и как его использовать, что бы при этом можно было юзать web.xml?
Или лучше попробовать другие вариации embedded сервов, менее глючные, какие варианты, что вы используете?

(Spring Boot - да знаю, неплох, а ещё варианты?
Чтоб как jetty-maven-plugin, но без его глюков.
Play Framework - не годится, долгая история, в общем он не Java Way.)

Или я просто jetty-maven-plugin, неправильно готовлю? (Если это так, то какой пример проекта на jetty является эталонным, и где на него посмотреть?)
  • Вопрос задан
  • 116 просмотров
Пригласить эксперта
Ответы на вопрос 1
mayton2019
@mayton2019 Куратор тега Java
Bigdata Engineer
Прежде чем ругать jetty - сравни работу своих сервлетов с Apache Tomcat. Может ты там боков наделал?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы