[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