Error en el web.xml

jarva
11 de Noviembre del 2005
Hola,
Mi web.xml está construido de la siguiente manera:
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<distributable/>
<servlet>
<servlet-name>Controlador</servlet-name>
<servlet-class>com.intranet.partes.mwc.PartesCTL</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<error-page>
<exception-type>IllegalAccessError</exception-type>
<location>/error.jsp</location>
</error-page>
<error-page>
<exception-type>SendFailedException</exception-type>
<location>/error.jsp</location>
</error-page>

<servlet-mapping>
<servlet-name>Controlador</servlet-name>
<url-pattern>/Controlador</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>30</session-timeout>
</session-config>
</web-app>

Pero al arrancar Tomcat 4.1, me da el siguiente error:
RAVE: Parse Error at line 23 column 11: The content of element type "web-app" must match "(icon?,display-name?,description?,distributable?,context-param*,filter*,filter-mapping*,listener*,servlet*,servlet-mapping*,session-config?,mime-mapping*,welcome-file-list?,error-page*,taglib*,resource-env-ref*,resource-ref*,security-constraint*,login-config?,security-role*,env-entry*,ejb-ref*,ejb-local-ref*)".
org.xml.sax.SAXParseException: The content of element type "web-app" must match "(icon?,display-name?,description?,distributable?,context-param*,filter*,filter-mapping*,listener*,servlet*,servlet-mapping*,session-config?,mime-mapping*,welcome-file-list?,error-page*,taglib*,resource-env-ref*,resource-ref*,security-constraint*,login-config?,security-role*,env-entry*,ejb-ref*,ejb-local-ref*)".
at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
at org.apache.xerces.util.ErrorHandlerWrapper.error(Unknown Source)
at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
at org.apache.xerces.impl.dtd.XMLDTDValidator.handleEndElement(Unknown Source)
at org.apache.xerces.impl.dtd.XMLDTDValidator.endElement(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanEndElement(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at org.apache.commons.digester.Digester.parse(Digester.java:1495)
at org.apache.catalina.startup.ContextConfig.applicationConfig(ContextConfig.java:282)
at org.apache.catalina.startup.ContextConfig.start(ContextConfig.java:639)
at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:243)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:166)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:3493)
at org.apache.catalina.startup.HostConfig.checkWebXmlLastModified(HostConfig.java:624)
at org.apache.catalina.startup.HostConfig.run(HostConfig.java:1015)
at java.lang.Thread.run(Thread.java:534)

¿Cual es lo que tengo mal configurado?
Cuando, en vez de Tomcat 4, utilizo Tomcat 5, ya no me da ningún error :-S, pero estoy en la obligación de utilizar la versión 4.

Muchas gracias

nicokiki
11 de Noviembre del 2005
Hola!!!

Lo q pasa es q no estas respetando el DTD. En la exception te salta el error y te lo arregle, pero la cosa es q entiendas algo de DTD por si te pasa de nuevo..
Ahi va:
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<distributable/>
<servlet>
<servlet-name>Controlador</servlet-name>
<servlet-class>com.intranet.partes.mwc.PartesCTL</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Controlador</servlet-name>
<url-pattern>/Controlador</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>30</session-timeout>
</session-config>
<error-page>
<exception-type>IllegalAccessError</exception-type>
<location>/error.jsp</location>
</error-page>
<error-page>
<exception-type>SendFailedException</exception-type>
<location>/error.jsp</location>
</error-page>
</web-app>

Ojo q el orden IMPORTA y mucho!!!!!

Salu2!!!!!!

P.D.: espero q sirva

Jarva
11 de Noviembre del 2005
Muuuchas gracias! Esa era la solución. Me compliqué tanto la vida que no me fui al orden...gracias por tus consejos :-)