[jboss-cvs] JBossAS SVN: r110261 - in trunk: tomcat/src/main/java/org/jboss/web/tomcat/service/deployers and 1 other directory.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Tue Jan 4 09:01:52 EST 2011
Author: alesj
Date: 2011-01-04 09:01:52 -0500 (Tue, 04 Jan 2011)
New Revision: 110261
Modified:
trunk/server/src/main/java/org/jboss/deployment/EarClassLoaderDeployer.java
trunk/tomcat/src/main/java/org/jboss/web/tomcat/service/deployers/WarClassLoaderDeployer.java
Log:
[JBAS-8784]; fix ear and war CLDomainMD usage.
Modified: trunk/server/src/main/java/org/jboss/deployment/EarClassLoaderDeployer.java
===================================================================
--- trunk/server/src/main/java/org/jboss/deployment/EarClassLoaderDeployer.java 2011-01-04 10:56:49 UTC (rev 110260)
+++ trunk/server/src/main/java/org/jboss/deployment/EarClassLoaderDeployer.java 2011-01-04 14:01:52 UTC (rev 110261)
@@ -25,6 +25,7 @@
import javax.management.ObjectName;
import org.jboss.aop.microcontainer.aspects.jmx.JMX;
+import org.jboss.classloading.spi.metadata.ClassLoadingDomainMetaData;
import org.jboss.classloading.spi.metadata.ClassLoadingMetaData;
import org.jboss.classloading.spi.metadata.ExportAll;
import org.jboss.classloading.spi.version.Version;
@@ -39,6 +40,7 @@
* EarClassLoaderDeployer.
*
* @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @author <a href="ales.justin at jboss.org">Ales Justin</a>
* @version $Revision$
*/
@JMX(name="jboss.j2ee:service=EARClassLoaderDeployer", exposedInterface=EarClassLoaderDeployerMBean.class)
@@ -69,6 +71,7 @@
public EarClassLoaderDeployer()
{
super(JBossAppMetaData.class);
+ addInput(ClassLoadingDomainMetaData.class);
setOutput(ClassLoadingMetaData.class);
setStage(DeploymentStages.POST_PARSE);
setTopLevelOnly(true);
@@ -88,15 +91,31 @@
// For isolated automatically create the classloader in a new domain
if (isolated)
{
- String domain = EARDeployment.getJMXName(metaData, unit) + ",extension=LoaderRepository";
- try
+ String domain = null;
+
+ // let's first try CLDomainMD
+ ClassLoadingDomainMetaData cldmd = unit.getAttachment(ClassLoadingDomainMetaData.class);
+ if (cldmd != null)
{
- ObjectName canonical = ObjectName.getInstance(domain);
- domain = canonical.getCanonicalName();
+ String name = cldmd.getName();
+ if (name == null || "<unknown>".equals(name))
+ domain = unit.getName();
+ else
+ domain = name;
}
- catch (MalformedObjectNameException ignored)
+
+ if (domain == null)
{
- // Not a JMX ObjectName???
+ domain = EARDeployment.getJMXName(metaData, unit) + ",extension=LoaderRepository";
+ try
+ {
+ ObjectName canonical = ObjectName.getInstance(domain);
+ domain = canonical.getCanonicalName();
+ }
+ catch (MalformedObjectNameException ignored)
+ {
+ // Not a JMX ObjectName???
+ }
}
classLoadingMetaData = new ClassLoadingMetaData();
classLoadingMetaData.setName(unit.getName());
Modified: trunk/tomcat/src/main/java/org/jboss/web/tomcat/service/deployers/WarClassLoaderDeployer.java
===================================================================
--- trunk/tomcat/src/main/java/org/jboss/web/tomcat/service/deployers/WarClassLoaderDeployer.java 2011-01-04 10:56:49 UTC (rev 110260)
+++ trunk/tomcat/src/main/java/org/jboss/web/tomcat/service/deployers/WarClassLoaderDeployer.java 2011-01-04 14:01:52 UTC (rev 110261)
@@ -27,11 +27,13 @@
import org.jboss.classloader.spi.filter.ClassFilter;
import org.jboss.classloader.spi.filter.RecursivePackageClassFilter;
+import org.jboss.classloading.spi.metadata.ClassLoadingDomainMetaData;
import org.jboss.classloading.spi.metadata.ClassLoadingMetaData;
import org.jboss.classloading.spi.metadata.ExportAll;
import org.jboss.classloading.spi.version.Version;
import org.jboss.deployers.spi.DeploymentException;
import org.jboss.deployers.spi.deployer.DeploymentStages;
+import org.jboss.deployers.structure.spi.DeploymentUnit;
import org.jboss.deployers.vfs.spi.deployer.AbstractSimpleVFSRealDeployer;
import org.jboss.deployers.vfs.spi.structure.VFSDeploymentUnit;
import org.jboss.metadata.common.jboss.LoaderRepositoryConfigMetaData;
@@ -46,6 +48,7 @@
*
* @author Scott.Stark at jboss.org
* @author adrian at jboss.org
+ * @author ales.justin at jboss.org
* @version $Revision$
*/
public class WarClassLoaderDeployer extends AbstractSimpleVFSRealDeployer<JBossWebMetaData>
@@ -63,6 +66,7 @@
{
super(JBossWebMetaData.class);
setStage(DeploymentStages.POST_PARSE);
+ addInput(ClassLoadingDomainMetaData.class);
addInput(ClassLoadingMetaData.class);
setOutput(ClassLoadingMetaData.class);
}
@@ -159,7 +163,7 @@
// Check for previous mis-spelled property name
java2ParentDelegation = props.getProperty("java2ParentDelegaton", "false");
}
- j2seClassLoadingCompliance = Boolean.valueOf(java2ParentDelegation).booleanValue();
+ j2seClassLoadingCompliance = Boolean.valueOf(java2ParentDelegation);
}
}
}
@@ -167,20 +171,50 @@
}
}
+ String parentDomain = null;
+ // let's then try CLDomainMD
+ ClassLoadingDomainMetaData cldmd = unit.getAttachment(ClassLoadingDomainMetaData.class);
+ if (cldmd != null)
+ {
+ String name = cldmd.getName();
+ if (name != null && "<unknown>".equals(name) == false)
+ {
+ // do we have jboss-web.xml loader repository defined with diff name than in jboss-classloading-domain.xml?
+ if (unit.getName().equals(domainName) == false && name.equals(domainName) == false)
+ log.warn("Overridding jboss-web.xml loader repository name: " + name);
+
+ domainName = name;
+ }
+ }
+ else if (unit.isTopLevel() == false)
+ {
+ DeploymentUnit parent = unit.getParent();
+ ClassLoadingDomainMetaData pcldmd = parent.getAttachment(ClassLoadingDomainMetaData.class);
+ if (pcldmd != null)
+ {
+ String parentName = pcldmd.getName();
+ if (parentName == null || "<unknown>".equals(parentName))
+ parentDomain = parent.getName();
+ else
+ parentDomain = parentName;
+ }
+ }
+
// Create a classloading metadata
// NOTE: Don't explicitly set the parentDomain otherwise it will create a top level classloader
// for subdeployments rather than a classloader hanging off the main deployment's classloader
ClassLoadingMetaData classLoadingMetaData = new ClassLoadingMetaData();
classLoadingMetaData.setName(unit.getName());
classLoadingMetaData.setDomain(domainName);
+ if (parentDomain != null)
+ classLoadingMetaData.setParentDomain(parentDomain);
classLoadingMetaData.setExportAll(ExportAll.NON_EMPTY);
classLoadingMetaData.setImportAll(true);
classLoadingMetaData.setVersion(Version.DEFAULT_VERSION);
classLoadingMetaData.setJ2seClassLoadingCompliance(j2seClassLoadingCompliance);
- ClassFilter filter = null;
if (filteredPackages != null)
{
- filter = RecursivePackageClassFilter.createRecursivePackageClassFilterFromString(filteredPackages);
+ ClassFilter filter = RecursivePackageClassFilter.createRecursivePackageClassFilterFromString(filteredPackages);
classLoadingMetaData.setExcluded(filter);
}
unit.addAttachment(ClassLoadingMetaData.class, classLoadingMetaData);
More information about the jboss-cvs-commits
mailing list