clarify use of GERONIMO_HOME vs. GERONIMO_BASE in shell scripts
---------------------------------------------------------------
Key: GERONIMO-4229
URL: https://issues.apache.org/jira/browse/GERONIMO-4229
Project: Geronimo
Issue Type: Bug
Security Level: public (Regular issues)
Components: startup/shutdown
Affects Versions: 2.1.1
Environment: ALL
Reporter: Russell E Glaue
Priority: Minor
I was not seeing consistent usage in the shell scripts of the following:
- GERONIMO_HOME
- GERONIMO_BASE
- org.apache.geronimo.base.dir
In 4 of the scripts, GERONIMO_BASE was used where GERONIMO_HOME should have
been used, or GERONIMO_BASE should be used to complete the path to the temp
file, otherwise the GeronimoInstallationPath is used to complete the temp file
path.
The attached patch corrects these.
For more information, please see my thread on [EMAIL PROTECTED]
Subject: GERONIMO_BASE vs. GERONIMO_HOME and org.apache.geronimo.base.dir
And as an additional note, this patch resolves a few errors, but not these two:
(1)-
Using GERONIMO_BASE: /usr/local/geronimo/server1
Using GERONIMO_HOME: /usr/local/geronimo
Using GERONIMO_TMPDIR: var/temp
Using JRE_HOME: /usr/jdk1.5.0_07/jre
10:45:33,914 ERROR [LocalAttributeManager] Caught exception
java.io.FileNotFoundException:
/usr/local/geronimo-jetty6-javaee5-2.1.1/var/config/config-substitutions.properties
(No such file or directory) trying to open properties file
/usr/local/geronimo-jetty6-javaee5-2.1.1/var/config/config-substitutions.properties
-
Geronimo looks for the 'var/config/config-substitutions.properties' file
according to 'org.apache.geronimo.server.dir' variable.
However the bin/geronimo.sh script only sets
-Dorg.apache.geronimo.base.dir=$GERONIMO_BASE
But I do not see how org.apache.geronimo.base.dir is used inside Geronimo.
To fix we would have to set the variable
-Dorg.apache.geronimo.server.dir=$GERONIMO_BASE too - but we cannot do that if
we want users to be able to supply the
-Dorg.apache.geronimo.server.name=<relative_path> variable outside of
bin/geronimo.sh in $GERONIMO_OPTS env var.
-
So I could not figure out a good way to address this error, unless we overrided
org.apache.geronimo.base.dir variable with whatever is in the
org.apache.geronimo.server.dir variable, then change Geronimo to look for the
configSubstitutionFile as
'<org.apache.geronimo.base.dir>/var/config/config-substitutions.properties'
And it appears that Geronimo ignores org.apache.geronimo.base.dir in favor of
org.apache.geronimo.home.dir anyway, so removing the configured
org.apache.geronimo.base.dir property in bin/geronimo.sh does not seem to hurt
anything - at first test, at least, it works for me.
Then we just always set org.apache.geronimo.base.dir =
org.apache.geronimo.server.dir
-
I would appreciate if someone shed light on the proper intended usage of the
org.apache.geronimo.base.dir property.
-
(2)-
Using GERONIMO_BASE: /usr/local/geronimo/server1
Using GERONIMO_HOME: /usr/local/geronimo
Using GERONIMO_TMPDIR: var/temp
Using JRE_HOME: /usr/jdk1.5.0_07/jre
...
The java.io.tmpdir system property specifies a non-existent directory:
/usr/local/geronimo-jetty6-javaee5-2.1.2/var/temp
-
read: /usr/local/geronimo/bin/geronimo.sh
# GERONIMO_TMPDIR (Optional) Directory path location of temporary directory
# the JVM should use (java.io.tmpdir).
# Defaults to $GERONIMO_BASE/var/temp.
if [ -z "$GERONIMO_TMPDIR" ] ; then
# Define the java.io.tmpdir to use for Geronimo
# A relative value will be resolved relative to each instance
GERONIMO_TMPDIR=var/temp
fi
-
This is incorrect documentation, as the error message illustrates.
GERONIMO_TMPDIR does not default to $GERONIMO_BASE/var/temp
Nor does it default to $GERONIMO_HOME/var/temp
Instead: It defaults to <Geronimo_install_directory>/var/temp
Or also org.apache.geronimo.server.dir/var/temp
GERONIMO_TMPDIR should be set with $GERONIMO_BASE/var/temp
Or also org.apache.geronimo.base.dir/var/temp to comply with the documentation
-
Setting GERONIMO_TMPDIR="$GERONIMO_BASE"/var/temp in bin/geronimo.sh will
actually conflict with anyone using the
-Dorg.apache.geronimo.server.name=<relative_path> to run multiple instances as
documented in the geronimo wiki.
The absolute path is resolved to
<org.apache.geronimo.server.dir>/<java.io.tmpdir> IF <java.io.tmpdir> is a
relative path.
So setting the absolute path in bin/geronimo.sh would require the user to
additionally specify the absolute path of $GERONIMO_TMPDIR into their geronimo
instance.
The change, causing the property org.apache.geronimo.base.dir to be used, would
have to be completed internally in the java classes that set the properties.
-
How To Produce The Errors the attached patch fixes:
<perform>
1) expand geronimo-jetty6-javaee5-2.1.2 in /usr/local/
2) cd /usr/local; ln -s geronimo-jetty6-javaee5-2.1.2 geronimo
2) create the directory /usr/local/geronimo/server1
3) move /usr/local/geronimo/var to /usr/local/geronimo/server1/var
4) start geronimo with this shell command:
-
cd /usr/local/geronimo
export GERONIMO_HOME=/usr/local/geronimo
export GERONIMO_BASE=/usr/local/geronimo/server1
exec ${GERONIMO_HOME}/bin/startup.sh
-
</perform>
<error>
$ cat /usr/local/geronimo/server1/var/log/geronimo.out | grep '\[java.*.dirs\]'
/usr/jdk1.5.0_07/jre/lib/i386/client:/usr/jdk1.5.0_07/jre/lib/i386:/usr/jdk1.5.0_07/jre/../lib/i386
10:45:33,955 INFO [Log4jService] System property [java.endorsed.dirs] =
/usr/local/geronimo/server1/lib/endorsed:/usr/jdk1.5.0_07/jre/lib/endorsed
10:45:33,955 INFO [Log4jService] System property [java.ext.dirs] =
/usr/local/geronimo/server1/lib/ext:/usr/jdk1.5.0_07/jre/lib/ext
-
read: /usr/local/geronimo/bin/geronimo.sh
# For Cygwin, switch paths to Windows format before running java
if $cygwin; then
...
EXT_DIRS="$GERONIMO_BASE/lib/ext;$JRE_HOME/lib/ext"
ENDORSED_DIRS="$GERONIMO_BASE/lib/endorsed;$JRE_HOME/lib/endorsed"
else
EXT_DIRS="$GERONIMO_BASE/lib/ext:$JRE_HOME/lib/ext"
ENDORSED_DIRS="$GERONIMO_BASE/lib/endorsed:$JRE_HOME/lib/endorsed"
fi
...
# Setup the Java programming language agent
JAVA_AGENT_JAR="$GERONIMO_BASE/bin/jpa.jar"
-
There is no such directory as '/usr/local/geronimo/server1/lib/'
but the bin/geronimo.sh script uses GERONIMO_BASE to point at the lib directory.
That should be $GERONIMO_HOME
The same for JAVA_AGENT_JAR which points at
/usr/local/geronimo/server1/bin/jpa.jar in this example
GERONIMO_HOME is used only for the scope of the shell scripts, and everything
else uses it only for starting Geronimo, so we should be consistent.
-
</error>
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.