You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by Florent BENOIT <Fl...@objectweb.org> on 2003/11/24 11:10:55 UTC

Elements in web.xml file for 2.4 servlet specification (Tomcat 5)

    Hi,

As you already know, one of the changes of the servlet 2.4 specification 
is that it uses XML schemas.
And with this new schema, there is not anymore a strict order for the 
top level elements in the web.xml file

So we can declare a servlet and then its mapping, and then a new servlet 
with its mapping
Something like that :

<servlet> ...servletA..</servlet>
<servlet-mapping>..servletA...</servlet-mapping>
<servlet> ...servletB..</servlet>
<servlet-mapping>..servletB...</servlet-mapping>

But the mapping of a servlet can be declared before the declaration of the servlet element
<servlet-mapping>..servletA...</servlet-mapping>
<servlet> ...servletA..</servlet>


The problem is that this is a valid XML but it fails during the deployment on Tomcat 5.
This is due to the fact that during the XML parsing, when we add a servlet mapping, there is a check to see if the servlet exists.
Method addServletMapping() in org.apache.catalina.core.StandardContext class.

// Validate the proposed mapping
        if (findChild(name) == null)
            throw new IllegalArgumentException
                (sm.getString("standardContext.servletMap.name", name));

I agree that it is strange to do that (mapping between servlet declaration) and it can be a minor problem but it can occurs sometimes (during some copy/paste)
So, maybe the check has to move to another place.


Regards,

Florent.




---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-dev-help@jakarta.apache.org