Env: Tomcat 6.0.14, JRE1.6

I have an application comprising a number of distinct webapp contexts
which use a common version of certain jarfiles. Loading an instance of
the jarfiles by each webapp classloader takes up a lot of memory.
Hence, I have moved these jarfiles to ${CATALINA_BASE}/lib. So we have:
      "common classes" ==> ${CATALINA_BASE}/lib
      "webapp-specific classes" ==> ${CATALINA_BASE}/webapps/<foo>/WEB-INF/lib

This has been the beginning of my problems: the common classes
make direct and indirect references to the webapp-specific classes
during the context loading. As an example, a webapp invokes digester
at context load. While the digester itself is present in "commons classes",
the digester rules refer to webapp-specific classes. This causes the digester
to fail, thus aborting the context with a listenerStart ERROR message. This 
seems
occur because since digester is loaded by commons classloader, it has
no access to the webapp-specific classes.

Carried to an extreme, I would have to place all of webapp-specific classes 
in ${CATALINA_BASE}/lib as well. Clearly this would be broken.

Here are my questions:
  1) There must be  a way to neatly factor out into common classloader classes 
shared
       by a number of cooperating webapp contexts. What would such a scheme be?
  2) In the lifecycle of a webapp context:
             - when is the webapp classloader "born"?
             - is the webapp classloader loaded by the commons classloader or 
the system classloader?
             - which classloader loads the context loader listener?
  
Pl help - I have been chasing my own tail with this problem for quite sometime!

Thanks,

/U
  

---------------------------------------------------------------------
To start a new topic, e-mail: users@tomcat.apache.org
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to