tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jess Holle <je...@ptc.com>
Subject Re: Slower start with Tomcat 7.0.14 and higher
Date Wed, 22 Jun 2011 17:20:17 GMT
On 6/22/2011 10:16 AM, Jess Holle wrote:
> On 6/22/2011 9:08 AM, Mark Thomas wrote:
>>> Another issue is that WEB-INF/lib is visible to the parent classloader
>>> embedding Tomcat and to Tomcat as part of the web application and thus
>>> I'm probably getting double scanning -- though really Tomcat should be
>>> avoiding this by detecting that the same jar file is involved in both
>>> cases.  The reasons for the duplication in this classpath are long and
>>> historic.  Overall I'd rather not try to unwind this now.  I'd
>>> hope/assume that an annotation on a class, e.g. a filter annotation,
>>> would only result in one filter instance irrespective of how many times
>>> that class is visible to the classloader(s) in question.
>> That sounds like it might cause trouble. Classes are identified by the
>> combination of name and class loader so the same class loaded in two
>> different class loaders is treated as a different class. If both the web
>> application class loader and its parent class loader can see WEB-INF/lib
>> I can image all sorts of things may go wrong.
> Well the classloaders are clearly hierarchical, so only one Class 
> instance is loaded.  The fact that both ClassLoaders can see the jar 
> does not result in 2 Class objects -- nor should it result in an 
> annotation being applied multiple times.  The jars are in fact exactly 
> the same here -- as one of the web app's WEB-INF/lib directories is 
> visible to the parent classloader.  It may be possible to move the 
> jars somewhere else so that they're only part of the parent 
> classloader, but that will require more reshuffling of the 
> longstanding configuration.
I increased the verbosity for the StandardJarScanner logger.  Based on 
that output everything appears ok for our use case.  The only duplicated 
jars we have are in WEB-INF/lib which is already automatically ignored 
when scanning the classpath.

The only issue I found at this level is that both 
tomcat-juli-adapters.jar and tomcat-juli-adapters.jar are scanned.  I'd 
think that all the Tomcat "extras" jars should be in Tomcat's 
out-of-the-box list of jars to be ignored -- unless they actually 
shouldn't be ignored, of course.  That's a rather minor issue, though -- 
and presumably accounts for very, very little of the startup time.

--
Jess Holle


Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message