WebSphere 7.0赢得';t运行根URL的筛选器

WebSphere 7.0赢得';t运行根URL的筛选器,websphere,servlet-filters,websphere-7,Websphere,Servlet Filters,Websphere 7,我有一个WAR文件,它定义了在所有URL上运行的筛选器: <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> ... <filter> <filter-name>OurRedirectServletFilter</filter-name

我有一个WAR文件,它定义了在所有URL上运行的筛选器:

<!DOCTYPE web-app PUBLIC
    "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    "http://java.sun.com/dtd/web-app_2_3.dtd">
...
<filter>
    <filter-name>OurRedirectServletFilter</filter-name>
    <filter-class>com.mycompany.RedirectServletFilter</filter-class>
</filter>
...
<filter-mapping>
    <filter-name>OurRedirectServletFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

...
我们的服务过滤器
com.mycompany.RedirectServletFilter
...
我们的服务过滤器
/*
该过滤器设计用于执行从“便利”URL到相应的“实际”URL的一些重定向,但我认为这与问题无关

在WebSphere 7.0上,此筛选器不针对根URL的请求运行,例如
/ctxroot
/ctxroot/
;相反,我只得到了404响应。无论
blah
是有效路径还是无效路径,它都会为
/ctxroot/blah
运行

我已经尝试为URL模式
/
添加额外的过滤器映射,但是我得到了相同的行为

我在base WAS 7.0.0.0上进行了测试,并应用了最新的补丁包,即WAS 7.0.0.27


该过滤器在WAS8.5和我非常确定的WAS8.0以及我尝试过的所有版本的WebLogic、JBoss和Tomcat上都能正常工作。这似乎是WAS7.0的一个bug,但我仍然希望找到一个解决方法。有人知道吗?

我最终查看了404错误响应的主体,并看到了错误代码SRVE0190E,这导致了我的错误。问题是,默认情况下,对于与不存在的资源相对应的URL,不会调用筛选器(尽管我发誓我对上下文根以外的URL进行了测试,并且调用了我的筛选器)

在这种情况下,可以通过设置自定义属性来配置WebSphere以调用过滤器,如链接页面中所述:

com.ibm.ws.webcontainer.invokefilterscompatibility=true
我还发现,对于上下文根URL,在
web.xml
中设置映射到现有资源的
welcome file
条目会导致调用过滤器:

<welcome-file-list>
    <welcome-file>fakehome.html</welcome-file>
</welcome-file-list>

fakehome.html