User: user57 Date: 02/02/26 21:51:25 Modified: src/main/org/jboss/system/server ServerImpl.java ServerImplMBean.java ServerLoader.java Log: o ServerImpl/ServerLoader TCL fixes o Detatched ServerImplMBean from Server (as not all methods are ment for mgmnt). Revision Changes Path 1.6 +36 -18 jboss-system/src/main/org/jboss/system/server/ServerImpl.java Index: ServerImpl.java =================================================================== RCS file: /cvsroot/jboss/jboss-system/src/main/org/jboss/system/server/ServerImpl.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- ServerImpl.java 27 Feb 2002 02:01:18 -0000 1.5 +++ ServerImpl.java 27 Feb 2002 05:51:25 -0000 1.6 @@ -10,7 +10,6 @@ package org.jboss.system.server; import java.io.File; -import java.io.FileFilter; import java.net.URL; @@ -39,15 +38,20 @@ import org.jboss.system.UnifiedClassLoader; import org.jboss.system.MBeanClassLoader; +import org.jboss.util.file.FileSuffixFilter; + /** * The main container component of a JBoss server instance. * + * <h3>Concurrency</h3> + * This class is <b>not</b> thread-safe. + * * @author <a href="mailto:[EMAIL PROTECTED]">Marc Fleury</a> * @author <a href="mailto:[EMAIL PROTECTED]">Jason Dillon</a> - * @version $Revision: 1.5 $ + * @version $Revision: 1.6 $ */ public class ServerImpl - implements ServerImplMBean + implements Server, ServerImplMBean { /** * Class logger. We masqurade as Server for looks, but we log our @@ -103,6 +107,20 @@ if (config != null) throw new IllegalStateException("already initialized"); + ClassLoader oldCL = Thread.currentThread().getContextClassLoader(); + + try { + Thread.currentThread().setContextClassLoader(getClass().getClassLoader()); + doInit(props); + } + finally { + Thread.currentThread().setContextClassLoader(oldCL); + } + } + + /** Actually does the init'ing... */ + private void doInit(final Properties props) throws Exception + { // make sure our impl type is exposed log.debug("server type: " + getClass()); @@ -112,7 +130,7 @@ // Setup JBoss URL handlers URL.setURLStreamHandlerFactory(new org.jboss.net.protocol.URLStreamHandlerFactory()); - // this does not seem to work at the moment due to CL issues + // this does not work at the moment due to java.net.URL not using TCL /* String handlerPkgs = System.getProperty("java.protocol.handler.pkgs"); if (handlerPkgs != null) { @@ -179,8 +197,12 @@ if (started) throw new IllegalStateException("already started"); - // Deal with those pesky JMX throwables + ClassLoader oldCL = Thread.currentThread().getContextClassLoader(); + try { + Thread.currentThread().setContextClassLoader(getClass().getClassLoader()); + + // Deal with those pesky JMX throwables try { doStart(); @@ -216,6 +238,9 @@ throw new org.jboss.util.UnexpectedThrowable(t); } + finally { + Thread.currentThread().setContextClassLoader(oldCL); + } } /** Actually does the starting... */ @@ -282,8 +307,8 @@ // Initialize the MainDeployer server.invoke(controllerName, "create", - new Object[] {mainDeployer}, - new String[] {ObjectName.class.getName()}); + new Object[] { mainDeployer }, + new String[] { ObjectName.class.getName() }); // SAR Deployer server.createMBean("org.jboss.deployment.SARDeployer", null, loaderName); @@ -297,13 +322,13 @@ server.invoke(mainDeployer, "deploy", new Object[] { config.getConfigURL() + "jboss-service.xml" }, - new String[] { "java.lang.String" }); + new String[] { String.class.getName() }); // Start the main deployer thread server.invoke(controllerName, "start", - new Object[] {mainDeployer}, - new String[] {ObjectName.class.getName()}); + new Object[] { mainDeployer }, + new String[] { ObjectName.class.getName() }); // Calculate how long it took long lapsedTime = System.currentTimeMillis() - startDate.getTime(); @@ -342,14 +367,7 @@ list.add(dir.toURL()); // Add the contents of the directory too - File[] jars = dir.listFiles(new FileFilter() - { - public boolean accept(File file) - { - String name = file.getName().toLowerCase(); - return name.endsWith(".jar") || name.endsWith(".zip"); - } - }); + File[] jars = dir.listFiles(new FileSuffixFilter(new String[] { ".jar", ".zip" }, true)); for (int j = 0; jars != null && j < jars.length; j++) { 1.2 +1 -2 jboss-system/src/main/org/jboss/system/server/ServerImplMBean.java Index: ServerImplMBean.java =================================================================== RCS file: /cvsroot/jboss/jboss-system/src/main/org/jboss/system/server/ServerImplMBean.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- ServerImplMBean.java 24 Feb 2002 10:24:34 -0000 1.1 +++ ServerImplMBean.java 27 Feb 2002 05:51:25 -0000 1.2 @@ -19,10 +19,9 @@ * The JMX MBean interface for the <tt>ServerImpl</tt> component. * * @author <a href="mailto:[EMAIL PROTECTED]">Jason Dillon</a> - * @version $Revision: 1.1 $ + * @version $Revision: 1.2 $ */ public interface ServerImplMBean - extends Server { /** The default JMX object name for this MBean. */ ObjectName OBJECT_NAME = ObjectNameFactory.create("jboss.system:type=Server"); 1.5 +16 -13 jboss-system/src/main/org/jboss/system/server/ServerLoader.java Index: ServerLoader.java =================================================================== RCS file: /cvsroot/jboss/jboss-system/src/main/org/jboss/system/server/ServerLoader.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- ServerLoader.java 27 Feb 2002 04:46:35 -0000 1.4 +++ ServerLoader.java 27 Feb 2002 05:51:25 -0000 1.5 @@ -50,7 +50,7 @@ * server.shutdown(); * </pre> * - * @version <tt>$Revision: 1.4 $</tt> + * @version <tt>$Revision: 1.5 $</tt> * @author <a href="mailto:[EMAIL PROTECTED]">Jason Dillon</a> */ public class ServerLoader @@ -207,11 +207,6 @@ /** * Load a {@link Server} instance. * - * <p> - * <b>NOTE</b>: This call will replace the - * thread context classloader with the classloader used to load - * the server class. - * * @parent The parent of any class loader created during boot. * @return An uninitialized (and unstarted) Server instance. * @@ -219,14 +214,22 @@ */ public Server load(final ClassLoader parent) throws Exception { - // get the boot lib list - URL[] urls = getBootClasspath(); - URLClassLoader classLoader = new URLClassLoader(urls, parent); - Thread.currentThread().setContextClassLoader(classLoader); + Server server; + ClassLoader oldCL = Thread.currentThread().getContextClassLoader(); + + try { + // get the boot lib list + URL[] urls = getBootClasspath(); + URLClassLoader classLoader = new URLClassLoader(urls, parent); + Thread.currentThread().setContextClassLoader(classLoader); - // construct a new Server instance - String typename = props.getProperty(ServerConfig.SERVER_TYPE, DEFAULT_SERVER_TYPE); - Server server = createServer(typename, classLoader); + // construct a new Server instance + String typename = props.getProperty(ServerConfig.SERVER_TYPE, DEFAULT_SERVER_TYPE); + server = createServer(typename, classLoader); + } + finally { + Thread.currentThread().setContextClassLoader(oldCL); + } // thats all folks, have fun return server;
_______________________________________________ Jboss-development mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/jboss-development