| #!/bin/sh |
| # |
| # Copyright 2005 The Apache Software Foundation |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| |
| # -------------------------------------------------------------------- |
| # $Rev$ $Date$ |
| # -------------------------------------------------------------------- |
| |
| # ----------------------------------------------------------------------------- |
| # Start/Stop Script for the Geronimo Server |
| # |
| # This script is based upon Tomcat's catalina.sh file to enable |
| # those familiar with Tomcat to quickly get started with Geronimo. |
| # |
| # This script file can be used directly instead of startup.sh and |
| # shutdown.sh as they call this script file anyway. |
| # |
| # You should not have to edit this file. If you wish to have environment |
| # variables set each time you run this script refer to the information |
| # on the setenv.sh script that is called by this script below. |
| # |
| # Invocation Syntax: |
| # |
| # geronimo.sh command [geronimo_args] |
| # |
| # For detailed command usage information, just run geronimo.sh without any |
| # arguments. |
| # |
| # Environment Variable Prequisites: |
| # |
| # GERONIMO_HOME (Optional) May point at your Geronimo top-level directory. |
| # If not specified, it will default to the parent directory |
| # of the location of this script. |
| # |
| # GERONIMO_BASE (Optional) Base directory for resolving dynamic portions |
| # of a Geronimo installation. If not present, resolves to |
| # the same directory that GERONIMO_HOME points to. |
| # |
| # GERONIMO_OPTS (Optional) Java runtime options used when the "start", |
| # "stop", or "run" command is executed. |
| # |
| # GERONIMO_OUT (Optional) File that Geronimo's stdout and stderr streams |
| # will be redirected to if Geronimo is started in the |
| # background. |
| # Defaults to $GERONIMO_BASE/var/log/geronimo.out |
| # |
| # GERONIMO_PID (Optional) Path of the file which should contains the pid |
| # of the Geronimo java process, when start (fork) is used |
| # |
| # GERONIMO_TMPDIR (Optional) Directory path location of temporary directory |
| # the JVM should use (java.io.tmpdir). |
| # Defaults to $GERONIMO_BASE/var/temp. |
| # |
| # JAVA_HOME Points to your Java Development Kit installation. |
| # JAVA_HOME doesn't need to be set if JRE_HOME is set |
| # unless you use the "debug" command. |
| # It is mandatory either JAVA_HOME or JRE_HOME are set. |
| # |
| # JRE_HOME Points to your Java Runtime Environment installation. |
| # Set this if you wish to run Geronimo using the JRE |
| # instead of the JDK (except for the "debug" command). |
| # Defaults to JAVA_HOME if empty. |
| # It is mandatory either JAVA_HOME or JRE_HOME are set. |
| # |
| # JAVA_OPTS (Optional) Java runtime options used when the "start", |
| # "stop", or "run" command is executed. |
| # |
| # JDB_SRCPATH (Optional) The Source Path to be used by jdb debugger |
| # when the "debug" command is executed. |
| # Defaults to %GERONIMO_HOME%\src |
| # |
| # JPDA_ADDRESS (Optional) Java runtime options used when the "jpda start" |
| # command is executed. The default is 8000. |
| # |
| # JPDA_TRANSPORT (Optional) JPDA transport used when the "jpda start" |
| # command is executed. The default is "dt_socket". |
| # |
| # JPDA_OPTS (Optional) JPDA command line options. |
| # Only set this if you need to use some unusual JPDA |
| # command line options. This overrides the use of the |
| # other JPDA_* environment variables. |
| # Defaults to JPDA command line options contructed from |
| # the JPDA_ADDRESS, JPDA_SUSPEND and JPDA_TRANSPORT |
| # environment variables. |
| # |
| # JPDA_SUSPEND (Optional) Suspend the JVM before the main class is loaded. |
| # Valid values are 'y' and 'n'. The default is "n". |
| # |
| # START_OS_CMD (Optional) Operating system command that will be placed in |
| # front of the java command when starting Geronimo in the |
| # background. This can be useful on operating systems where |
| # the OS provides a command that allows you to start a process |
| # with in a specified CPU or priority. |
| # |
| # Troubleshooting execution of this script file: |
| # |
| # GERONIMO_ENV_INFO (Optional) Environment variable that when set to "on" |
| # (the default) outputs the values of the GERONIMO_HOME, |
| # GERONIMO_BASE, GERONIMO_TMPDIR, JAVA_HOME and |
| # JRE_HOME before the command is issued. Set to "off" |
| # if you do not want this information displayed. |
| # |
| # Scripts called by this script: |
| # |
| # $GERONIMO_HOME/bin/setenv.sh |
| # (Optional) This script file is called if it is present. |
| # Its contents may set one or more of the above environment |
| # variables. It is preferable (to simplify migration to |
| # future Geronimo releases) to set environment variables |
| # in this file rather than modifying Geronimo's script files. |
| # |
| # $GERONIMO_HOME/bin/setjavaenv.sh |
| # This batch file is called to set environment variables |
| # relating to the java or jdb executable to invoke. |
| # This file should not need to be modified. |
| # |
| # Exit Codes: |
| # |
| # 0 - Success |
| # 1 - Error |
| # ----------------------------------------------------------------------------- |
| |
| # OS specific support. $var _must_ be set to either true or false. |
| cygwin=false |
| os400=false |
| case "`uname`" in |
| CYGWIN*) cygwin=true;; |
| OS400*) os400=true;; |
| esac |
| |
| # resolve links - $0 may be a softlink |
| PRG="$0" |
| |
| while [ -h "$PRG" ]; do |
| ls=`ls -ld "$PRG"` |
| link=`expr "$ls" : '.*-> \(.*\)$'` |
| if expr "$link" : '/.*' > /dev/null; then |
| PRG="$link" |
| else |
| PRG=`dirname "$PRG"`/"$link" |
| fi |
| done |
| |
| # Get standard environment variables |
| PRGDIR=`dirname "$PRG"` |
| |
| # Only set GERONIMO_HOME if not already set |
| [ -z "$GERONIMO_HOME" ] && GERONIMO_HOME=`cd "$PRGDIR/.." ; pwd` |
| |
| if [ -r "$GERONIMO_HOME"/bin/setenv.sh ]; then |
| . "$GERONIMO_HOME"/bin/setenv.sh |
| fi |
| |
| # For Cygwin, ensure paths are in UNIX format before anything is touched |
| if $cygwin; then |
| [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"` |
| [ -n "$JRE_HOME" ] && JRE_HOME=`cygpath --unix "$JRE_HOME"` |
| [ -n "$JDB_SRCPATH" ] && JDB_SRCPATH=`cygpath --unix "$JDB_SRCPATH"` |
| [ -n "$GERONIMO_HOME" ] && GERONIMO_HOME=`cygpath --unix "$GERONIMO_HOME"` |
| [ -n "$GERONIMO_BASE" ] && GERONIMO_BASE=`cygpath --unix "$GERONIMO_BASE"` |
| fi |
| |
| # For OS400 |
| if $os400; then |
| # Set job priority to standard for interactive (interactive - 6) by using |
| # the interactive priority - 6, the helper threads that respond to requests |
| # will be running at the same priority as interactive jobs. |
| COMMAND='chgjob job('$JOBNAME') runpty(6)' |
| system $COMMAND |
| |
| # Enable multi threading |
| export QIBM_MULTI_THREADED=Y |
| fi |
| |
| # Get standard Java environment variables |
| # (based upon Tomcat's setclasspath.sh but renamed since Geronimo's classpath |
| # is set in the JAR manifest) |
| if $os400; then |
| # -r will Only work on the os400 if the files are: |
| # 1. owned by the user |
| # 2. owned by the PRIMARY group of the user |
| # this will not work if the user belongs in secondary groups |
| BASEDIR="$GERONIMO_HOME" |
| . "$GERONIMO_HOME"/bin/setjavaenv.sh |
| else |
| if [ -r "$GERONIMO_HOME"/bin/setjavaenv.sh ]; then |
| BASEDIR="$GERONIMO_HOME" |
| . "$GERONIMO_HOME"/bin/setjavaenv.sh |
| else |
| echo "Cannot find $GERONIMO_HOME/bin/setjavaenv.sh" |
| echo "This file is needed to run this program" |
| exit 1 |
| fi |
| fi |
| |
| if [ -z "$GERONIMO_BASE" ] ; then |
| GERONIMO_BASE="$GERONIMO_HOME" |
| fi |
| |
| if [ -z "$GERONIMO_TMPDIR" ] ; then |
| # Define the java.io.tmpdir to use for Geronimo |
| GERONIMO_TMPDIR="$GERONIMO_BASE"/var/temp |
| fi |
| |
| if [ -z "$GERONIMO_OUT" ] ; then |
| # Define the output file we are to redirect both stdout and stderr to |
| # when Geronimo is started in the background |
| GERONIMO_OUT="$GERONIMO_BASE"/var/log/geronimo.out |
| fi |
| |
| if [ -z "$JDB_SRCPATH" ] ; then |
| # Define the source path to be used by the JDB debugger |
| JDB_SRCPATH="$GERONIMO_HOME"/src |
| fi |
| |
| # For Cygwin, switch paths to Windows format before running java |
| if $cygwin; then |
| JAVA_HOME=`cygpath --absolute --windows "$JAVA_HOME"` |
| JRE_HOME=`cygpath --absolute --windows "$JRE_HOME"` |
| JDB_SRCPATH=`cygpath --absolute --windows "$JDB_SRCPATH"` |
| GERONIMO_HOME=`cygpath --absolute --windows "$GERONIMO_HOME"` |
| GERONIMO_BASE=`cygpath --absolute --windows "$GERONIMO_BASE"` |
| GERONIMO_TMPDIR=`cygpath --absolute --windows "$GERONIMO_TMPDIR"` |
| fi |
| |
| # ----- Execute The Requested Command ----------------------------------------- |
| if [ "$GERONIMO_ENV_INFO" != "off" ] ; then |
| echo "Using GERONIMO_BASE: $GERONIMO_BASE" |
| echo "Using GERONIMO_HOME: $GERONIMO_HOME" |
| echo "Using GERONIMO_TMPDIR: $GERONIMO_TMPDIR" |
| if [ "$1" = "debug" ] ; then |
| echo "Using JAVA_HOME: $JAVA_HOME" |
| echo "Using JDB_SRCPATH: $JDB_SRCPATH" |
| else |
| echo "Using JRE_HOME: $JRE_HOME" |
| fi |
| fi |
| |
| LONG_OPT= |
| if [ "$1" = "start" ] ; then |
| LONG_OPT=--long |
| if [ "$GERONIMO_ENV_INFO" != "off" ] ; then |
| echo "Using GERONIMO_OUT: $GERONIMO_OUT" |
| fi |
| fi |
| |
| if [ "$1" = "jpda" ] ; then |
| if [ -z "$JPDA_SUSPEND" ]; then |
| JPDA_SUSPEND="n" |
| fi |
| if [ -z "$JPDA_TRANSPORT" ]; then |
| JPDA_TRANSPORT="dt_socket" |
| fi |
| if [ -z "$JPDA_ADDRESS" ]; then |
| JPDA_ADDRESS="8000" |
| fi |
| if [ -z "$JPDA_OPTS" ]; then |
| JPDA_OPTS="-Xdebug -Xrunjdwp:transport=$JPDA_TRANSPORT,address=$JPDA_ADDRESS,server=y,suspend=$JPDA_SUSPEND" |
| fi |
| if [ "$GERONIMO_ENV_INFO" != "off" ] ; then |
| echo "Using JPDA_OPTS: $JPDA_OPTS" |
| fi |
| GERONIMO_OPTS="$GERONIMO_OPTS $JPDA_OPTS" |
| shift |
| fi |
| |
| if [ "$1" = "debug" ] ; then |
| if $os400; then |
| echo "Debug command not available on OS400" |
| exit 1 |
| else |
| echo "Note: The jdb debugger will start Geronimo in another process and connect to it." |
| echo " To terminate Geronimo when running under jdb, run the "geronimo stop" command" |
| echo " in another window. Do not use Ctrl-C as that will terminate the jdb client" |
| echo " (the debugger itself) but will not stop the Geronimo process." |
| shift |
| exec "$_RUNJDB" $JAVA_OPTS $GERONIMO_OPTS \ |
| -sourcepath "$JDB_SRCPATH" \ |
| -Dorg.apache.geronimo.base.dir="$GERONIMO_BASE" \ |
| -Djava.io.tmpdir="$GERONIMO_TMPDIR" \ |
| -classpath "$GERONIMO_HOME"/bin/server.jar \ |
| org.apache.geronimo.system.main.Daemon $LONG_OPT "$@" |
| fi |
| |
| elif [ "$1" = "run" ]; then |
| |
| shift |
| exec "$_RUNJAVA" $JAVA_OPTS $GERONIMO_OPTS \ |
| -Dorg.apache.geronimo.base.dir="$GERONIMO_BASE" \ |
| -Djava.io.tmpdir="$GERONIMO_TMPDIR" \ |
| -jar "$GERONIMO_HOME"/bin/server.jar $LONG_OPT "$@" |
| |
| elif [ "$1" = "start" ] ; then |
| |
| shift |
| touch "$GERONIMO_OUT" |
| $START_OS_CMD "$_RUNJAVA" $JAVA_OPTS $GERONIMO_OPTS \ |
| -Dorg.apache.geronimo.base.dir="$GERONIMO_BASE" \ |
| -Djava.io.tmpdir="$GERONIMO_TMPDIR" \ |
| -jar "$GERONIMO_HOME"/bin/server.jar $LONG_OPT "$@" \ |
| >> $GERONIMO_OUT 2>&1 & |
| echo "" |
| echo "Geronimo started in background. PID: $!" |
| if [ ! -z "$GERONIMO_PID" ]; then |
| echo $! > $GERONIMO_PID |
| fi |
| |
| elif [ "$1" = "stop" ] ; then |
| |
| shift |
| FORCE=0 |
| # support -force as that is the option Tomcat uses, we will document |
| # --force as the option to be consistent with other Geronimo options. |
| if [ "$1" = "--force" -o "$1" = "-force" ]; then |
| shift |
| FORCE=1 |
| fi |
| |
| "$_RUNJAVA" $JAVA_OPTS $GERONIMO_OPTS \ |
| -Dorg.apache.geronimo.base.dir="$GERONIMO_BASE" \ |
| -Djava.io.tmpdir="$GERONIMO_TMPDIR" \ |
| -jar "$GERONIMO_HOME"/bin/shutdown.jar "$@" |
| |
| if [ $FORCE -eq 1 ]; then |
| if [ ! -z "$GERONIMO_PID" ]; then |
| echo "Killing: `cat $GERONIMO_PID`" |
| kill -9 `cat $GERONIMO_PID` |
| fi |
| fi |
| |
| else |
| |
| echo "Usage: geronimo.sh command [geronimo_args]" |
| echo "commands:" |
| echo " debug Debug Geronimo in jdb debugger" |
| echo " jpda run Start Geronimo in foreground under JPDA debugger" |
| echo " jpda start Start Geronimo in background under JPDA debugger" |
| echo " run Start Geronimo in the foreground" |
| echo " start Start Geronimo in the background" |
| echo " stop Stop Geronimo" |
| echo " stop --force Stop Geronimo (followed by kill -KILL)" |
| echo "" |
| echo "args for debug, jpda run, jpda start, run and start commands:" |
| echo " --quiet No startup progress" |
| echo " --long Long startup progress" |
| echo " -v --verbose INFO log level" |
| echo " -vv --veryverbose DEBUG log level" |
| echo " --override Override configurations. USE WITH CAUTION!" |
| echo " --help Detailed help." |
| echo "" |
| echo "args for stop command:" |
| echo " --user Admin user" |
| echo " --password Admin password" |
| echo " --port RMI port to connect to" |
| exit 1 |
| |
| fi |