tomcat-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From babak farhang <babak_apa...@yahoo.com>
Subject RE: Webapp classloader question.
Date Sat, 11 Oct 2003 08:53:46 GMT

I too had a problem loading XML libraries
under tomcat 4.1.  I thought I identified
the problem and reported bug 16577. See

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=16577

I proposed a simple fix, but alas, Remy Maucherat,
thought the delegation model worked as intended
and WONTFIXed it.

The upshot is that classes with the following
package prefixes are loaded by the parent loader:


        "javax",                                    
// Java extensions
        "org.xml.sax",                              
// SAX 1 & 2
        "org.w3c.dom",                              
// DOM 1 & 2
        "org.apache.xerces",                        
// Xerces 1 & 2
        "org.apache.xalan"                          
// Xalan

As xalan and xerces are in this list (taken from
the source code), you can't load your own version
of these libraries without modifying the source.

-Babak

--- "Lee, William" <William.Lee@Cognos.COM> wrote:
> Hmm... Seems like even the Sun's engineer also have
> different point of views
> between them as well... Now, I'm totally confused
> about which way should be
> the right way to go...
> 
> It there any Sun/Java representative on this mailing
> list that can answer
> this question then?
> 
> Thanks again for all your help.
> William.
> 
> 
> -----Original Message-----
> From: Cox, Charlie [mailto:ccox@cincom.com] 
> Sent: Friday, October 10, 2003 2:38 PM
> To: 'Tomcat Developers List'
> Subject: RE: Webapp classloader question.
> 
> 
> here's one reply that I got a while ago about the
> issue when it was changed
> in 4.0.2(saying basically the same thing)
>
http://www.mail-archive.com/tomcat-user@jakarta.apache.org/msg74261.html
> 
> I know that the WEB-INF classloader changes the
> delegation model by looking
> for classes within WEB-INF BEFORE delegating to its
> parent, but I don't know
> why the endorsed spec was chosen to override the
> servlet spec.
> 
> Charlie
> 
> > -----Original Message-----
> > From: Lee, William [mailto:William.Lee@Cognos.COM]
> > Sent: Friday, October 10, 2003 2:13 PM
> > To: 'Tomcat Developers List'
> > Subject: RE: Webapp classloader question.
> > 
> > 
> > To be honest, I got exactly the same impression
> when I read
> > this document
> > half a year ago. However, when I tried to clarify
> all the 
> > "grey" areas in
> > this document with Sun, here is the response from
> their Java engineer:
> > 
> > ***
> > The standard "delegation model" used by Java does
> say that a child 
> > classloader should look first to its parent
> classloader when searching 
> > for classes.  As you know, this model works
> against us in your
> > situtation, since
> > the application classloader for a web app is a
> child of the 
> > system class
> > loader (where the 1.4 parsers are loaded). 
> However, the servlet
> > specification requires that a web app obtain its
> class 
> > definition from the
> > WAR file.  Therefore, most vendors have
> implemented a way for the
> > application classloader to look in the WAR file
> first before 
> > going to a
> > parent, thereby overriding the standard delegation
> model.
> > ***
> > 
> > So, it seems to me that the servlet spec. should
> supersede
> > the "endorsed
> > mechanism" in the web application environment.
> > 
> > William.
> > 
> > -----Original Message-----
> > From: Cox, Charlie [mailto:ccox@cincom.com]
> > Sent: Friday, October 10, 2003 1:17 PM
> > To: 'Tomcat Developers List'
> > Subject: RE: Webapp classloader question.
> > 
> > 
> > ok, I just found this link from the archives. Sun
> defined
> > that you have to
> > use the 'endorsed' directory or take the
> Sun-supplied versions of the
> > packages listed.
> >
>
http://java.sun.com/j2se/1.4.2/docs/guide/standards/index.html
> > 
> > tomcat's classloading is enforcing this
> requirement
> > explicitly since it does
> > not delegate to the parent classloader first.
> > 
> > so you can only replace the version in /endorsed
> > Charlie
> > 
> > > -----Original Message-----
> > > From: Lee, William
> [mailto:William.Lee@Cognos.COM]
> > > Sent: Friday, October 10, 2003 12:05 PM
> > > To: 'Tomcat Developers List'
> > > Subject: RE: Webapp classloader question.
> > > 
> > > 
> > > It seems to me that we are going for "bandaid"
> solution here. By 
> > > moving around the files, it will work for one
> particular webapp, but 
> > > at the expensive of the compatibility of other
> webapp under the same
> > > tomcat. As
> > > soon as we move the parser out of one webapp, we
> are 
> > forcing all other
> > > webapp using the same parser, which I believed
> is not the
> > > right way to go.
> > > 
> > > Rather, why forcing the delegate model for these
> two particular 
> > > packages (xerces & xalan)? Isn't it true that
> the endorse mechanism
> > > only required
> > > that the endorsed directory should be traverse
> before the system?
> > > 
> > > I still didn't see the reason how this "endorsed
> mechanism" has 
> > > anything to do with the servlet spec., and that
> it would force 
> > > servlet container to skip
> > > the one in webapps?
> > > 
> > > Thanks again.
> > > William.
> > > 
> > > 
> > > -----Original Message-----
> > > From: Cox, Charlie [mailto:ccox@cincom.com]
> > > Sent: Friday, October 10, 2003 8:46 AM
> > > To: 'Tomcat Developers List'
> > > Subject: RE: Webapp classloader question.
> > > 
> > > 
> > > you want to put the one from endorsed into
> server/lib, then put 
> > > yours in WEB-INF. This way only one is visible
> to any tree of the
> > > classloader. But
> > > I'm not sure if you will still end up with the
> JDK version 
> > > since the one in
> > > WEB-INF is not "endorsed" to override it.
> > > 
> > > The other thing I would try is to put your
> version in 
> > > /common/endorsed with the tomcat version in
> /server/lib.
> > > 
> > > btw, have you just tried replacing the version
> in /endorsed with 
> > > your newer one?
> > > 
> > > Charlie
> > > 
> > > > -----Original Message-----
> > > > From: Lee, William
> [mailto:William.Lee@Cognos.COM]
> > > > Sent: Thursday, October 09, 2003 4:54 PM
> > > > To: 'Tomcat Developers List'
> > > > Subject: RE: Webapp classloader question.
> > > > 
> > > > 
> > > > This won't work since, all jar files in
> commons/lib,
> > > > commons/endorsed, and commons/classes are all
> visible to the 
> > > > tomcat's "commons" classloader. So,
> > > > there is no difference whether we put the
> xerces jar files 
> > > in "lib" or
> > > > "endorsed", the one from webapps will be
> skipped.
> > > > 
> > > > I think the question boiled down to, if we
> have Xerces on both
> > > > "endorsed" and "webapps", which one should be
> used? For tomcat, I 
> > > > would thought that
> > > > the order for class searching will be
> "webapps", 
=== message truncated ===


__________________________________
Do you Yahoo!?
The New Yahoo! Shopping - with improved product search
http://shopping.yahoo.com

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


Mime
View raw message