You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by Bob Bateman <bb...@bobbateman.com> on 2004/03/18 20:57:24 UTC

DOCTYPE in web-app web.xml

Hi all,

I have been working with a couple different versions and platforms of
Tomcat, and haven't been able to determine conclusively how the DOCTYPE
directive should be interpreted.  Until recently, I had always just put
in the standard Sun lines (see below).

This worked fine until a few weeks ago, when java.sun.com was down for a
day or so.  My Tomcat installation would hang briefly during
initialization and other bad things would happen.

[digression: did anyone else experience a problem with java.sun.com?]

Figuring that this sort of problem could happen again I went looking for
a way to configure TC to look for the .dtd file locally.  I found a nice
summary here:

	http://www.ingenio.co.uk/xml/introdtd.html

tried this:

	<!DOCTYPE web-app SYSTEM "web-app_2_3.dtd">

and had it work on two somewhat dissimilar systems.  So far so good.

Yesterday I tried the SYSTEM approach on another TC (4.1.30) and found
this error in catalina.out:

	Resolve entity failednull
file:///usr/local/jakarta/jakarta-tomcat-4.1.30-src/build/web-app_2_3.dt
d

Apparently on this installation TC is looking somewhere other than in my
WEB-INF directory.  In all cases (successful or not) I had installed a
local copy of web-app_2_3.dtd in WEB-INF, i.e. in the same directory as
the web-app web.xml.

The 2.3 Servlet spec contradicts all of this somewhat with these words
(SRV.13.2.1):

	All valid web application deployment descriptors for version 2.3
of 	this specification must contain the following DOCTYPE
declaration:

	<!DOCTYPE web-app PUBLIC
        	"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
        	"http://java.sun.com/dtd/web-app_2_3.dtd">

This seems pretty specific, and I don't find any mention of the SYSTEM
variation in the spec.

So what is the "correct" behavior?  

What should I do on a system that may not always have Internet
connectivity?

Is something just built or configured wrong on the misbehaving system?




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


RE: DOCTYPE in web-app web.xml

Posted by Bob Bateman <bb...@bobbateman.com>.
I tracked the "Resolve entity failed" message to a
MyEntityResolver::resolveEntity method.  This seems to confirm your
comment that a resolver is involved.  I'm not sure how to trace TC to
find out how it got there.

The javadocs describe a DTD caching mechanism in TC5
(org.apache.catalina.util::SchemaResolver) but I'm not able to follow
this back into 4.1.  In particular, it would be helpful if someone could
tell me where the DTDs were being cached.

Also, after more testing, I noticed the resolver error messages
happening on the "good" systems too, just at a much-reduced rate.

On both systems there is a degree of inconsistency - slower system shows
fewer failures, faster system shows more failures.  Perhaps there is a
relevant timeout config somewhere?


-BB


