geronimo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jarek Gawor (JIRA)" <>
Subject [jira] Commented: (GERONIMO-4229) clarify use of GERONIMO_HOME vs. GERONIMO_BASE in shell scripts
Date Mon, 01 Dec 2008 21:53:44 GMT


Jarek Gawor commented on GERONIMO-4229:

I looked at this a bit and this is pretty screwed up. First, the "org.apache.geronimo.base.dir"
is not used anywhere in Geronimo code (can't find any references to it). I think the scripts
should be passing "-Dorg.apache.geronimo.home.dir=$GERONIMO_HOME" instead. Second, the $GERONIMO_BASE
property corresponds to "org.apache.geronimo.server.dir" property in code. But we cannot automatically
set and pass this property in the scripts as the "" property
will be totally ignored. That is, what is documented right now in how to setup and run multiple
servers will not work anymore. So, we will need to fix the code or scripts somehow. Maybe
the easiest thing right now is to get rid off the GERONIMO_BASE property in scripts (it doesn't
do anything right now anyway since the "org.apache.geronimo.base.dir" is not referenced in
the code anywhere). In that case, the user either would need to pass the "org.apache.geronimo.server.dir"
or "" property via GERONIMO_OPTS env. property.

> clarify use of GERONIMO_HOME vs. GERONIMO_BASE in shell scripts
> ---------------------------------------------------------------
>                 Key: GERONIMO-4229
>                 URL:
>             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
>         Attachments: geronimo-shell-home-base-2.patch
> I was not seeing consistent usage in the shell scripts of the following:
>  - 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
> 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
/usr/local/geronimo-jetty6-javaee5-2.1.1/var/config/ (No such
file or directory) trying to open properties file /usr/local/geronimo-jetty6-javaee5-2.1.1/var/config/
> -
> Geronimo looks for the 'var/config/' file according to
'org.apache.geronimo.server.dir' variable.
> However the bin/ 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<relative_path>
variable outside of bin/ 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/'
> 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/
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
> -
> (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 system property specifies a non-existent directory: /usr/local/geronimo-jetty6-javaee5-2.1.2/var/temp
> -
> read: /usr/local/geronimo/bin/
> #   GERONIMO_TMPDIR (Optional) Directory path location of temporary directory
> #                   the JVM should use (
> #                   Defaults to $GERONIMO_BASE/var/temp.
> if [ -z "$GERONIMO_TMPDIR" ] ; then
>   # Define the 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/ will actually conflict
with anyone using the<relative_path> to run multiple
instances as documented in the geronimo wiki.
> The absolute path is resolved to <org.apache.geronimo.server.dir>/<>
IF <> is a relative path.
> So setting the absolute path in bin/ 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/
> -
> </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/
> # 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
> -
> There is no such directory as '/usr/local/geronimo/server1/lib/'
> but the bin/ 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.

View raw message