[jboss-cvs] JBossAS SVN: r64043 - in trunk: server/src/etc/conf/default and 3 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Fri Jul 13 12:59:19 EDT 2007


Author: adrian at jboss.org
Date: 2007-07-13 12:59:19 -0400 (Fri, 13 Jul 2007)
New Revision: 64043

Modified:
   trunk/build/build-distr.xml
   trunk/build/build-thirdparty.xml
   trunk/server/src/etc/conf/default/bootstrap-beans.xml
   trunk/system-jmx/.classpath
   trunk/system-jmx/src/main/org/jboss/system/server/jmx/JMXKernel.java
   trunk/system/src/main/org/jboss/system/server/ServerLoader.java
Log:
JBMICROCONT-182] - Integrate new classloader into JBoss Head - Currently disabled

Modified: trunk/build/build-distr.xml
===================================================================
--- trunk/build/build-distr.xml	2007-07-13 16:56:05 UTC (rev 64042)
+++ trunk/build/build-distr.xml	2007-07-13 16:59:19 UTC (rev 64043)
@@ -1696,6 +1696,7 @@
       </fileset>
       <fileset dir="${jboss.microcontainer.lib}">
         <include name="jboss-aop-mc-int.jar"/>
+        <include name="jboss-classloader.jar"/>
         <include name="jboss-container.jar"/>
         <include name="jboss-dependency.jar"/>
         <include name="jboss-deployers-client.jar"/>

Modified: trunk/build/build-thirdparty.xml
===================================================================
--- trunk/build/build-thirdparty.xml	2007-07-13 16:56:05 UTC (rev 64042)
+++ trunk/build/build-thirdparty.xml	2007-07-13 16:59:19 UTC (rev 64043)
@@ -94,9 +94,11 @@
       <componentref name="jboss/jboss-javaee" version="5.0.0-SNAPSHOT"/>
       <componentref name="jboss/jboss-jaspi-api" version="1.0-SNAPSHOT"/>
       <componentref name="jboss/jbossxb" version="2.0.0.CR2"/>
+      <componentref name="jboss/jbossws" version="snapshot"/>
+      <componentref name="jboss/jbossws-spi" version="snapshot"/>
       <componentref name="jboss/jbossws-native50" version="snapshot"/>
       <componentref name="jboss/messaging" version="1.2.0.SP.snapshot.aop2beta"/>
-      <componentref name="jboss/microcontainer" version="snapshot"/>
+      <componentref name="jboss/microcontainer" version="snapshot-classloader"/>
       <componentref name="jboss/jboss-vfs" version="2.0.0.Beta4"/>
       <componentref name="jboss/remoting" version="2.2.0.SP4"/>
       <componentref name="jboss/jbossretro" version="1.0.5.GA"/>

Modified: trunk/server/src/etc/conf/default/bootstrap-beans.xml
===================================================================
--- trunk/server/src/etc/conf/default/bootstrap-beans.xml	2007-07-13 16:56:05 UTC (rev 64042)
+++ trunk/server/src/etc/conf/default/bootstrap-beans.xml	2007-07-13 16:59:19 UTC (rev 64043)
@@ -21,7 +21,8 @@
    <!-- The legacy JMX kernel -->
    <bean name="JMXKernel" class="org.jboss.system.server.jmx.JMXKernel">
       <property name="kernel"><inject bean="jboss.kernel:service=Kernel"/></property>
-      <property name="serverImpl"><inject bean="JBossServer"/></property>
+      <property name="serverImpl"><inject bean="JBossServer"/></property>
+      <property name="oldClassLoader">true</property>
    </bean>
 
    <!--
@@ -180,9 +181,6 @@
    <bean name="SARDeployer" class="org.jboss.system.deployers.SARDeployer">
       <property name="type">sar</property>
    </bean>
-   <bean name="ServiceClassLoaderDeployer" class="org.jboss.system.deployers.ServiceClassLoaderDeployer">
-      <constructor><parameter><inject bean="JMXKernel" property="serviceController"/></parameter></constructor>
-   </bean>
    <bean name="ServiceDeploymentDeployer" class="org.jboss.system.deployers.ServiceDeploymentDeployer">
        <property name="type">sar</property>
    </bean>
@@ -191,6 +189,25 @@
        <property name="type">sar</property>
    </bean>
 