> -----Original Message-----
> From: Jacob Kjome [mailto:hoju@visi.com]
> Sent: Thursday, March 18, 2004 1:19 PM
> To: Tomcat Users List
> Subject: Re: DOCTYPE in web-app web.xml
> 
> I'd be surprised if Tomcat wasn't using an entity resolver to load the
> DTD.  The
> entity resolver's job would be to recognize the DTD entry and load a
> corresponding one from the local server rather than downloading it
from
> the
> internet every time.  Just think, if this weren't true, Tomcat
wouldn't be
> able
> to deploy applications when the server is not connected to the
network.
> I've
> used Tomcat offline many times and have never had any problems.
Double
> check
> that your spelling is correct in the DTD entry.
> 
> Jake
> 
> Quoting Bob Bateman <bb...@bobbateman.com>:
> 
> > Hi all,
> >
> > I have been working with a couple different versions and platforms
of
> > Tomcat, and haven't been able to determine conclusively how the
DOCTYPE
> > directive should be interpreted.  Until recently, I had always just
put
> > in the standard Sun lines (see below).
> >
> > This worked fine until a few weeks ago, when java.sun.com was down
for a
> > day or so.  My Tomcat installation would hang briefly during
> > initialization and other bad things would happen.
> >
> > [digression: did anyone else experience a problem with
java.sun.com?]
> >
> > Figuring that this sort of problem could happen again I went looking
for
> > a way to configure TC to look for the .dtd file locally.  I found a
nice
> > summary here:
> >
> > 	http://www.ingenio.co.uk/xml/introdtd.html
> >
> > tried this:
> >
> > 	<!DOCTYPE web-app SYSTEM "web-app_2_3.dtd">
> >
> > and had it work on two somewhat dissimilar systems.  So far so good.
> >
> > Yesterday I tried the SYSTEM approach on another TC (4.1.30) and
found
> > this error in catalina.out:
> >
> > 	Resolve entity failednull
> >
file:///usr/local/jakarta/jakarta-tomcat-4.1.30-src/build/web-app_2_3.dt
> > d
> >
> > Apparently on this installation TC is looking somewhere other than
in my
> > WEB-INF directory.  In all cases (successful or not) I had installed
a
> > local copy of web-app_2_3.dtd in WEB-INF, i.e. in the same directory
as
> > the web-app web.xml.
> >
> > The 2.3 Servlet spec contradicts all of this somewhat with these
words
> > (SRV.13.2.1):
> >
> > 	All valid web application deployment descriptors for version 2.3
> > of 	this specification must contain the following DOCTYPE
> > declaration:
> >
> > 	<!DOCTYPE web-app PUBLIC
> >         	"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
> >         	"http://java.sun.com/dtd/web-app_2_3.dtd">
> >
> > This seems pretty specific, and I don't find any mention of the
SYSTEM
> > variation in the spec.
> >
> > So what is the "correct" behavior?
> >
> > What should I do on a system that may not always have Internet
> > connectivity?
> >
> > Is something just built or configured wrong on the misbehaving
system?
> >
> >
> >
> >
> >
---------------------------------------------------------------------
> > To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
> > For additional commands, e-mail: tomcat-user-help@jakarta.apache.org
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: tomcat-user-help@jakarta.apache.org
> 
> 




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


Re: DOCTYPE in web-app web.xml

Posted by Jacob Kjome <ho...@visi.com>.
I'd be surprised if Tomcat wasn't using an entity resolver to load the DTD.  The
entity resolver's job would be to recognize the DTD entry and load a
corresponding one from the local server rather than downloading it from the
internet every time.  Just think, if this weren't true, Tomcat wouldn't be able
to deploy applications when the server is not connected to the network.  I've
used Tomcat offline many times and have never had any problems.  Double check
that your spelling is correct in the DTD entry.

Jake

Quoting Bob Bateman <bb...@bobbateman.com>:

> Hi all,
> 
> I have been working with a couple different versions and platforms of
> Tomcat, and haven't been able to determine conclusively how the DOCTYPE
> directive should be interpreted.  Until recently, I had always just put
> in the standard Sun lines (see below).
> 
> This worked fine until a few weeks ago, when java.sun.com was down for a
> day or so.  My Tomcat installation would hang briefly during
> initialization and other bad things would happen.
> 
> [digression: did anyone else experience a problem with java.sun.com?]
> 
> Figuring that this sort of problem could happen again I went looking for
> a way to configure TC to look for the .dtd file locally.  I found a nice
> summary here:
> 
> 	http://www.ingenio.co.uk/xml/introdtd.html
> 
> tried this:
> 
> 	<!DOCTYPE web-app SYSTEM "web-app_2_3.dtd">
> 
> and had it work on two somewhat dissimilar systems.  So far so good.
> 
> Yesterday I tried the SYSTEM approach on another TC (4.1.30) and found
> this error in catalina.out:
> 
> 	Resolve entity failednull
> file:///usr/local/jakarta/jakarta-tomcat-4.1.30-src/build/web-app_2_3.dt
> d
> 
> Apparently on this installation TC is looking somewhere other than in my
> WEB-INF directory.  In all cases (successful or not) I had installed a
> local copy of web-app_2_3.dtd in WEB-INF, i.e. in the same directory as
> the web-app web.xml.
> 
> The 2.3 Servlet spec contradicts all of this somewhat with these words
> (SRV.13.2.1):
> 
> 	All valid web application deployment descriptors for version 2.3
> of 	this specification must contain the following DOCTYPE
> declaration:
> 
> 	<!DOCTYPE web-app PUBLIC
>         	"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
>         	"http://java.sun.com/dtd/web-app_2_3.dtd">
> 
> This seems pretty specific, and I don't find any mention of the SYSTEM
> variation in the spec.
> 
> So what is the "correct" behavior?
> 
> What should I do on a system that may not always have Internet
> connectivity?
> 
> Is something just built or configured wrong on the misbehaving system?
> 
> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: tomcat-user-help@jakarta.apache.org

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