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 является эталонным, и где на него посмотреть?)
  • Вопрос задан
  • 66 просмотров
Пригласить эксперта
Ответы на вопрос 1
@mayton2019
Ent. Software engineer. Oracle. SQL. BigData.
Прежде чем ругать jetty - сравни работу своих сервлетов с Apache Tomcat. Может ты там боков наделал?
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
ОТП Банк Москва
от 240 000 до 270 000 ₽
Sportmaster Lab Санкт-Петербург
от 150 000 ₽
Эвотор Москва
от 180 000 до 250 000 ₽
16 янв. 2021, в 06:41
500 руб./за проект
16 янв. 2021, в 00:06
3000 руб./за проект
15 янв. 2021, в 23:54
15000 руб./за проект