First, I am not trying to implement a multi-server installation as documented in the wiki.
I am only trying to figure out the difference of GERONIMO_BASE vs. GERONIMO_HOME


I tried this out, and something funny happened, which I think proves my belief that GERONIMO_HOME and GERONIMO_BASE are assumed, in the code, to point at the same directory.

Here is what I did to test the GERONIMO_BASE vs. GERONIMO_HOME issue I am discussing in this thread:

I created the following directory and subdirectories:
-
$ mkdir /usr/local/geronimo/
$ cd /usr/local/geronimo/
$ tar zxvf geronimo-jetty6-javaee5-2.1.1.tgz
$ ln -s geronimo-jetty6-javaee5-2.1.1/bin
$ ln -s geronimo-jetty6-javaee5-2.1.1/etc
$ ln -s geronimo-jetty6-javaee5-2.1.1/lib
$ ln -s geronimo-jetty6-javaee5-2.1.1/cluster-repository
$ ln -s geronimo-jetty6-javaee5-2.1.1/master-repository
$ ln -s geronimo-jetty6-javaee5-2.1.1/repository
$ mkdir default-server
$ cp geronimo-jetty6-javaee5-2.1.1/var default-server/
-
I created the following shell script (following advice from the wiki).
-
$ cd /usr/local/geronimo/
$ cd default-server
$ cat start.sh
#!/bin/bash

export GERONIMO_INSTANCE_NAME=default-server

export JAVA_HOME=/usr/jdk1.5.0_07
export JAVA_OPTS='-Xmx64m'
export PATH=${JAVA_HOME}/bin:$PATH
export GERONIMO_HOME=/usr/local/geronimo
export GERONIMO_BASE=${GERONIMO_HOME}/${GERONIMO_INSTANCE_NAME}
export GERONIMO_OPTS=-Dorg.apache.geronimo.server.name=${GERONIMO_INSTANCE_NAME}

exec ${GERONIMO_HOME}/bin/startup.sh
-

And I get this error in Geronimo:
$ cd /usr/local/geronimo/
$ default-server/start
Using GERONIMO_BASE:   /usr/local/geronimo/default-server
Using GERONIMO_HOME:   /usr/local/geronimo
Using GERONIMO_TMPDIR: var/temp
Using JRE_HOME:        /usr/jdk1.5.0_07/jre
Using GERONIMO_OUT:    /usr/local/geronimo/default-server/var/log/geronimo.out

Geronimo started in background. PID: 9723
$ cat /usr/local/geronimo/default-server/var/log/geronimo.out
-
10:39:50,674 ERROR [GBeanInstanceState] Error while starting; GBean is now in the FAILED state: abstractName="org.apache.geronimo.framework/j2ee-system/2.1.1/car?ServiceModule=org.apache.geronimo.framework/j2ee-system/2.1.1/car,j2eeType=GBean,name=ServerInfo" java.lang.IllegalArgumentException: Server directory is not a directory: /usr/local/geronimo/geronimo-jetty6-javaee5-2.1.1/default-server at org.apache.geronimo.system.serverinfo.BasicServerInfo.deriveBaseServer(BasicServerInfo.java:187) at org.apache.geronimo.system.serverinfo.BasicServerInfo.<init>(BasicServerInfo.java:77) at org.apache.geronimo.system.serverinfo.BasicServerInfo.<init>(BasicServerInfo.java:51)
        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:494)
at org.apache.geronimo.gbean.runtime.GBeanInstance.createInstance(GBeanInstance.java:948) at org.apache.geronimo.gbean.runtime.GBeanInstanceState.attemptFullStart(GBeanInstanceState.java:268) at org.apache.geronimo.gbean.runtime.GBeanInstanceState.start(GBeanInstanceState.java:102) at org.apache.geronimo.gbean.runtime.GBeanInstanceState.startRecursive(GBeanInstanceState.java:124) at org.apache.geronimo.gbean.runtime.GBeanInstance.startRecursive(GBeanInstance.java:555) at org.apache.geronimo.kernel.basic.BasicKernel.startRecursiveGBean(BasicKernel.java:379) at org.apache.geronimo.kernel.config.ConfigurationUtil.startConfigurationGBeans(ConfigurationUtil.java:456) at org.apache.geronimo.kernel.config.ConfigurationUtil.loadBootstrapConfiguration(ConfigurationUtil.java:208) at org.apache.geronimo.kernel.config.ConfigurationUtil.loadBootstrapConfiguration(ConfigurationUtil.java:167) at org.apache.geronimo.kernel.util.MainConfigurationBootstrapper.loadBootConfiguration(MainConfigurationBootstrapper.java:84) at org.apache.geronimo.kernel.util.MainConfigurationBootstrapper.getMain(MainConfigurationBootstrapper.java:57) at org.apache.geronimo.kernel.util.MainConfigurationBootstrapper.main(MainConfigurationBootstrapper.java:38)
        at org.apache.geronimo.cli.AbstractCLI.executeMain(AbstractCLI.java:67)
        at org.apache.geronimo.cli.daemon.DaemonCLI.main(DaemonCLI.java:30)
