Uploaded image for project: 'Geronimo'
  1. Geronimo
  2. GERONIMO-6270 Re-enable multiple instances support in one installation
  3. GERONIMO-6175

Environment variable org.apache.geronimo.repository.boot.path not used, Repository path does not observe named instances

    Details

    • Type: Sub-task
    • Status: Resolved
    • Priority: Minor
    • Resolution: Won't Fix
    • Affects Version/s: 3.0.0, 3.0-beta-1
    • Fix Version/s: None
    • Component/s: None
    • Security Level: public (Regular issues)
    • Labels:
    • Environment:

      Linux x86, Red Hat Enterprise Linux Server release 5.4 (Tikanga)

      Description

      I only list this issue as minor, as the issue does not prevent running Geronimo, or more than one copy of Geronimo on a single server. However, this issue does prevent the proper utilization of multiple named server instances.

      Two issues:

      1. On startup, Geronimo does not use the repository relative to the named server instance directory.
      2. We are unable to set the repository with the property org.apache.geronimo.repository.boot.path to be relative to the named server instance directory.

      From what I could decipher, these are the (or some) of the primary classes defining the repository

      • framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/config/ConfigurationUtil.java
      • plugins/jaxws/geronimo-jaxws-sun-tools/src/main/java/org/apache/geronimo/jaxws/sun/tools/JAXWSToolsCLI.java
      • plugins/cxf/geronimo-cxf-tools/src/main/java/org/apache/geronimo/cxf/tools/JAXWSToolsCLI.java

      And the property "org.apache.geronimo.repository.boot.path" has a prepended "X" in each of the three files.
      This tells me it was specifically disabled, and probably for some big issue.

      # framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/config/ConfigurationUtil.java
      ...
              Collection repositories = null;
              ArtifactResolver artifactResolver = null;
              if (enableBootRepo) {
                  String repository = System.getProperty("Xorg.apache.geronimo.repository.boot.path", "repository");
                  Maven2Repository bootRepository = new Maven2Repository(new File(getBootDirectory(), repository));
                  repositories = Collections.singleton(bootRepository);
                  artifactResolver = new DefaultArtifactResolver(new DefaultArtifactManager(), bootRepository);
              } else {
                  // a bootstrap configuration can not have any dependencies
                  List dependencies = configurationData.getEnvironment().getDependencies();
                  if (!dependencies.isEmpty()) {
                      configurationData.getEnvironment().setDependencies(Collections.EMPTY_SET);
                  }
              }
      ...
      

      To produce this issue, follow these steps:

      1. Unpack the latest Geronimo javaee6 bundle as /opt/geronimo3
      2. Create a Geronimo named instance directory as /opt/geronimo3/gserv1
      3. Move the directories var, etc, and repository into /opt/geronimo3/gserv1
      4. If patch GERONIMO-6275 in applied, start with this:
        • env JAVA_HOME=/usr/jdk1.6.0 GERONIMO_SERVER=/opt/geronimo3/gserv1 /opt/geronimo3/bin/geronimo run
      5. Or. without the patch, Use this start script
        #!/bin/bash
        GHOME=/opt/geronimo3
        GVIRT=gserv1
        
        # Must change to the server directory in order to work around ActiveMQ lock
        # file conflict issue reported in GERONIMO-5987.
        cd ${GHOME}/${GVIRT}
        
        # Uncomment for the Workaround of issues in GERONIMO-6174
        export GERONIMO_TMPDIR=${GHOME}/${GVIRT}/var/temp
        GERONIMO_OPTS="${GERONIMO_OPTS} -Dkaraf.home=${GHOME}/${GVIRT}"
        #
        
        # Attempt to specify the correct root path to the repository for this
        # named server instance
        GERONIMO_OPTS="${GERONIMO_OPTS} -Dorg.apache.geronimo.repository.boot.path=${GHOME}/${GVIRT}/repository"
        #
        
        GERONIMO_OPTS="${GERONIMO_OPTS} -Dorg.apache.geronimo.server.name=${GVIRT}"
        export GERONIMO_OPTS
        ${GHOME}/bin/geronimo run
        

      When starting the Geronimo named server instance with the above start script the following error is experienced:

      [user@linux gserv1]# ./start.sh 
      Using GERONIMO_HOME:   /opt/geronimo3
      Using GERONIMO_TMPDIR: /opt/geronimo3/gserv1/var/temp
      Using JRE_HOME:        /usr/jdk1.6.0/jre
                                                                
           ______                       _                       
          / ____/___  _________  ____  (_)____ ___  ____        
         / / __ / _ \/ ___/ __ \/ __ \/ // __ `__ \/ __ \  
        / /_/ //  __/ /  / /_/ / / / / // / / / / / /_/ /       
        \____/ \___/_/   \____/_/ /_/_//_/ /_/ /_/\____/    
      
        Apache Geronimo (3.0-SNAPSHOT)
      
      Hit '<tab>' for a list of available commands
      and '[cmd] --help' for help on a specific command.
      Hit '<ctrl-d>' or 'osgi:shutdown' to shutdown Geronimo.
      
      geronimo> 2011-09-26 15:01:25,752 ERROR [GBeanInstanceState] Error while starting; GBean is now in the FAILED state: abstractName="org.apache.geronimo.framework/j2ee-system/3.0-SNAPSHOT/car?ServiceModule=org.apache.geronimo.framework/j2ee-system/3.0-SNAPSHOT/car,j2eeType=Repository,name=Repository"
      java.lang.IllegalStateException: Maven2Repository must have a root that's a valid readable directory (not /opt/geronimo3/repository)
      	at org.apache.geronimo.kernel.repository.AbstractRepository.<init>(AbstractRepository.java:51)
      	at org.apache.geronimo.kernel.repository.Maven2Repository.<init>(Maven2Repository.java:32)
      	at org.apache.geronimo.system.repository.Maven2Repository.<init>(Maven2Repository.java:36)
      	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
      	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
      	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
      	at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
      	at org.apache.xbean.recipe.ReflectionUtil$ConstructorFactory.create(ReflectionUtil.java:958)
      	at org.apache.xbean.recipe.ObjectRecipe.internalCreate(ObjectRecipe.java:276)
      	at org.apache.xbean.recipe.AbstractRecipe.create(AbstractRecipe.java:96)
      	at org.apache.xbean.recipe.AbstractRecipe.create(AbstractRecipe.java:61)
      	at org.apache.geronimo.gbean.runtime.GBeanInstance.createInstance(GBeanInstance.java:958)
      	at org.apache.geronimo.gbean.runtime.GBeanInstanceState.attemptFullStart(GBeanInstanceState.java:271)
      	at org.apache.geronimo.gbean.runtime.GBeanInstanceState.start(GBeanInstanceState.java:105)
      	at org.apache.geronimo.gbean.runtime.GBeanInstance.start(GBeanInstance.java:555)
      	at org.apache.geronimo.gbean.runtime.GBeanDependency.attemptFullStart(GBeanDependency.java:110)
      	at org.apache.geronimo.gbean.runtime.GBeanDependency.addTarget(GBeanDependency.java:145)
      	at org.apache.geronimo.gbean.runtime.GBeanDependency$1.running(GBeanDependency.java:119)
      	at org.apache.geronimo.kernel.basic.BasicLifecycleMonitor.fireRunningEvent(BasicLifecycleMonitor.java:176)
      	at org.apache.geronimo.kernel.basic.BasicLifecycleMonitor.access$300(BasicLifecycleMonitor.java:45)
      	at org.apache.geronimo.kernel.basic.BasicLifecycleMonitor$RawLifecycleBroadcaster.fireRunningEvent(BasicLifecycleMonitor.java:254)
      	at org.apache.geronimo.gbean.runtime.GBeanInstanceState.attemptFullStart(GBeanInstanceState.java:301)
      	at org.apache.geronimo.gbean.runtime.GBeanInstanceState.start(GBeanInstanceState.java:105)
      	at org.apache.geronimo.gbean.runtime.GBeanInstanceState.startRecursive(GBeanInstanceState.java:127)
      	at org.apache.geronimo.gbean.runtime.GBeanInstance.startRecursive(GBeanInstance.java:569)
      	at org.apache.geronimo.kernel.basic.BasicKernel.startRecursiveGBean(BasicKernel.java:386)
      	at org.apache.geronimo.kernel.config.ConfigurationUtil.startConfigurationGBeans(ConfigurationUtil.java:462)
      	at org.apache.geronimo.kernel.config.ConfigurationUtil.loadBootstrapConfiguration(ConfigurationUtil.java:216)
      	at org.apache.geronimo.system.osgi.BootActivator.start(BootActivator.java:70)
      	at org.eclipse.osgi.framework.internal.core.BundleContextImpl$1.run(BundleContextImpl.java:711)
      	at java.security.AccessController.doPrivileged(Native Method)
      	at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:702)
      	at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:683)
      	at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:381)
      	at org.eclipse.osgi.framework.internal.core.AbstractBundle.resume(AbstractBundle.java:389)
      	at org.eclipse.osgi.framework.internal.core.Framework.resumeBundle(Framework.java:1131)
      	at org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:559)
      	at org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:544)
      	at org.eclipse.osgi.framework.internal.core.StartLevelManager.incFWSL(StartLevelManager.java:457)
      	at org.eclipse.osgi.framework.internal.core.StartLevelManager.doSetStartLevel(StartLevelManager.java:243)
      	at org.eclipse.osgi.framework.internal.core.EquinoxLauncher.internalStart(EquinoxLauncher.java:271)
      	at org.eclipse.osgi.framework.internal.core.EquinoxLauncher.start(EquinoxLauncher.java:241)
      	at org.eclipse.osgi.launch.Equinox.start(Equinox.java:258)
      	at org.apache.geronimo.main.FrameworkLauncher.launchOSGiFramework(FrameworkLauncher.java:185)
      	at org.apache.geronimo.main.FrameworkLauncher.launch(FrameworkLauncher.java:166)
      	at org.apache.geronimo.main.Bootstrapper.execute(Bootstrapper.java:47)
      	at org.apache.geronimo.cli.AbstractCLI.executeMain(AbstractCLI.java:65)
      	at org.apache.geronimo.cli.daemon.DaemonCLI.main(DaemonCLI.java:32)
      2011-09-26 15:01:25,868 WARN  [FeaturesServiceImpl] Unable to add features repository mvn:org.apache.geronimo.features/openejb-feature/3.0-SNAPSHOT/xml/features at startup
      java.lang.RuntimeException: URL [mvn:org.apache.geronimo.features/openejb-feature/3.0-SNAPSHOT/xml/features] could not be resolved.
      	at org.ops4j.pax.url.mvn.internal.Connection.getInputStream(Connection.java:195)
      	at org.apache.karaf.features.internal.FeatureValidationUtil.validate(FeatureValidationUtil.java:49)
      	at org.apache.karaf.features.internal.FeaturesServiceImpl.validateRepository(FeaturesServiceImpl.java:199)
      	at org.apache.karaf.features.internal.FeaturesServiceImpl.internalAddRepository(FeaturesServiceImpl.java:210)
      	at org.apache.karaf.features.internal.FeaturesServiceImpl.loadState(FeaturesServiceImpl.java:1074)
      	at org.apache.karaf.features.internal.FeaturesServiceImpl.start(FeaturesServiceImpl.java:914)
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      	at java.lang.reflect.Method.invoke(Method.java:597)
      	at org.apache.aries.blueprint.utils.ReflectionUtils.invoke(ReflectionUtils.java:226)
      	at org.apache.aries.blueprint.container.BeanRecipe.invoke(BeanRecipe.java:824)
      	at org.apache.aries.blueprint.container.BeanRecipe.runBeanProcInit(BeanRecipe.java:636)
      	at org.apache.aries.blueprint.container.BeanRecipe.internalCreate(BeanRecipe.java:724)
      	at org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:64)
      	at org.apache.aries.blueprint.container.BlueprintRepository.createInstances(BlueprintRepository.java:219)
      	at org.apache.aries.blueprint.container.BlueprintRepository.createAll(BlueprintRepository.java:147)
      	at org.apache.aries.blueprint.container.BlueprintContainerImpl.instantiateEagerComponents(BlueprintContainerImpl.java:640)
      	at org.apache.aries.blueprint.container.BlueprintContainerImpl.doRun(BlueprintContainerImpl.java:331)
      	at org.apache.aries.blueprint.container.BlueprintContainerImpl.run(BlueprintContainerImpl.java:227)
      	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
      	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
      	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
      	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:98)
      	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:206)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
      	at java.lang.Thread.run(Thread.java:662)
      2011-09-26 15:01:28,335 ERROR [GBeanInstanceState] Error while starting; GBean is now in the FAILED state: abstractName="org.apache.geronimo.framework/j2ee-system/3.0-SNAPSHOT/car?ServiceModule=org.apache.geronimo.framework/j2ee-system/3.0-SNAPSHOT/car,j2eeType=Repository,name=Repository"
      java.lang.IllegalStateException: Maven2Repository must have a root that's a valid readable directory (not /opt/geronimo3/repository)
      	at org.apache.geronimo.kernel.repository.AbstractRepository.<init>(AbstractRepository.java:51)
      	at org.apache.geronimo.kernel.repository.Maven2Repository.<init>(Maven2Repository.java:32)
      	at org.apache.geronimo.system.repository.Maven2Repository.<init>(Maven2Repository.java:36)
      	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
      	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
      	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
      	at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
      	at org.apache.xbean.recipe.ReflectionUtil$ConstructorFactory.create(ReflectionUtil.java:958)
      	at org.apache.xbean.recipe.ObjectRecipe.internalCreate(ObjectRecipe.java:276)
      	at org.apache.xbean.recipe.AbstractRecipe.create(AbstractRecipe.java:96)
      	at org.apache.xbean.recipe.AbstractRecipe.create(AbstractRecipe.java:61)
      	at org.apache.geronimo.gbean.runtime.GBeanInstance.createInstance(GBeanInstance.java:958)
      	at org.apache.geronimo.gbean.runtime.GBeanInstanceState.attemptFullStart(GBeanInstanceState.java:271)
      	at org.apache.geronimo.gbean.runtime.GBeanInstanceState.start(GBeanInstanceState.java:105)
      	at org.apache.geronimo.gbean.runtime.GBeanInstanceState.startRecursive(GBeanInstanceState.java:127)
      	at org.apache.geronimo.gbean.runtime.GBeanInstance.startRecursive(GBeanInstance.java:569)
      	at org.apache.geronimo.kernel.basic.BasicKernel.startRecursiveGBean(BasicKernel.java:386)
      	at org.apache.geronimo.kernel.config.ConfigurationUtil.startConfigurationGBeans(ConfigurationUtil.java:462)
      	at org.apache.geronimo.kernel.config.ConfigurationUtil.loadBootstrapConfiguration(ConfigurationUtil.java:216)
      	at org.apache.geronimo.system.osgi.BootActivator.start(BootActivator.java:70)
      	at org.eclipse.osgi.framework.internal.core.BundleContextImpl$1.run(BundleContextImpl.java:711)
      	at java.security.AccessController.doPrivileged(Native Method)
      	at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:702)
      	at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:683)
      	at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:381)
      	at org.eclipse.osgi.framework.internal.core.AbstractBundle.resume(AbstractBundle.java:389)
      	at org.eclipse.osgi.framework.internal.core.Framework.resumeBundle(Framework.java:1131)
      	at org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:559)
      	at org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:544)
      	at org.eclipse.osgi.framework.internal.core.StartLevelManager.incFWSL(StartLevelManager.java:457)
      	at org.eclipse.osgi.framework.internal.core.StartLevelManager.doSetStartLevel(StartLevelManager.java:243)
      	at org.eclipse.osgi.framework.internal.core.EquinoxLauncher.internalStart(EquinoxLauncher.java:271)
      	at org.eclipse.osgi.framework.internal.core.EquinoxLauncher.start(EquinoxLauncher.java:241)
      	at org.eclipse.osgi.launch.Equinox.start(Equinox.java:258)
      	at org.apache.geronimo.main.FrameworkLauncher.launchOSGiFramework(FrameworkLauncher.java:185)
      	at org.apache.geronimo.main.FrameworkLauncher.launch(FrameworkLauncher.java:166)
      	at org.apache.geronimo.main.Bootstrapper.execute(Bootstrapper.java:47)
      	at org.apache.geronimo.cli.AbstractCLI.executeMain(AbstractCLI.java:65)
      	at org.apache.geronimo.cli.daemon.DaemonCLI.main(DaemonCLI.java:32)
      Main not found
      

        Attachments

          Activity

            People

            • Assignee:
              xiaming Forrest Xia
              Reporter:
              rglaue Russell E Glaue
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: