java.lang.IllegalArgumentException: отображение фильтра должно указывать либо <url-pattern>, либо <servlet-name> - PullRequest
7 голосов
/ 21 декабря 2011

Я создал очень простое приложение REST со следующим web.xml:

<context-param>
    <param-name>resteasy.scan</param-name>
<param-value>true</param-value>
</context-param>

<listener>
    <listener-class>org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap</listener-class>
</listener>

<servlet>
    <servlet-name>Resteasy</servlet-name>
    <servlet-class>org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>Resteasy</servlet-name>
    <url-pattern>/rest/*</url-pattern>
</servlet-mapping>

Я использую спецификацию сервлета 3.0 и Tomcat 7.0.23.К сожалению, он все время терпит неудачу:

Caused by: java.lang.IllegalArgumentException: Filter mapping must specify either a <url-pattern> or a <servlet-name>
    at org.apache.catalina.core.StandardContext.validateFilterMap(StandardContext.java:2995)
    at org.apache.catalina.core.StandardContext.addFilterMap(StandardContext.java:2954)

Я не представляю, где проблема ... Я не использую фильтры в своем коде, как я могу это исправить?

Ответы [ 3 ]

12 голосов
/ 21 декабря 2011

Это связано с RESTEasy, проблема 577 .Чтобы это исправить, вам нужно добавить metadata-complete="true" к корневому объявлению <web-app> вашего /WEB-INF/web.xml.

<web-app 
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    version="3.0" metadata-complete="true">

    <!-- Config here. -->

</web-app>

. Таким образом, Tomcat будет считать, что /WEB-INF/web.xml завершен, и не будет сканироватьJAR-файлы для дополнительной информации метаданных во фрагментах web.xml, которые в случае RESTEasy содержат явно / не полностью объявленные фильтры.

0 голосов
/ 20 февраля 2014

Это ошибка в Tomcat 7 (версия <7.0.28), см. <a href="https://stackoverflow.com/a/10873185/535203">, который отвечает на аналогичный вопрос, и связанный билет Tomcat 7 bugzilla .

0 голосов
/ 22 мая 2012

Конечно, добавление 'metadata-complete = "true"' заблокирует любые другие jar-файлы для участия в web.xml, включая RichFaces и Seam.Лучше исключить нарушающий JAR-файл из вашего развертывания.В моем случае это был async-http-servlet-3.0-2.3.3.Final.jar, который обиделся.

...