java.lang.IllegalArgumentException:过滤器映射必须指定

发布于 2024-12-22 01:51:23 字数 1148 浏览 2 评论 0原文

我使用 next web.xml 创建了非常简单的 REST 应用程序:

<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>

我使用 servlet 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)

我不知道问题出在哪里......我在代码中没有使用过滤器,我该如何修复它?

I've created very simple REST app with next 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>

I'm using servlet 3.0 specification and Tomcat 7.0.23. Unfortunately it fails all time:

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)

I don't imagine where problem is... I don't use filters in my code, how can I fix it?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

残龙傲雪 2024-12-29 01:51:23

这与 RESTEasy 问题 577 相关。要解决此问题,您需要将 metadata-complete="true" 添加到 /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 显然包含不正确/不完整声明的过滤器。

This is related to RESTEasy issue 577. To fix this, you need to add metadata-complete="true" to the <web-app> root declaration of your /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>

This way Tomcat will assume that the /WEB-INF/web.xml is complete and won't scan JARs for additional metadata information in web.xml fragments which in case of RESTEasy apparently contain incorrectly/incompletely declared filters.

〆凄凉。 2024-12-29 01:51:23

当然,添加 'metadata-complete="true"' 将阻止任何其他 jar 为 web.xml 做出贡献,包括 RichFaces 和 Seam。最好从您的部署中排除有问题的 JAR 文件。就我而言,是 async-http-servlet-3.0-2.3.3.Final.jar 冒犯了。

Of course, adding 'metadata-complete="true"' will block any other jars from contributing to web.xml, including RichFaces and Seam. It is better to exclude the offending JAR file from your deployment. In my case, it was the async-http-servlet-3.0-2.3.3.Final.jar who offended.

谁的新欢旧爱 2024-12-29 01:51:23

这是 Tomcat 7(版本 <7.0.28)中的一个错误,请参阅对类似问题的回复,以及< a href="https://issues.apache.org/bugzilla/show_bug.cgi?id=53354" rel="nofollow noreferrer">链接的 Tomcat 7 bugzilla 票。

It's a bug in Tomcat 7 (version < 7.0.28), see that reply to a similar question, and the linked Tomcat 7 bugzilla ticket.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文