+   <!-- UnifiedClassLoader -->
+   <bean name="ServiceClassLoaderDeployer" class="org.jboss.system.deployers.ServiceClassLoaderDeployer">
+      <constructor><parameter><inject bean="JMXKernel" property="serviceController"/></parameter></constructor>
+   </bean>
+
+   <!-- VFS ClassLoader -->
+   <!--bean name="ClassLoaderSystem" class="org.jboss.classloader.spi.ClassLoaderSystem">
+      <constructor factoryClass="org.jboss.classloader.spi.ClassLoaderSystem" factoryMethod="getInstance"/>
+   </bean>
+   <bean name="ClassLoading" class="org.jboss.deployers.plugins.classloading.ClassLoading"/>
+   <bean name="HackClassLoaderMetaDataDeployer" class="org.jboss.system.deployers.HackClassloaderMetaDataDeployer">
+      <property name="classLoading"><inject bean="ClassLoading"/></property>
+   </bean>
+   <bean name="VFSClassLoaderDeployer" class="org.jboss.deployers.vfs.plugins.classloader.VFSTopLevelClassLoaderSystemDeployer">
+      <property name="classLoading"><inject bean="ClassLoading"/></property>
+      <property name="system"><inject bean="ClassLoaderSystem"/></property>
+      <property name="mbeanServer"><inject bean="JMXKernel" property="mbeanServer"/></property>
+   </bean-->
+
 	<!-- MBean for making sure that the underlying AspectManagerService gets registered in JMX -->
 	<bean name="AspectManagerJMXRegistrar" class="org.jboss.aop.deployers.AspectManagerJMXRegistrar">
 	   <property name="mbeanServer"><inject bean="JMXKernel" property="mbeanServer"/></property>

Modified: trunk/system/src/main/org/jboss/system/server/ServerLoader.java
===================================================================
--- trunk/system/src/main/org/jboss/system/server/ServerLoader.java	2007-07-13 16:56:05 UTC (rev 64042)
+++ trunk/system/src/main/org/jboss/system/server/ServerLoader.java	2007-07-13 16:59:19 UTC (rev 64043)
@@ -93,6 +93,7 @@
       "trove.jar",
       "jboss-vfs.jar",
       "jboss-classloading-spi.jar",
+      "jboss-classloader.jar",
       "jboss-container.jar",
       "jboss-dependency.jar",
       "jboss-kernel.jar",

Modified: trunk/system-jmx/.classpath
===================================================================
--- trunk/system-jmx/.classpath	2007-07-13 16:56:05 UTC (rev 64042)
+++ trunk/system-jmx/.classpath	2007-07-13 16:59:19 UTC (rev 64043)
@@ -12,6 +12,7 @@
 	<classpathentry kind="lib" path="/thirdparty/jboss/common-core/lib/jboss-common-core.jar"/>
 	<classpathentry kind="lib" path="/thirdparty/jboss/common-logging-spi/lib/jboss-logging-spi.jar"/>
 	<classpathentry kind="lib" path="/thirdparty/jboss/common-logging-log4j/lib/jboss-logging-log4j.jar"/>
+	<classpathentry kind="lib" path="/thirdparty/jboss/microcontainer/lib/jboss-classloader.jar" sourcepath="/thirdparty/jboss/microcontainer/lib/jboss-classloader-sources.jar"/>
 	<classpathentry kind="lib" path="/thirdparty/jboss/microcontainer/lib/jboss-container.jar" sourcepath="/thirdparty/jboss/microcontainer/lib/jboss-container-sources.jar"/>
 	<classpathentry kind="lib" path="/thirdparty/jboss/microcontainer/lib/jboss-dependency.jar" sourcepath="/thirdparty/jboss/microcontainer/lib/jboss-dependency-sources.jar"/>
 	<classpathentry kind="lib" path="/thirdparty/jboss/microcontainer/lib/jboss-kernel.jar" sourcepath="/thirdparty/jboss/microcontainer/lib/jboss-kernel-sources.jar"/>
@@ -22,6 +23,7 @@
 	<classpathentry kind="lib" path="/thirdparty/apache-xerces/lib/resolver.jar"/>
 	<classpathentry kind="lib" path="/thirdparty/apache-xerces/lib/xercesImpl.jar"/>
 	<classpathentry kind="lib" path="/thirdparty/apache-xerces/lib/xml-apis.jar"/>
