[ 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 [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.