Мне известны подобные вопросы здесь и здесь .И все же ИМХО проблема еще не полностью покрыта, или, по крайней мере, она все еще не работает гладко для меня: (
Зачем это нужно:
Я хотел бы создать упакованную библиотеку JAR, который будет использоваться как общий компонент в нескольких WebApps, включая в себя логику сервера и соответствующий пользовательский интерфейс (веб-компоненты). Подумайте о UserService
, предоставляющем сервлет / ресурс для вызовов login
и signup
со стороны сервера, имея компоненты пользовательского интерфейса для комплексного решения для любого WebApp во всей экосистеме со стороны клиента.
Пока:
Похоже, это требование точнорассматривается в спецификации Servlet 3.0, имеющей дело с веб-ресурсами сервлетов, найденными в JAR-файлах по пути META-INF/resources
.
Я, похоже, сделал именно так, как было сказано, структурируя ui-components.jar
с META-INF/resources/ui-commons/...
подкорень и настройка следующего в web.xml
:
<servlet>
<servlet-name>ui-commons</servlet-name>
<servlet-class>org.eclipse.jetty.servlet.DefaultServlet</servlet-class>
<init-param>
<param-name>relativeResourceBase</param-name>
<param-value>/WEB-INF/lib/ui-components.jar!META-NF/resources</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>ui-commons</servlet-name>
<url-pattern>/ui-commons/*</url-pattern>
</servlet-mapping>
Это определение приходит до определения сервлета по умолчанию, обслуживающего остальные регистрыUlar WebApp ресурсы, как обычно, обнаруживаются в WAR.
И все же любой запрос ресурсов в этом JAR заканчивается 404.
Версия сервлета - 3.1
.
.Jetty 9.4
.
Это НЕ встроенная Jetty, ничего особенного, но, пожалуйста, обратите внимание на примечание, касающееся плагина maven.
Примечание:
Это может как-тобыть связан с тем фактом, что я сейчас пытаюсь запустить всю эту установку с jetty-maven-plugin
, который обслуживает ресурсы из источников.
- Я пытался опустить указанный JAR в
src/main/resources/WEB-INF/lib...
вручную - безуспешно