[ https://issues.apache.org/jira/browse/GERONIMO-6175?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13213218#comment-13213218 ]
Forrest Xia commented on GERONIMO-6175: --------------------------------------- I compared the multiple instance feature with the one geronimo 2.1.x release in that discussion. To answer your questions: * With all the patches provided and applied under the GERONIMO-6270 umbrella, how close are we now? After our changes these days made under 6270 umbrella, I think we achieved the goal of re-enabling the feature in Geronimo 3.0-beta branch. You can try to build a new 3.0-beta branch to see if it works as you think. * What do we have left to enable a safe run-time of multiple instances with a shared repository? Found an issue in geronimo-6285, other potential impact to be discovered... * And is it possible in G30, as indicated in the G20 docs, for each instance to have its own primary repository and no shared repository? It could be a new feature, but let's think what difference from multiple installation before doing it. Thanks for your contribution again! > Environment variable org.apache.geronimo.repository.boot.path not used, > Repository path does not observe named instances > ------------------------------------------------------------------------------------------------------------------------ > > Key: GERONIMO-6175 > URL: https://issues.apache.org/jira/browse/GERONIMO-6175 > Project: Geronimo > Issue Type: Sub-task > Security Level: public(Regular issues) > Affects Versions: 3.0, 3.0-beta-1 > Environment: Linux x86, Red Hat Enterprise Linux Server release 5.4 > (Tikanga) > Reporter: Russell E Glaue > Priority: Minor > Labels: geronimo > > 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: > # On startup, Geronimo does not use the repository relative to the named > server instance directory. > # 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. > {noformat:borderStyle=solid} > # > 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); > } > } > ... > {noformat} > To produce this issue, follow these steps: > # Unpack the latest Geronimo javaee6 bundle as /opt/geronimo3 > # Create a Geronimo named instance directory as /opt/geronimo3/gserv1 > # Move the directories var, etc, and repository into /opt/geronimo3/gserv1 > # 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 > # Or. without the patch, Use this start script > {noformat:borderStyle=solid} > #!/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 > {noformat} > When starting the Geronimo named server instance with the above start script > the following error is experienced: > {noformat:borderStyle=solid} > [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 > {noformat} -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira