[jboss-dev-forums] [Design of POJO Server] - JBAS-5376: leak of webapp classloader when deployed in ear
bstansberry@jboss.com
do-not-reply at jboss.com
Mon Apr 7 11:42:49 EDT 2008
Discussion of http://jira.jboss.com/jira/browse/JBAS-5376.
I've walked through the deploy/undeploy of an ear with an embedded war, and here's what I see. During deployment of the nested war:
AbstractLevelClassLoaderSystemDeployer.createClassLoader(DeploymentUnit) -->
VFSDeploymentClassLoaderPolicyModule.registerClassLoaderPolicy(ClassLoaderSystem system, ClassLoader parent) -->
DefaultClassLoaderSystem.registerClassLoaderPolicy(String domainName, ParentPolicy parentPolicy, Loader parent, ClassLoaderPolicy policy) -->
ClassLoaderSystem.createAndRegisterDomain(String name, ParentPolicy parentPolicy, Loader parent)
Here we create a domain for the war and assign param "Loader parent" to the new domain as it's parent. "Loader parent" has a ref to the ear classloader. We then register the new domain with the classloader system. This sets up the chain of references shown in the JIRA description.
During undeploy:
AbstractLevelClassLoaderSystemDeployer.removeClassLoader(DeploymentUnit unit) -->
BaseClassLoaderSystem.unregisterClassLoader(ClassLoader classLoader) -->
BaseClassLoaderSystem.unregisterClassLoaderPolicy(ClassLoaderPolicy policy)
that removes the ref to the *war's* poliyc/classloader from the war's domain, But the war domain itself is never unregistered from the ClassLoaderSystem. So the ref to the parent is leaked.
In an eclipse I don't see any calls at all to ClassLoaderSystem.unregisterDomain(ClassLoaderDomain domain) anywhere. ClassLoaderSystem.shutdown() removes all domains, but that doesn't help here.
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4142116#4142116
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4142116
More information about the jboss-dev-forums
mailing list