+	<classpathentry kind="lib" path="/thirdparty/apache-log4j/lib/log4j.jar"/>
 	<classpathentry combineaccessrules="false" kind="src" path="/jmx"/>
 	<classpathentry kind="lib" path="/thirdparty/jboss/common-logging-jdk/lib/jboss-logging-jdk.jar"/>
 	<classpathentry kind="lib" path="/thirdparty/jboss/jboss-vfs/lib/jboss-vfs.jar" sourcepath="/thirdparty/jboss/jboss-vfs/lib/jboss-vfs-sources.jar"/>
@@ -29,6 +31,7 @@
 	<classpathentry kind="lib" path="/thirdparty/jboss/microcontainer/lib/jboss-deployers-client-spi.jar" sourcepath="/thirdparty/jboss/microcontainer/lib/jboss-deployers-client-spi-sources.jar"/>
 	<classpathentry kind="lib" path="/thirdparty/jboss/microcontainer/lib/jboss-deployers-structure-spi.jar" sourcepath="/thirdparty/jboss/microcontainer/lib/jboss-deployers-structure-spi-sources.jar"/>
 	<classpathentry kind="lib" path="/thirdparty/jboss/microcontainer/lib/jboss-deployers-spi.jar" sourcepath="/thirdparty/jboss/microcontainer/lib/jboss-deployers-spi-sources.jar"/>
+	<classpathentry kind="lib" path="/thirdparty/jboss/microcontainer/lib/jboss-deployers-vfs.jar" sourcepath="/thirdparty/jboss/microcontainer/lib/jboss-deployers-vfs-sources.jar"/>
 	<classpathentry kind="lib" path="/thirdparty/jboss/microcontainer/lib/jboss-deployers-vfs-spi.jar" sourcepath="/thirdparty/jboss/microcontainer/lib/jboss-deployers-vfs-spi-sources.jar"/>
 	<classpathentry kind="lib" path="/thirdparty/jboss/microcontainer/lib/jboss-deployers-impl.jar" sourcepath="/thirdparty/jboss/microcontainer/lib/jboss-deployers-impl-sources.jar"/>
 	<classpathentry kind="lib" path="/thirdparty/jboss/integration/lib/jboss-integration.jar" sourcepath="/thirdparty/jboss/integration/lib/jboss-integration-sources.jar"/>

Modified: trunk/system-jmx/src/main/org/jboss/system/server/jmx/JMXKernel.java
===================================================================
--- trunk/system-jmx/src/main/org/jboss/system/server/jmx/JMXKernel.java	2007-07-13 16:56:05 UTC (rev 64042)
+++ trunk/system-jmx/src/main/org/jboss/system/server/jmx/JMXKernel.java	2007-07-13 16:59:19 UTC (rev 64043)
@@ -26,7 +26,6 @@
 import java.net.URL;
 import java.util.ArrayList;
 import java.util.Date;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Properties;
 
@@ -40,6 +39,10 @@
 import javax.management.ObjectInstance;
 import javax.management.ObjectName;
 
+import org.jboss.classloader.spi.ClassLoaderSystem;
+import org.jboss.classloading.spi.RealClassLoader;
+import org.jboss.deployers.structure.spi.classloading.ExportAll;
+import org.jboss.deployers.vfs.plugins.classloader.VFSClassLoaderPolicy;
 import org.jboss.kernel.Kernel;
 import org.jboss.mx.loading.RepositoryClassLoader;
 import org.jboss.mx.server.ServerConstants;
@@ -55,6 +58,8 @@
 import org.jboss.system.server.ServerImplMBean;
 import org.jboss.util.JBossObject;
 import org.jboss.util.file.FileSuffixFilter;
+import org.jboss.virtual.VFS;
+import org.jboss.virtual.VirtualFile;
 
 /**
  * A pojo that creates a legacy jmx kernel ala the jboss-4.x server bootstrap.
@@ -83,7 +88,9 @@
    /** The bootstrap UCL class loader ObjectName */
    private ObjectName bootstrapUCLName;
    private boolean started;
-
+   /** Whether to use the old classloader */
+   private boolean oldClassLoader;
+   
    public Server getServerImpl()
    {
       return serverImpl;
@@ -113,6 +120,16 @@
       this.kernel = kernel;
    }
    
