Посмотрел о том какая классная полезняшка
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 является эталонным, и где на него посмотреть?)