[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