相关疑难解决方法(0)

如何使用WAR中的注释定义servlet过滤器的执行顺序

如果我们在WAR自己定义特定于webapp的servlet过滤器web.xml,那么过滤器的执行顺序将与它们在中定义的顺序相同web.xml.

但是,如果我们使用@WebFilter注释定义这些过滤器,过滤器的执行顺序是什么,我们如何确定执行顺序?

web.xml servlets java-ee servlet-filters order-of-execution

163
推荐指数
2
解决办法
10万
查看次数

java.lang.IllegalArgumentException:过滤器映射必须指定<url-pattern>或<servlet-name>

我用下一个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>
Run Code Online (Sandbox Code Playgroud)

我正在使用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)
Run Code Online (Sandbox Code Playgroud)

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

tomcat servlets resteasy servlet-filters

7
推荐指数
1
解决办法
4224
查看次数

java.lang.IllegalArgumentException:过滤器映射指定了未知的过滤器名称 &lt;filtername

我收到以下异常

Caused by: java.lang.IllegalArgumentException: Filter mapping specifies an unknown filter name MyFilter
    at org.apache.catalina.core.StandardContext.validateFilterMap(StandardContext.java:3174)
    at org.apache.catalina.core.StandardContext.addFilterMap(StandardContext.java:3139)
    at org.apache.catalina.deploy.WebXml.configureContext(WebXml.java:1343)
    at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1362)
    at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:889)
    at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:386)
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
    at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5472)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)
    ... 10 more
Run Code Online (Sandbox Code Playgroud)

该过滤器存在于 jar 文件中,该文件是交付的 war 的一部分。

@WebFilter(filterName="MyFilter",
        urlPatterns = {"/page/*"})
public class myFilter implements Filter {
Run Code Online (Sandbox Code Playgroud)

谁能告诉我我必须做什么才能找到过滤器?

它不是问题java.lang.IllegalArgumentException: The servlet named [X] and [Y] are都映射到 url-pattern [/url] 的重复,这是不允许的,因为它是一个非常不同的错误消息

mapping servlets illegalargumentexception servlet-filters

2
推荐指数
1
解决办法
8649
查看次数