You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@geronimo.apache.org by "Jarek Gawor (JIRA)" <ji...@apache.org> on 2008/12/01 22:35:44 UTC

[jira] Commented: (GERONIMO-4229) clarify use of GERONIMO_HOME vs. GERONIMO_BASE in shell scripts

    [ https://issues.apache.org/jira/browse/GERONIMO-4229?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12652165#action_12652165 ] 

Jarek Gawor commented on GERONIMO-4229:
---------------------------------------

Committed your patch to trunk (revision 722243) and branches/2.1 (revision 722244). Thanks a lot!


> 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
>         Attachments: geronimo-shell-home-base-2.patch
>
>
> 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 user@geronimo.apache.org
> 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.