Я пытаюсь добавить Jersey2 ContainerRequestFilter в webapp через web.xml. В настоящее время я всегда использую обозначение с сервлет, как описано here:Использование Jersey2 ContainerRequestFilter с фильтрацией в web.xml
<servlet>
<servlet-name>MyApplication</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
...
</init-param>
</servlet>
...
<servlet-mapping>
<servlet-name>MyApplication</servlet-name>
<url-pattern>/myApp/*</url-pattern>
</servlet-mapping>
Теперь в другом случае я не имеет сервлет, но приложение калитки работает на коте, что я хочу использовать фильтр. Так что я пытался использовать альтернативный фильтр нотации, описанный в той же статье, что и выше (пример 4.10):
<filter>
<filter-name>MyApplication</filter-name>
<filter-class>org.glassfish.jersey.servlet.ServletContainer</filter-class>
<init-param>
...
</init-param>
</filter>
...
<filter-mapping>
<filter-name>MyApplication</filter-name>
<url-pattern>/myApp/*</url-pattern>
</filter-mapping>
Я успешно использовал его с фильтром нотации Jersey1, но не могу заставить его работать с фильтром Jersey2 (это более актуально, поэтому я предпочитаю его по сравнению со старым).
К сожалению, я обнаружил, что эта функция довольно бедна. Может ли кто-нибудь помочь, если это может сработать, и если да, то как это сделать?
Почему вы просто не добавляете аннотацию '@ Provider' в фильтр и не позволяете ей получить ее через сканирование так же, как все ваши классы ресурсов будут отсканированы для' @ Path'. См. 4.7.1.2. по вашей ссылке. –
Спасибо за этот намек. Во всяком случае, мой фильтр уже @Provider аннотирован, но у меня есть несколько классов фильтров в пакете, и я не хочу, чтобы все они были применены. Фактически я использовал способ, описанный в 4.7.1.3, по ссылке. Оба дают 404 по запросу ... – tareq