有关web.xml配置中的DOCTYPE的问题

最近在调试EC V2.0, web程序中的web.xml继承自EC V1.2的web.xml,这个web.xml文件应该是在Netbeans 3.6自动生成的一个框架上修改得来的。里面有这样的一段配置: 

CODE: SELECT ALL
<!DOCTYPE web-app
  PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
  "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">


从这段配置上来看,似乎程序会到http://java.sun.com/j2ee/dtds/web-app_2_2.dtd去寻找dtd文件,但以前EC V1.2运行在Tomcat 4.1.x上的时候,一直没什么问题,系统就算不能联网,也能正常运行。

但是这种情况在EC 2.0上有点问题。EC 2.0要运行在Tomcat 5.5.23上,今天测试了一下,在断网的情况下,启动tomcat的时候,tomcat在装载EasyCluster的时候,出现了如下的错误:

CODE: SELECT ALL
=[ERROR]2007-04-09 15:54:51,267 [org.apache.struts.action.ActionServlet:1732] The /WEB-INF/web.xml was not found.
java.net.UnknownHostException: java.sun.com
        at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:177)
        at java.net.Socket.connect(Socket.java:519)
        at java.net.Socket.connect(Socket.java:469)
        at sun.net.NetworkClient.doConnect(NetworkClient.java:157)
        at sun.net.www.http.HttpClient.openServer(HttpClient.java:382)
        at sun.net.www.http.HttpClient.openServer(HttpClient.java:509)
        at sun.net.www.http.HttpClient.<init>(HttpClient.java:231)
        at sun.net.www.http.HttpClient.New(HttpClient.java:304)
        at sun.net.www.http.HttpClient.New(HttpClient.java:316)
        at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:817)
        at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:769)
        at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:694)


从这个错误来看,struts无法找到我们的web.xml文件,其实这个文件是存在的,关键错误在于下面一行,无法找到java.sun.com,于是就开始怀疑web.xml文件中上述的一段配置。于是参考了tomcat自带的一个web.xml(位于$CATALINA_HOME/conf/web.xml,这个web.xml是tomcat会自动装载的,也就是说,这里面的配置会影响所有的web应用,tomcat先装载这个web.xml,然后才会去装载每个web app的web.xml,发现这个web.xml中就没有上述的一段配置。 

于是在EC 2.0中,去掉了web.xml中上述的那段配置,再启动tomcat,装载我们的应用,就OK了,当然是在断网的情况下了。 

看来在tomcat 5中,还是有一些地方和4.x不一样的。以后写web.xml看来不能写上那段配置了。
原文地址:https://www.cnblogs.com/super119/p/1933319.html