Сервлет Jersey находит ресурсы, когда url-pattern равен /*, но не может найти ресурсы, когда url-pattern равен /
Я пишу веб-сервис, используя Jersey 2.17 с Tomcat 8.
В файле web.xml, когда я меняю шаблон URL на /*, я могу подключиться к веб-сервису и получить ответ. Однако, когда я изменяю шаблон URL на / тогда, я всегда получаю 404 Error (ресурс не найден).
Не работает
<servlet-mapping>
<servlet-name>jersey-servlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
Работа идеально
<servlet-mapping>
<servlet-name>jersey-servlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
Мой web.xml не содержит никаких других сопоставлений сервлетов или фильтров, кроме этого.
<servlet>
<servlet-name>jersey-servlet</servlet-name>
<servlet-class>
org.glassfish.jersey.servlet.ServletContainer
</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>com.bandi.rest</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
Есть ли другие конфигурации, необходимые для этой работы? Я не могу позволить себе использовать /* в качестве отображения сервлета, потому что мне нужны определенные фильтры для запуска до запуска этого сервлета. Если фильтр не работает, то вызов сервлета не должен продолжаться.
Поэтому я не хочу отменять какие-либо сопоставления, которые уже присутствуют.
1 ответ
Попробуй использовать filter
вместо servlet
в web.xml
как это -
<filter-mapping>
<filter-name>jersey-servlet</filter-name>
<url-pattern>/</url-pattern>
</filter-mapping>