Сервлет 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>
Другие вопросы по тегам