我们知道在servlet 2.3中添加了过滤器,但看起来有些应用服务器不是web.xml的验证,但在JBoss中会导致异常。例如,在WebSphere 7(7.0.0.21)中,您可以部署.war,其中在web.xml中使用2.2 dtd声明的过滤器。
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN" "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">
<web-app id="WebApp">
<filter>
<filter-name>FooFilter</filter-name>
<filter-class>com.test.filter.FooFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>FooFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
问题:这是 WebSphere 7 中的缺陷还是设计上的?
答案 0 :(得分:1)
WebSphere Application Server不对web.xml执行DTD或XSD验证。因为许多应用程序希望在XML文件格式错误的情况下运行,因此设计可以处理格式错误的文档,因为其他应用程序服尽管如此,还是对意外元素进行了一些验证,但似乎对web.xml版本2.2和2.3进行了等效处理。我怀疑这也是设计上的,并且由于可能破坏现有的应用程序而不太可能改变。