--- java/org/apache/catalina/core/JreMemoryLeakPreventionListener.java +++ java/org/apache/catalina/core/JreMemoryLeakPreventionListener.java @@ -151,6 +151,15 @@ public void lifecycleEvent(LifecycleEvent event) { // Initialise these classes when Tomcat starts if (Lifecycle.BEFORE_INIT_EVENT.equals(event.getType())) { + + ClassLoader loader = Thread.currentThread().getContextClassLoader(); + + try + { + // Use the system classloader as the victim for all this + // ClassLoader pinning we're about to do. + Thread.currentThread().setContextClassLoader(ClassLoader.getSystemClassLoader()); + /* * Several components end up calling: * sun.awt.AppContext.getAppContext() @@ -306,7 +315,10 @@ log.error(sm.getString("jreLeakListener.xmlParseFail"), e); } } + } finally { + Thread.currentThread().setContextClassLoader(loader); } } + } }