geronimo-scm mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From d...@apache.org
Subject cvs commit: incubator-geronimo/modules/system/src/java/org/apache/geronimo/system/repository ReadOnlyRepository.java
Date Wed, 25 Feb 2004 08:03:53 GMT
dain        2004/02/25 00:03:53

  Modified:    modules/deployment/src/java/org/apache/geronimo/deployment
                        Bootstrap.java DeploymentContext.java
                        ModuleDeployer.java
               modules/deployment/src/java/org/apache/geronimo/deployment/service
                        ServiceConfigBuilder.java
               modules/kernel/src/java/org/apache/geronimo/kernel/config
                        Configuration.java
               modules/system/src/java/org/apache/geronimo/system/repository
                        ReadOnlyRepository.java
  Log:
  Simplified Bootstrap construction of the deployer
  The deployer.jar is built from the deployer-system-plan.xml file and the
  j2ee deployer is built from the j2ee-deployer-plan.xml.  This eliminates
  all of the hard coded plans from Bootstrap.
  
  Revision  Changes    Path
  1.10      +61 -167   incubator-geronimo/modules/deployment/src/java/org/apache/geronimo/deployment/Bootstrap.java
  
  Index: Bootstrap.java
  ===================================================================
  RCS file: /home/cvs/incubator-geronimo/modules/deployment/src/java/org/apache/geronimo/deployment/Bootstrap.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- Bootstrap.java	24 Feb 2004 07:36:20 -0000	1.9
  +++ Bootstrap.java	25 Feb 2004 08:03:53 -0000	1.10
  @@ -58,34 +58,20 @@
   import java.io.BufferedOutputStream;
   import java.io.File;
   import java.io.FileOutputStream;
  -import java.io.ObjectOutputStream;
  -import java.net.URI;
  -import java.net.URL;
  -import java.util.ArrayList;
  -import java.util.Collections;
  -import java.util.HashMap;
  -import java.util.Map;
   import java.util.jar.Attributes;
   import java.util.jar.JarInputStream;
   import java.util.jar.JarOutputStream;
   import java.util.jar.Manifest;
   import java.util.zip.ZipEntry;
  -import javax.management.ObjectName;
   
   import org.apache.geronimo.deployment.service.ServiceConfigBuilder;
  -import org.apache.geronimo.gbean.jmx.GBeanMBean;
  -import org.apache.geronimo.kernel.Kernel;
  -import org.apache.geronimo.kernel.config.Configuration;
  -import org.apache.geronimo.kernel.config.ConfigurationManager;
  -import org.apache.geronimo.kernel.jmx.JMXUtil;
  +import org.apache.geronimo.deployment.xbeans.ConfigurationDocument;
  +import org.apache.geronimo.deployment.xbeans.ConfigurationType;
   import org.apache.geronimo.system.configuration.LocalConfigStore;
   import org.apache.geronimo.system.main.CommandLine;
   import org.apache.geronimo.system.repository.ReadOnlyRepository;
  -import org.apache.geronimo.system.serverinfo.ServerInfo;
   import org.apache.xmlbeans.XmlBeans;
   import org.apache.xmlbeans.XmlObject;
  -import org.apache.commons.logging.Log;
  -import org.apache.commons.logging.LogFactory;
   
   /**
    * Helper class to bootstrap the Geronimo deployer.
  @@ -93,212 +79,120 @@
    * @version $Revision$ $Date$
    */
   public class Bootstrap {
  -    public static final URI CONFIG_ID = URI.create("org/apache/geronimo/DeployerSystem");
  -    private static final ObjectName REPOSITORY_NAME = JMXUtil.getObjectName("geronimo.deployer:role=Repository,root=repository");
  -    private static final ObjectName SERVICE_BUILDER_NAME = JMXUtil.getObjectName("geronimo.deployer:role=Builder,type=Service,id="
+ CONFIG_ID.toString());
  +    private String deployerJar;
  +    private String storeDir;
  +    private String repositoryDir;
  +    private String deployerSystemPlan;
  +    private String j2eeDeployerPlan;
  +    private String deployerClassPath;
  +    private String deployerGBean;
   
  -    private String outputFile;
  -    private String baseDir;
  -    private String store;
  -    private String deploymentPlan;
  -    private String classPath;
  -    private String mainGBean;
  -    private String mainMethod;
  -    private String configurations;
  -
  -    public String getOutputFile() {
  -        return outputFile;
  -    }
  -
  -    public void setOutputFile(String outputFile) {
  -        this.outputFile = outputFile;
  +    public String getDeployerJar() {
  +        return deployerJar;
       }
   
  -    public String getBaseDir() {
  -        return baseDir;
  +    public void setDeployerJar(String deployerJar) {
  +        this.deployerJar = deployerJar;
       }
   
  -    public void setBaseDir(String baseDir) {
  -        this.baseDir = baseDir;
  +    public String getStoreDir() {
  +        return storeDir;
       }
   
  -    public String getStore() {
  -        return store;
  +    public void setStoreDir(String storeDir) {
  +        this.storeDir = storeDir;
       }
   
  -    public void setStore(String store) {
  -        this.store = store;
  +    public String getRepositoryDir() {
  +        return repositoryDir;
       }
   
  -    public String getDeploymentPlan() {
  -        return deploymentPlan;
  +    public void setRepositoryDir(String repositoryDir) {
  +        this.repositoryDir = repositoryDir;
       }
   
  -    public void setDeploymentPlan(String deploymentPlan) {
  -        this.deploymentPlan = deploymentPlan;
  +    public String getDeployerSystemPlan() {
  +        return deployerSystemPlan;
       }
   
  -    public String getClassPath() {
  -        return classPath;
  +    public void setDeployerSystemPlan(String deployerSystemPlan) {
  +        this.deployerSystemPlan = deployerSystemPlan;
       }
   
  -    public void setClassPath(String classPath) {
  -        this.classPath = classPath;
  +    public String getJ2eeDeployerPlan() {
  +        return j2eeDeployerPlan;
       }
   
  -    public String getMainGBean() {
  -        return mainGBean;
  +    public void setJ2eeDeployerPlan(String j2eeDeployerPlan) {
  +        this.j2eeDeployerPlan = j2eeDeployerPlan;
       }
   
  -    public void setMainGBean(String mainGBean) {
  -        this.mainGBean = mainGBean;
  +    public String getDeployerClassPath() {
  +        return deployerClassPath;
       }
   
  -    public String getMainMethod() {
  -        return mainMethod;
  +    public void setDeployerClassPath(String deployerClassPath) {
  +        this.deployerClassPath = deployerClassPath;
       }
   
  -    public void setMainMethod(String mainMethod) {
  -        this.mainMethod = mainMethod;
  +    public String getDeployerGBean() {
  +        return deployerGBean;
       }
   
  -    public String getConfigurations() {
  -        return configurations;
  +    public void setDeployerGBean(String deployerGBean) {
  +        this.deployerGBean = deployerGBean;
       }
   
  -    public void setConfigurations(String configurations) {
  -        this.configurations = configurations;
  -    }
  -
  -    public void bootstrap() {
  -        File file = new File(outputFile);
  -        File storeDir = new File(baseDir, store);
  -
  +    public void bootstrap() throws Exception {
           ClassLoader oldCL = Thread.currentThread().getContextClassLoader();
           Thread.currentThread().setContextClassLoader(Bootstrap.class.getClassLoader());
           try {
  -            GBeanMBean deploymentSystemConfig = getDeploymentSystemConfig(new URI(store));
  +            // parse the deployment-system and j2ee-deployer plans
  +            XmlObject deployerSystemXML = XmlBeans.getContextTypeLoader().parse(new File(deployerSystemPlan),
null, null);
  +            XmlObject j2eeDeployerXML = XmlBeans.getContextTypeLoader().parse(new File(j2eeDeployerPlan),
null, null);
  +            ConfigurationType j2eeDeployerConfig = ((ConfigurationDocument) j2eeDeployerXML).getConfiguration();
  +
  +            // create the service builder, repository and config store objects
  +            LocalConfigStore configStore = new LocalConfigStore(new File(storeDir));
  +            ReadOnlyRepository repository = new ReadOnlyRepository(new File(repositoryDir));
  +            ServiceConfigBuilder builder = new ServiceConfigBuilder(repository);
   
               // create the manifext
               Manifest manifest = new Manifest();
               Attributes mainAttributes = manifest.getMainAttributes();
               mainAttributes.putValue(Attributes.Name.MANIFEST_VERSION.toString(), "1.0");
               mainAttributes.putValue(Attributes.Name.MAIN_CLASS.toString(), CommandLine.class.getName());
  -            mainAttributes.putValue(Attributes.Name.CLASS_PATH.toString(), classPath);
  -            mainAttributes.putValue(CommandLine.MAIN_GBEAN.toString(), mainGBean);
  -            mainAttributes.putValue(CommandLine.MAIN_METHOD.toString(), mainMethod);
  -            mainAttributes.putValue(CommandLine.CONFIGURATIONS.toString(), configurations);
  +            mainAttributes.putValue(Attributes.Name.CLASS_PATH.toString(), deployerClassPath);
  +            mainAttributes.putValue(CommandLine.MAIN_GBEAN.toString(), deployerGBean);
  +            mainAttributes.putValue(CommandLine.MAIN_METHOD.toString(), "deploy");
  +            mainAttributes.putValue(CommandLine.CONFIGURATIONS.toString(), j2eeDeployerConfig.getConfigId());
   
  +            // build and install the deployer-system configuration
               // write the deployer system out to a jar
  -            JarOutputStream jos = new JarOutputStream(new BufferedOutputStream(new FileOutputStream(file)),
manifest);
  +            File outputFile = new File(deployerJar);
  +            JarOutputStream jos = new JarOutputStream(new BufferedOutputStream(new FileOutputStream(outputFile)),
manifest);
               try {
                   // add the startup jar entry which allows us to locat the startup directory
                   jos.putNextEntry(new ZipEntry("META-INF/startup-jar"));
                   jos.closeEntry();
   
  -                // write the configuration to the jar
  -                jos.putNextEntry(new ZipEntry("META-INF/config.ser"));
  -                ObjectOutputStream ois = new ObjectOutputStream(jos);
  -                Configuration.storeGMBeanState(deploymentSystemConfig, ois);
  -                ois.flush();
  -                jos.closeEntry();
  +                // add the deployment system configuration to the jar
  +                builder.buildConfiguration(jos, deployerSystemXML);
               } finally {
                   jos.close();
               }
  +            configStore.install(outputFile.toURL());
   
  -            // install the deployer systen in to the config store
  -            LocalConfigStore configStore = new LocalConfigStore(storeDir);
  -            configStore.install(file.toURL());
  -
  -            System.setProperty("geronimo.base.dir", baseDir);
  -            Kernel kernel = new Kernel("geronimo.bootstrap");
  -            kernel.boot();
  -
  -            ConfigurationManager configurationManager = kernel.getConfigurationManager();
  -            ObjectName deploymentSystemName = configurationManager.load(deploymentSystemConfig,
file.toURL());
  -            kernel.startRecursiveGBean(deploymentSystemName);
  -
  -            GBeanMBean serviceDeployerConfig = getServiceDeployerConfig();
  -            serviceDeployerConfig.setReferencePatterns("Parent", Collections.singleton(deploymentSystemName));
  -            ObjectName serviceDeployerName = configurationManager.load(serviceDeployerConfig,
file.toURL());
  -            kernel.startRecursiveGBean(serviceDeployerName);
  -
  -            File tempFile = File.createTempFile("deployer", ".car");
  +            // build and install the j2ee-deployer configuration
  +            File tempFile = File.createTempFile("j2ee-deployer", ".car");
               try {
  -                URL planURL = new File(deploymentPlan).toURL();
  -                XmlObject plan = XmlBeans.getContextTypeLoader().parse(planURL, null, null);
  -                kernel.getMBeanServer().invoke(
  -                        SERVICE_BUILDER_NAME,
  -                        "buildConfiguration",
  -                        new Object[]{tempFile, null, plan},
  -                        new String[]{File.class.getName(), JarInputStream.class.getName(),
XmlObject.class.getName()});
  +                builder.buildConfiguration(tempFile, (JarInputStream)null, j2eeDeployerXML);
                   configStore.install(tempFile.toURL());
               } finally {
                   tempFile.delete();
               }
  -
  -            kernel.stopGBean(deploymentSystemName);
  -            kernel.shutdown();
  -        } catch (Exception e) {
  -            e.printStackTrace();
  -            System.exit(2);
  -            throw new AssertionError();
           } finally {
               Thread.currentThread().setContextClassLoader(oldCL);
           }
  -    }
  -
  -    private static GBeanMBean getDeploymentSystemConfig(URI storeDir) throws Exception
{
  -        Map gbeans = new HashMap();
  -
  -        // Install ServerInfo GBean
  -        ObjectName serverInfoName = new ObjectName("geronimo.deployer:role=ServerInfo");
  -        GBeanMBean serverInfo = new GBeanMBean(ServerInfo.getGBeanInfo());
  -        gbeans.put(serverInfoName, serverInfo);
  -
  -        // Install LocalConfigStore
  -        GBeanMBean storeGBean = new GBeanMBean(LocalConfigStore.getGBeanInfo());
  -        storeGBean.setAttribute("root", storeDir);
  -        storeGBean.setReferencePatterns("ServerInfo", Collections.singleton(serverInfoName));
  -        gbeans.put(new ObjectName("geronimo.boot:role=ConfigurationStore"), storeGBean);
  -
  -        // Install default local Repository
  -        GBeanMBean localRepo = new GBeanMBean(ReadOnlyRepository.GBEAN_INFO);
  -        localRepo.setAttribute("Root", URI.create("repository/"));
  -        localRepo.setReferencePatterns("ServerInfo", Collections.singleton(serverInfoName));
  -        gbeans.put(REPOSITORY_NAME, localRepo);
  -
  -        // assemble the deployer system configuration
  -        GBeanMBean config = new GBeanMBean(Configuration.GBEAN_INFO);
  -        config.setAttribute("ID", CONFIG_ID);
  -        config.setReferencePatterns("Parent", null);
  -        config.setAttribute("ClassPath", new ArrayList());
  -        config.setAttribute("GBeanState", Configuration.storeGBeans(gbeans));
  -        config.setAttribute("Dependencies", Collections.EMPTY_LIST);
  -        return config;
  -    }
  -
  -    private static GBeanMBean getServiceDeployerConfig() throws Exception {
  -        Map gbeans = new HashMap();
  -
  -        // Install ServiceConfigBuilder
  -        GBeanMBean serviceBuilder = new GBeanMBean(ServiceConfigBuilder.GBEAN_INFO);
  -        serviceBuilder.setReferencePatterns("Repository", Collections.singleton(REPOSITORY_NAME));
  -        serviceBuilder.setReferencePatterns("Kernel", Collections.singleton(Kernel.KERNEL));
  -        gbeans.put(SERVICE_BUILDER_NAME, serviceBuilder);
  -
  -        // Install Deployer
  -        ObjectName deployerName = Deployer.getDeployerName(CONFIG_ID);
  -        GBeanMBean deployer = new GBeanMBean(Deployer.GBEAN_INFO);
  -        deployer.setReferencePatterns("Builders", Collections.singleton(SERVICE_BUILDER_NAME));
  -        gbeans.put(deployerName, deployer);
  -
  -        GBeanMBean config = new GBeanMBean(Configuration.GBEAN_INFO);
  -        config.setAttribute("ID", new URI("temp/deployment/ServiceDeployer"));
  -        config.setAttribute("ClassPath", new ArrayList());
  -        config.setAttribute("GBeanState", Configuration.storeGBeans(gbeans));
  -        config.setAttribute("Dependencies", Collections.EMPTY_LIST);
  -
  -        return config;
       }
   }
  
  
  
  1.5       +10 -8     incubator-geronimo/modules/deployment/src/java/org/apache/geronimo/deployment/DeploymentContext.java
  
  Index: DeploymentContext.java
  ===================================================================
  RCS file: /home/cvs/incubator-geronimo/modules/deployment/src/java/org/apache/geronimo/deployment/DeploymentContext.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- DeploymentContext.java	24 Feb 2004 06:05:36 -0000	1.4
  +++ DeploymentContext.java	25 Feb 2004 08:03:53 -0000	1.5
  @@ -115,7 +115,7 @@
               throw new AssertionError();
           }
   
  -        if (parentID != null) {
  +        if (kernel != null && parentID != null) {
               ObjectName parentName = ConfigurationManager.getConfigObjectName(parentID);
               config.setReferencePatterns("Parent", Collections.singleton(parentName));
               try {
  @@ -141,9 +141,11 @@
               }
           } else {
               ancestors = null;
  -            parentCL = ClassLoader.getSystemClassLoader();
  +            // no explicit parent set, so use the class loader of this class as
  +            // the parent... this class should be in the root geronimo classloader,
  +            // which is normally the system class loader but not always, so be safe
  +            parentCL = getClass().getClassLoader();
           }
  -
       }
   
       public URI getConfigID() {
  @@ -228,12 +230,12 @@
           jos.flush();
           jos.close();
   
  -        try {
  -            if (ancestors != null && ancestors.size() > 0) {
  +        if (kernel != null && ancestors != null && ancestors.size() >
0) {
  +            try {
                   kernel.stopGBean((ObjectName) ancestors.get(0));
  +            } catch (Exception e) {
  +                throw new DeploymentException(e);
               }
  -        } catch (Exception e) {
  -            throw new DeploymentException(e);
           }
       }
   
  
  
  
  1.5       +7 -12     incubator-geronimo/modules/deployment/src/java/org/apache/geronimo/deployment/ModuleDeployer.java
  
  Index: ModuleDeployer.java
  ===================================================================
  RCS file: /home/cvs/incubator-geronimo/modules/deployment/src/java/org/apache/geronimo/deployment/ModuleDeployer.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- ModuleDeployer.java	10 Feb 2004 22:34:04 -0000	1.4
  +++ ModuleDeployer.java	25 Feb 2004 08:03:53 -0000	1.5
  @@ -67,25 +67,22 @@
   import java.net.URL;
   import java.net.URLClassLoader;
   import java.util.ArrayList;
  +import java.util.Collections;
   import java.util.HashMap;
   import java.util.Iterator;
   import java.util.LinkedHashSet;
   import java.util.LinkedList;
   import java.util.List;
   import java.util.Map;
  -import java.util.Collections;
   import java.util.jar.JarOutputStream;
   import java.util.zip.ZipEntry;
   import javax.management.ObjectName;
  -import javax.management.AttributeNotFoundException;
  -import javax.management.InvalidAttributeValueException;
  -import javax.management.MBeanException;
  -import javax.management.ReflectionException;
   
   import org.apache.geronimo.gbean.InvalidConfigurationException;
   import org.apache.geronimo.gbean.jmx.GBeanMBean;
   import org.apache.geronimo.kernel.config.Configuration;
   import org.apache.geronimo.kernel.config.ConfigurationParent;
  +import org.apache.geronimo.kernel.Kernel;
   
   /**
    *
  @@ -161,12 +158,10 @@
               }
               ClassLoader cl;
               if (parent == null) {
  -                //Use in maven plugin seems to require access to the classloader used to
load this class,
  -                //not just the SystemClassLoader.  DeployCommand sets the thread context
classloader.
  -                // If I understand Maven correctly it will load using a classloader including
the
  -                //dependencies specified in the plugins project.xml file.
  -                //cl = new URLClassLoader(urls);
  -                cl = new URLClassLoader(urls, Thread.currentThread().getContextClassLoader());
  +                // no explicit parent set, so use the class loader of Kernel as the
  +                // parent... the Kernel class should be in the root geronimo classloader,
  +                // which is normally the system class loader but not always, so be safe
  +                cl = new URLClassLoader(urls, Kernel.class.getClassLoader());
               } else {
                   cl = new URLClassLoader(urls, parent.getClassLoader());
               }
  
  
  
  1.8       +41 -31    incubator-geronimo/modules/deployment/src/java/org/apache/geronimo/deployment/service/ServiceConfigBuilder.java
  
  Index: ServiceConfigBuilder.java
  ===================================================================
  RCS file: /home/cvs/incubator-geronimo/modules/deployment/src/java/org/apache/geronimo/deployment/service/ServiceConfigBuilder.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- ServiceConfigBuilder.java	24 Feb 2004 06:05:37 -0000	1.7
  +++ ServiceConfigBuilder.java	25 Feb 2004 08:03:53 -0000	1.8
  @@ -103,6 +103,10 @@
       private final Repository repository;
       private final Kernel kernel;
   
  +    public ServiceConfigBuilder(Repository repository) {
  +        this(repository, null);
  +    }
  +
       public ServiceConfigBuilder(Repository repository, Kernel kernel) {
           this.repository = repository;
           this.kernel = kernel;
  @@ -125,30 +129,13 @@
       }
   
       public void buildConfiguration(File outfile, JarInputStream module, XmlObject plan)
throws IOException, DeploymentException {
  -        ConfigurationType configType = ((ConfigurationDocument) plan).getConfiguration();
  -        URI configID;
  -        try {
  -            configID = new URI(configType.getConfigId());
  -        } catch (URISyntaxException e) {
  -            throw new DeploymentException("Invalid configId " + configType.getConfigId(),
e);
  -        }
  -        URI parentID;
  -        if (configType.isSetParentId()) {
  -            try {
  -                parentID = new URI(configType.getParentId());
  -            } catch (URISyntaxException e) {
  -                throw new DeploymentException("Invalid parentId " + configType.getParentId(),
e);
  -            }
  -        } else {
  -            parentID = null;
  -        }
  -
           // create the manifext
           Manifest manifest = new Manifest();
           Attributes mainAttributes = manifest.getMainAttributes();
           mainAttributes.putValue(Attributes.Name.MANIFEST_VERSION.toString(), "1.0");
   
           // add the manifest entries to make the archive executable
  +        ConfigurationType configType = ((ConfigurationDocument) plan).getConfiguration();
           ExecutableType executable = configType.getExecutable();
           if(executable != null) {
               mainAttributes.putValue(Attributes.Name.MAIN_CLASS.toString(), executable.getMainClass());
  @@ -167,22 +154,45 @@
                   os.closeEntry();
               }
   
  -            DeploymentContext context = null;
  -            try {
  -                context = new DeploymentContext(os, configID, parentID, kernel);
  -            } catch (MalformedObjectNameException e) {
  -                throw new DeploymentException(e);
  -            }
  -            addIncludes(context, configType);
  -            addDependencies(context, configType.getDependencyArray());
  -            ClassLoader cl = context.getClassLoader(repository);
  -            addGBeans(context, configType.getGbeanArray(), cl);
  -            context.close();
  -            os.flush();
  +            buildConfiguration(os, plan);
  +
           } finally {
               fos.close();
           }
   
  +    }
  +
  +    public void buildConfiguration(JarOutputStream os, XmlObject plan) throws DeploymentException,
IOException {
  +        ConfigurationType configType = ((ConfigurationDocument) plan).getConfiguration();
  +        URI configID;
  +        try {
  +            configID = new URI(configType.getConfigId());
  +        } catch (URISyntaxException e) {
  +            throw new DeploymentException("Invalid configId " + configType.getConfigId(),
e);
  +        }
  +        URI parentID;
  +        if (configType.isSetParentId()) {
  +            try {
  +                parentID = new URI(configType.getParentId());
  +            } catch (URISyntaxException e) {
  +                throw new DeploymentException("Invalid parentId " + configType.getParentId(),
e);
  +            }
  +        } else {
  +            parentID = null;
  +        }
  +
  +        DeploymentContext context = null;
  +        try {
  +            context = new DeploymentContext(os, configID, parentID, kernel);
  +        } catch (MalformedObjectNameException e) {
  +            throw new DeploymentException(e);
  +        }
  +        addIncludes(context, configType);
  +        addDependencies(context, configType.getDependencyArray());
  +        ClassLoader cl = context.getClassLoader(repository);
  +        addGBeans(context, configType.getGbeanArray(), cl);
  +        context.close();
  +        os.flush();
       }
   
       private void addIncludes(DeploymentContext context, ConfigurationType configType) throws
DeploymentException {
  
  
  
  1.15      +5 -2      incubator-geronimo/modules/kernel/src/java/org/apache/geronimo/kernel/config/Configuration.java
  
  Index: Configuration.java
  ===================================================================
  RCS file: /home/cvs/incubator-geronimo/modules/kernel/src/java/org/apache/geronimo/kernel/config/Configuration.java,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- Configuration.java	24 Feb 2004 18:41:45 -0000	1.14
  +++ Configuration.java	25 Feb 2004 08:03:53 -0000	1.15
  @@ -193,7 +193,10 @@
           log.debug("ClassPath for " + id + " resolved to " + Arrays.asList(urls));
   
           if (parent == null) {
  -            classLoader = new URLClassLoader(urls, Thread.currentThread().getContextClassLoader());
  +            // no explicit parent set, so use the class loader of this class as
  +            // the parent... this class should be in the root geronimo classloader,
  +            // which is normally the system class loader but not always, so be safe
  +            classLoader = new URLClassLoader(urls, getClass().getClassLoader());
           } else {
               classLoader = new URLClassLoader(urls, parent.getClassLoader());
           }
  
  
  
  1.3       +14 -4     incubator-geronimo/modules/system/src/java/org/apache/geronimo/system/repository/ReadOnlyRepository.java
  
  Index: ReadOnlyRepository.java
  ===================================================================
  RCS file: /home/cvs/incubator-geronimo/modules/system/src/java/org/apache/geronimo/system/repository/ReadOnlyRepository.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- ReadOnlyRepository.java	13 Feb 2004 07:22:22 -0000	1.2
  +++ ReadOnlyRepository.java	25 Feb 2004 08:03:53 -0000	1.3
  @@ -85,6 +85,16 @@
       private final ServerInfo serverInfo;
       private URI rootURI;
   
  +    public ReadOnlyRepository(File root) {
  +        this(root.toURI());
  +    }
  +
  +    public ReadOnlyRepository(URI rootURI) {
  +        this.root = null;
  +        this.serverInfo = null;
  +        this.rootURI = rootURI;
  +    }
  +
       public ReadOnlyRepository(URI root, ServerInfo serverInfo) {
           this.root = root;
           this.serverInfo = serverInfo;
  @@ -113,16 +123,16 @@
       }
   
       public void doStart() throws WaitingException, Exception {
  -        rootURI = serverInfo.resolve(root);
  +        if(rootURI == null) {
  +            rootURI = serverInfo.resolve(root);
  +        }
           log.info("Repository root is "+rootURI);
       }
   
       public void doStop() throws WaitingException, Exception {
  -        rootURI = null;
       }
   
       public void doFail() {
  -        rootURI = null;
       }
   
       public static final GBeanInfo GBEAN_INFO;
  
  
  

Mime
View raw message