我有一个 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>
该过滤器旨在执行一些从“方便”URL 到相应“实际”URL 的重定向,但我认为这与问题无关。
在 WebSphere 7.0 上,此过滤器不会针对对根 URL 的请求运行,例如/ctxroot
or /ctxroot/
; 相反,我只收到 404 响应。它确实运行/ctxroot/blah
,无论blah
是有效还是无效路径。
我尝试为 URL 模式<url-pattern>/</url-pattern>
和添加额外的过滤器映射<url-pattern></url-pattern>
,但我得到了相同的行为。
我已经在基础 WAS 7.0.0.0 上进行了测试,并应用了最新的修订包,即 WAS 7.0.0.27。
该过滤器在 WAS 8.5 上按预期工作,我很确定在 WAS 8.0 以及我尝试过的每个版本的 WebLogic、JBoss 和 Tomcat 上都可以工作。这似乎是 WAS 7.0 的一个错误,但我仍然想找到一个解决方法。有人知道吗?