org.apache.geronimo.kernel.config.InvalidConfigException: Unknown start 
exception
at org.apache.geronimo.kernel.config.ConfigurationUtil.startConfigurationGBeans(ConfigurationUtil.java:522) at org.apache.geronimo.kernel.config.ConfigurationUtil.loadBootstrapConfiguration(ConfigurationUtil.java:208) at org.apache.geronimo.kernel.config.ConfigurationUtil.loadBootstrapConfiguration(ConfigurationUtil.java:167) at org.apache.geronimo.kernel.util.MainConfigurationBootstrapper.loadBootConfiguration(MainConfigurationBootstrapper.java:84) at org.apache.geronimo.kernel.util.MainConfigurationBootstrapper.getMain(MainConfigurationBootstrapper.java:57) at org.apache.geronimo.kernel.util.MainConfigurationBootstrapper.main(MainConfigurationBootstrapper.java:38)
        at org.apache.geronimo.cli.AbstractCLI.executeMain(AbstractCLI.java:67)
        at org.apache.geronimo.cli.daemon.DaemonCLI.main(DaemonCLI.java:30)
Caused by: org.apache.geronimo.gbean.InvalidConfigurationException: Configuration org.apache.geronimo.framework/j2ee-system/2.1.1/car failed to start due to the following reasons: The service ServiceModule=org.apache.geronimo.framework/j2ee-system/2.1.1/car,j2eeType=GBean,name=ServerInfo did not start because Server directory is not a directory: /usr/local/geronimo/geronimo-jetty6-javaee5-2.1.1/default-server The service ServiceModule=org.apache.geronimo.framework/j2ee-system/2.1.1/car,j2eeType=Repository,name=Repository did not start because org.apache.geronimo.framework/j2ee-system/2.1.1/car?ServiceModule=org.apache.geronimo.framework/j2ee-system/2.1.1/car,j2eeType=GBean,name=ServerInfo did not start. The service ServiceModule=org.apache.geronimo.framework/j2ee-system/2.1.1/car,j2eeType=ConfigurationStore,name=Local did not start because org.apache.geronimo.framework/j2ee-system/2.1.1/car?ServiceModule=org.apache.geronimo.framework/j2ee-system/2.1.1/car,j2eeType=Repository,name=Repository did not start. The service ServiceModule=org.apache.geronimo.framework/j2ee-system/2.1.1/car,j2eeType=AttributeStore,name=AttributeManager did not start because org.apache.geronimo.framework/j2ee-system/2.1.1/car?ServiceModule=org.apache.geronimo.framework/j2ee-system/2.1.1/car,j2eeType=GBean,name=ServerInfo did not start. The service ServiceModule=org.apache.geronimo.framework/j2ee-system/2.1.1/car,j2eeType=ArtifactResolver,name=ArtifactResolver did not start because org.apache.geronimo.framework/j2ee-system/2.1.1/car?ServiceModule=org.apache.geronimo.framework/j2ee-system/2.1.1/car,j2eeType=GBean,name=ServerInfo did not start. The service ServiceModule=org.apache.geronimo.framework/j2ee-system/2.1.1/car,j2eeType=ConfigurationManager,name=ConfigurationManager did not start because the following dependent services did not start: [org.apache.geronimo.framework/j2ee-system/2.1.1/car?ServiceModule=org.apache.geronimo.framework/j2ee-system/2.1.1/car,j2eeType=AttributeStore,name=AttributeManager, org.apache.geronimo.framework/j2ee-system/2.1.1/car?ServiceModule=org.apache.geronimo.framework/j2ee-system/2.1.1/car,j2eeType=ArtifactResolver,name=ArtifactResolver] The service ServiceModule=org.apache.geronimo.framework/j2ee-system/2.1.1/car,j2eeType=SystemLog,name=Logger did not start because org.apache.geronimo.framework/j2ee-system/2.1.1/car?ServiceModule=org.apache.geronimo.framework/j2ee-system/2.1.1/car,j2eeType=GBean,name=ServerInfo did not start.

at org.apache.geronimo.kernel.config.ConfigurationUtil.startConfigurationGBeans(ConfigurationUtil.java:485)
        ... 7 more

-


Note that in the geronimo.sh script, it is configured:
-Dorg.apache.geronimo.base.dir="$GERONIMO_BASE"

Thus resulting in this case:
-Dorg.apache.geronimo.base.dir=/usr/local/geronimo/default-server


Also note, I used symbolic links in this case to show something.
Even though I set GERONIMO_HOME=/usr/local/geronimo , During run time Geronimo resolves it real path (/usr/local/geronimo/geronimo-jetty6-javaee5-2.1.1) ignoring the path I set in GERONIMO_HOME.

This is not a problem, however, really.
The problem is that I set GERONIMO_BASE=/usr/local/geronimo/default-server , and Geronimo is complaining that GERONIMO_HOME/default-server does not exist.

Discussion??

-RG



Russell E Glaue wrote:

So you say that setting the following:

GERONIMO_HOME=/usr/local/geronimo
GERONIMO_BASE=/usr/local/geronimo-servers

and copying/moving var/ from GERONIMO_HOME to GERONIMO_BASE
such that { exists /usr/local/geronimo-servers/var }

that geronimo should would run.


As I mentioned in the previous e-mail, the shell scripts are not configured correctly to allow this without issue. So if this is true what you say, and what I thought was also true, then a minor patch is needed to a few shell scripts.
I have attached that patch.

And if there are no disagreements, I will submit the patch.

I will also add documentation in the geronimo wiki to clarify GERONIMO_BASE vs. GERONIMO_HOME , hopefully avoiding further conflicting usages in the future.

-RG




David Jencks wrote:

I'm pretty sure the multiple server feature is working as designed, there's an extra-repo plugin for instance. I don't really understand what you are trying to do or why you think there's a problem. All I can see is that you could copy the existing var dir to etc/geronimo-servers/default-server/var and run with BASE as etc/geronimo-servers/default-server however IMO this is really weird to put user modifiable content inside what is intended as a read-only system level directory.

Perhaps you could explain more what you are trying to do?

thanks
david jencks



-RG



Reply via email to