+   public boolean isOldClassLoader()
+   {
+      return oldClassLoader;
+   }
+
+   public void setOldClassLoader(boolean oldClassLoader)
+   {
+      this.oldClassLoader = oldClassLoader;
+   }
+   
    public void start() throws Exception
    {
       ClassLoader tcl = Thread.currentThread().getContextClassLoader();
@@ -150,17 +167,20 @@
       // Register mbeanServer components
       mbeanServer.registerMBean(this, ServerImplMBean.OBJECT_NAME);
       mbeanServer.registerMBean(serverConfigMBean, ServerConfigImplMBean.OBJECT_NAME);
-
+      
       // Initialize spine boot libraries
-      RepositoryClassLoader ucl = initBootLibraries();
-      bootstrapUCLName = ucl.getObjectName();
-      mbeanServer.registerMBean(ucl, bootstrapUCLName);
+      ClassLoader cl = null;
+      if (oldClassLoader)
+         cl = initBootLibrariesOld();
+      else
+         cl = initBootLibraries();
+      
 
       // Set ServiceClassLoader as classloader for the construction of
       // the basic system
       try
       {
-         Thread.currentThread().setContextClassLoader(ucl);
+         Thread.currentThread().setContextClassLoader(cl);
    
          // General Purpose Architecture information
          createMBean("org.jboss.system.server.ServerInfo",
@@ -389,12 +409,12 @@
 
 
    /**
-    * Initialize the boot libraries.
+    * Initialize the boot libraries using the old classloader
     * 
     * @return the classloader
     * @throws Exception for any error
     */
-   private RepositoryClassLoader initBootLibraries() throws Exception
+   private List<URL> getBootURLs() throws Exception
    {
       // Build the list of URL for the spine to boot
       List<URL> list = new ArrayList<URL>();
@@ -430,12 +450,24 @@
       // Add the mbeanServer configuration directory to be able to load serverConfig files as resources
       list.add(serverConfig.getServerConfigURL());
       log.debug("Boot url list: " + list);
+      
+      return list;
+   }
 
+   /**
+    * Initialize the boot libraries using the old classloader
+    * 
+    * @return the classloader
+    * @throws Exception for any error
+    */
+   private ClassLoader initBootLibrariesOld() throws Exception
+   {
+      List<URL> list = getBootURLs();
+      
       // Create loaders for each URL
       RepositoryClassLoader loader = null;
-      for (Iterator iter = list.iterator(); iter.hasNext();)
+      for (URL url : list)
       {
-         URL url = (URL)iter.next();
          log.debug("Creating loader for URL: " + url);
 
          // This is a boot URL, so key it on itself.
@@ -443,10 +475,43 @@
          String[] sig = {"java.net.URL", "boolean"};
          loader = (RepositoryClassLoader) mbeanServer.invoke(DEFAULT_LOADER_NAME, "newClassLoader", args, sig);
       }
+      bootstrapUCLName = loader.getObjectName();
+      mbeanServer.registerMBean(loader, bootstrapUCLName);
       return loader;
    }
 
    /**
+    * Initialize the boot libraries using the old classloader
+    * 
+    * @return the classloader
+    * @throws Exception for any error
+    */
+   private ClassLoader initBootLibraries() throws Exception
+   {
+      ClassLoaderSystem system = ClassLoaderSystem.getInstance();
+
+      List<URL> list = getBootURLs();
+
+      VirtualFile[] files = new VirtualFile[list.size()];
+      for (int i = 0; i < list.size(); ++i)
+      {
+         URL url = list.get(i);
+         files[i] = VFS.getRoot(url);
+      }
+      
+      VFSClassLoaderPolicy policy = new VFSClassLoaderPolicy(files);
+      policy.setExportAll(ExportAll.NON_EMPTY);
+      policy.setImportAll(true);
+      ClassLoader classLoader = system.registerClassLoaderPolicy(policy);
+      if (classLoader instanceof RealClassLoader)
+      {
+         bootstrapUCLName = ((RealClassLoader) classLoader).getObjectName();
+         mbeanServer.registerMBean(classLoader, bootstrapUCLName);
+      }
+      return classLoader;
+   }
+
+   /**
     * Instantiate and register a service for the given classname into the MBean mbeanServer.
     * 
     * @param classname the mbean class name




More information about the jboss-cvs-commits mailing list