tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Mark Thomas <ma...@apache.org>
Subject Re: custom classloader missing root
Date Tue, 11 Nov 2014 17:14:03 GMT
On 11/11/2014 17:01, Ed Rouse wrote:
> 
> 
> -----Original Message----- From: Mark Thomas
> [mailto:markt@apache.org] Sent: Tuesday, November 11, 2014 11:49 AM 
> To: Tomcat Users List Subject: Re: custom classloader missing root
> 
> On 11/11/2014 15:34, Ed Rouse wrote:
>> I am trying to convert a custom class loader from version 5.5 to
>> version 8.0.11, running under ubuntu. I have the following line in
>> my context.xml file. <Loader 
>> loaderClass="com.comsquared.idw.catalina.ext.IDWMClassLoader" 
>> delegate="false" />
>> 
>> I have tried the delegate as both true and false with no
>> difference. I have found that the parent loader is
>> java.net.URLClassLoader, not
>> org.apache.catalina.loader.WebappLoader or
>> org.apache.catalina.loader.WebappClassLoaderBase as I expected.
> 
> Your expectation is incorrect.
> 
>> My class loader extends
>> org.apache.catalina.loader.WebappClassLoader. In order to add
>> files, as far as I know I need an 
>> org.apache.catalina.WebResourceRoot (probably StandardRoot) and an
>> org.apache.catalina.Context (probably
>> org.apache.catalina.core.StandardContext).
>> 
>> So how do I get, find or create these 2 classes?
> 
> You don't create them. You don't have access to the Context. Tomcat
> creates them and sets them on your class loader. You then access them
> with getResources() and getResources().getContext().
> 
>> I think I can create a new StandardRoot if I have a Context, but
>> what needs to be done to create a proper context for a web
>> application that is getting auto-loaded by the tomcat container at
>> startup?
> 
> Tomcat does all of this for you.
> 
>> I am missing some information and have, as yet, not been able to
>> find any details about how to accomplish this.
> 
> The source code is usually a good place to start. If you can't figure
> out how stuff works from the source fire up a Tomcat instance, attach
> a debugger and step through the code.
> 
> Mark
> 
> I already tried getResources() but it returns null. hence my
> confusion. As far as I can tell, tomcat is not setting the root or
> context on my class loader.

That depends on when you call it.

> 
> As for looking through the source, I'm not even sure where to start.

How about the source for WebappClassLoader and look for where
setResources() is called?

> Is there a document somewhere that goes through the entire startup
> process of the tomcat container so I will at least have an idea of
> where the tomcat is supposed to be doing this?

Nothing current but it hasn't changed much since this was written:
http://localhost/docs/architecture/startup.html

Mark

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


Mime
View raw message