| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688 | 
							- #!/bin/sh
 
- # Licensed to the Apache Software Foundation (ASF) under one or more
 
- # contributor license agreements.  See the NOTICE file distributed with
 
- # this work for additional information regarding copyright ownership.
 
- # The ASF licenses this file to You 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.
 
- # -----------------------------------------------------------------------------
 
- # Control Script for the CATALINA Server
 
- #
 
- # For supported commands call "catalina.sh help" or see the usage section at
 
- # the end of this file.
 
- #
 
- # Environment Variable Prerequisites
 
- #
 
- #   Do not set the variables in this script. Instead put them into a script
 
- #   setenv.sh in CATALINA_BASE/bin to keep your customizations separate.
 
- #
 
- #   CATALINA_HOME   May point at your Catalina "build" directory.
 
- #
 
- #   CATALINA_BASE   (Optional) Base directory for resolving dynamic portions
 
- #                   of a Catalina installation.  If not present, resolves to
 
- #                   the same directory that CATALINA_HOME points to.
 
- #
 
- #   CATALINA_OUT    (Optional) Full path to a file where stdout and stderr
 
- #                   will be redirected.
 
- #                   Default is $CATALINA_BASE/logs/catalina.out
 
- #
 
- #   CATALINA_OUT_CMD (Optional) Command which will be executed and receive
 
- #                   as its stdin the stdout and stderr from the Tomcat java
 
- #                   process. If CATALINA_OUT_CMD is set, the value of
 
- #                   CATALINA_OUT will be used as a named pipe.
 
- #                   No default.
 
- #                   Example (all one line)
 
- #                   CATALINA_OUT_CMD="/usr/bin/rotatelogs -f $CATALINA_BASE/logs/catalina.out.%Y-%m-%d.log 86400"
 
- #
 
- #   CATALINA_OPTS   (Optional) Java runtime options used when the "start",
 
- #                   "run" or "debug" command is executed.
 
- #                   Include here and not in JAVA_OPTS all options, that should
 
- #                   only be used by Tomcat itself, not by the stop process,
 
- #                   the version command etc.
 
- #                   Examples are heap size, GC logging, JMX ports etc.
 
- #
 
- #   CATALINA_TMPDIR (Optional) Directory path location of temporary directory
 
- #                   the JVM should use (java.io.tmpdir).  Defaults to
 
- #                   $CATALINA_BASE/temp.
 
- #
 
- #   JAVA_HOME       Must point at your Java Development Kit installation.
 
- #                   Required to run the with the "debug" argument.
 
- #
 
- #   JRE_HOME        Must point at your Java Runtime installation.
 
- #                   Defaults to JAVA_HOME if empty. If JRE_HOME and JAVA_HOME
 
- #                   are both set, JRE_HOME is used.
 
- #
 
- #   JAVA_OPTS       (Optional) Java runtime options used when any command
 
- #                   is executed.
 
- #                   Include here and not in CATALINA_OPTS all options, that
 
- #                   should be used by Tomcat and also by the stop process,
 
- #                   the version command etc.
 
- #                   Most options should go into CATALINA_OPTS.
 
- #
 
- #   JAVA_ENDORSED_DIRS (Optional) Lists of of colon separated directories
 
- #                   containing some jars in order to allow replacement of APIs
 
- #                   created outside of the JCP (i.e. DOM and SAX from W3C).
 
- #                   It can also be used to update the XML parser implementation.
 
- #                   This is only supported for Java <= 8.
 
- #                   Defaults to $CATALINA_HOME/endorsed.
 
- #
 
- #   JPDA_TRANSPORT  (Optional) JPDA transport used when the "jpda start"
 
- #                   command is executed. The default is "dt_socket".
 
- #
 
- #   JPDA_ADDRESS    (Optional) Java runtime options used when the "jpda start"
 
- #                   command is executed. The default is localhost:8000.
 
- #
 
- #   JPDA_SUSPEND    (Optional) Java runtime options used when the "jpda start"
 
- #                   command is executed. Specifies whether JVM should suspend
 
- #                   execution immediately after startup. Default is "n".
 
- #
 
- #   JPDA_OPTS       (Optional) Java runtime options used when the "jpda start"
 
- #                   command is executed. If used, JPDA_TRANSPORT, JPDA_ADDRESS,
 
- #                   and JPDA_SUSPEND are ignored. Thus, all required jpda
 
- #                   options MUST be specified. The default is:
 
- #
 
- #                   -agentlib:jdwp=transport=$JPDA_TRANSPORT,
 
- #                       address=$JPDA_ADDRESS,server=y,suspend=$JPDA_SUSPEND
 
- #
 
- #   JSSE_OPTS       (Optional) Java runtime options used to control the TLS
 
- #                   implementation when JSSE is used. Default is:
 
- #                   "-Djdk.tls.ephemeralDHKeySize=2048"
 
- #
 
- #   CATALINA_PID    (Optional) Path of the file which should contains the pid
 
- #                   of the catalina startup java process, when start (fork) is
 
- #                   used
 
- #
 
- #   CATALINA_LOGGING_CONFIG (Optional) Override Tomcat's logging config file
 
- #                   Example (all one line)
 
- #                   CATALINA_LOGGING_CONFIG="-Djava.util.logging.config.file=$CATALINA_BASE/conf/logging.properties"
 
- #
 
- #   LOGGING_CONFIG  Deprecated
 
- #                   Use CATALINA_LOGGING_CONFIG
 
- #                   This is only used if CATALINA_LOGGING_CONFIG is not set
 
- #                   and LOGGING_CONFIG starts with "-D..."
 
- #
 
- #   LOGGING_MANAGER (Optional) Override Tomcat's logging manager
 
- #                   Example (all one line)
 
- #                   LOGGING_MANAGER="-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager"
 
- #
 
- #   UMASK           (Optional) Override Tomcat's default UMASK of 0027
 
- #
 
- #   USE_NOHUP       (Optional) If set to the string true the start command will
 
- #                   use nohup so that the Tomcat process will ignore any hangup
 
- #                   signals. Default is "false" unless running on HP-UX in which
 
- #                   case the default is "true"
 
- # -----------------------------------------------------------------------------
 
- # OS specific support.  $var _must_ be set to either true or false.
 
- cygwin=false
 
- darwin=false
 
- os400=false
 
- hpux=false
 
- case "`uname`" in
 
- CYGWIN*) cygwin=true;;
 
- Darwin*) darwin=true;;
 
- OS400*) os400=true;;
 
- HP-UX*) hpux=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 CATALINA_HOME if not already set
 
- [ -z "$CATALINA_HOME" ] && CATALINA_HOME=`cd "$PRGDIR/.." >/dev/null; pwd`
 
- # Copy CATALINA_BASE from CATALINA_HOME if not already set
 
- [ -z "$CATALINA_BASE" ] && CATALINA_BASE="$CATALINA_HOME"
 
- # Ensure that any user defined CLASSPATH variables are not used on startup,
 
- # but allow them to be specified in setenv.sh, in rare case when it is needed.
 
- CLASSPATH=
 
- if [ -r "$CATALINA_BASE/bin/setenv.sh" ]; then
 
-   . "$CATALINA_BASE/bin/setenv.sh"
 
- elif [ -r "$CATALINA_HOME/bin/setenv.sh" ]; then
 
-   . "$CATALINA_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 "$CATALINA_HOME" ] && CATALINA_HOME=`cygpath --unix "$CATALINA_HOME"`
 
-   [ -n "$CATALINA_BASE" ] && CATALINA_BASE=`cygpath --unix "$CATALINA_BASE"`
 
-   [ -n "$CLASSPATH" ] && CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
 
- fi
 
- # Ensure that neither CATALINA_HOME nor CATALINA_BASE contains a colon
 
- # as this is used as the separator in the classpath and Java provides no
 
- # mechanism for escaping if the same character appears in the path.
 
- case $CATALINA_HOME in
 
-   *:*) echo "Using CATALINA_HOME:   $CATALINA_HOME";
 
-        echo "Unable to start as CATALINA_HOME contains a colon (:) character";
 
-        exit 1;
 
- esac
 
- case $CATALINA_BASE in
 
-   *:*) echo "Using CATALINA_BASE:   $CATALINA_BASE";
 
-        echo "Unable to start as CATALINA_BASE contains a colon (:) character";
 
-        exit 1;
 
- esac
 
- # 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
 
- 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
 
-   . "$CATALINA_HOME"/bin/setclasspath.sh
 
- else
 
-   if [ -r "$CATALINA_HOME"/bin/setclasspath.sh ]; then
 
-     . "$CATALINA_HOME"/bin/setclasspath.sh
 
-   else
 
-     echo "Cannot find $CATALINA_HOME/bin/setclasspath.sh"
 
-     echo "This file is needed to run this program"
 
-     exit 1
 
-   fi
 
- fi
 
- # Add on extra jar files to CLASSPATH
 
- if [ ! -z "$CLASSPATH" ] ; then
 
-   CLASSPATH="$CLASSPATH":
 
- fi
 
- CLASSPATH="$CLASSPATH""$CATALINA_HOME"/bin/bootstrap.jar
 
- if [ -z "$CATALINA_OUT" ] ; then
 
-   CATALINA_OUT="$CATALINA_BASE"/logs/catalina.out
 
- fi
 
- if [ -z "$CATALINA_TMPDIR" ] ; then
 
-   # Define the java.io.tmpdir to use for Catalina
 
-   CATALINA_TMPDIR="$CATALINA_BASE"/temp
 
- fi
 
- # Add tomcat-juli.jar to classpath
 
- # tomcat-juli.jar can be over-ridden per instance
 
- if [ -r "$CATALINA_BASE/bin/tomcat-juli.jar" ] ; then
 
-   CLASSPATH=$CLASSPATH:$CATALINA_BASE/bin/tomcat-juli.jar
 
- else
 
-   CLASSPATH=$CLASSPATH:$CATALINA_HOME/bin/tomcat-juli.jar
 
- fi
 
- # Bugzilla 37848: When no TTY is available, don't output to console
 
- have_tty=0
 
- if [ -t 0 ]; then
 
-     have_tty=1
 
- 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"`
 
-   CATALINA_HOME=`cygpath --absolute --windows "$CATALINA_HOME"`
 
-   CATALINA_BASE=`cygpath --absolute --windows "$CATALINA_BASE"`
 
-   CATALINA_TMPDIR=`cygpath --absolute --windows "$CATALINA_TMPDIR"`
 
-   CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
 
-   [ -n "$JAVA_ENDORSED_DIRS" ] && JAVA_ENDORSED_DIRS=`cygpath --path --windows "$JAVA_ENDORSED_DIRS"`
 
- fi
 
- if [ -z "$JSSE_OPTS" ] ; then
 
-   JSSE_OPTS="-Djdk.tls.ephemeralDHKeySize=2048"
 
- fi
 
- JAVA_OPTS="$JAVA_OPTS $JSSE_OPTS"
 
- # Register custom URL handlers
 
- # Do this here so custom URL handles (specifically 'war:...') can be used in the security policy
 
- JAVA_OPTS="$JAVA_OPTS -Djava.protocol.handler.pkgs=org.apache.catalina.webresources"
 
- # Check for the deprecated LOGGING_CONFIG
 
- # Only use it if CATALINA_LOGGING_CONFIG is not set and LOGGING_CONFIG starts with "-D..."
 
- if [ -z "$CATALINA_LOGGING_CONFIG" ]; then
 
-   case $LOGGING_CONFIG in
 
-     -D*) CATALINA_LOGGING_CONFIG="$LOGGING_CONFIG"
 
-   esac
 
- fi
 
- # Set juli LogManager config file if it is present and an override has not been issued
 
- if [ -z "$CATALINA_LOGGING_CONFIG" ]; then
 
-   if [ -r "$CATALINA_BASE"/conf/logging.properties ]; then
 
-     CATALINA_LOGGING_CONFIG="-Djava.util.logging.config.file=$CATALINA_BASE/conf/logging.properties"
 
-   else
 
-     # Bugzilla 45585
 
-     CATALINA_LOGGING_CONFIG="-Dnop"
 
-   fi
 
- fi
 
- if [ -z "$LOGGING_MANAGER" ]; then
 
-   LOGGING_MANAGER="-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager"
 
- fi
 
- # Set UMASK unless it has been overridden
 
- if [ -z "$UMASK" ]; then
 
-     UMASK="0027"
 
- fi
 
- umask $UMASK
 
- # Java 9 no longer supports the java.endorsed.dirs
 
- # system property. Only try to use it if
 
- # JAVA_ENDORSED_DIRS was explicitly set
 
- # or CATALINA_HOME/endorsed exists.
 
- ENDORSED_PROP=ignore.endorsed.dirs
 
- if [ -n "$JAVA_ENDORSED_DIRS" ]; then
 
-     ENDORSED_PROP=java.endorsed.dirs
 
- fi
 
- if [ -d "$CATALINA_HOME/endorsed" ]; then
 
-     ENDORSED_PROP=java.endorsed.dirs
 
- fi
 
- # Make the umask available when using the org.apache.catalina.security.SecurityListener
 
- JAVA_OPTS="$JAVA_OPTS -Dorg.apache.catalina.security.SecurityListener.UMASK=`umask`"
 
- if [ -z "$USE_NOHUP" ]; then
 
-     if $hpux; then
 
-         USE_NOHUP="true"
 
-     else
 
-         USE_NOHUP="false"
 
-     fi
 
- fi
 
- unset _NOHUP
 
- if [ "$USE_NOHUP" = "true" ]; then
 
-     _NOHUP="nohup"
 
- fi
 
- # Add the JAVA 9 specific start-up parameters required by Tomcat
 
- JDK_JAVA_OPTIONS="$JDK_JAVA_OPTIONS --add-opens=java.base/java.lang=ALL-UNNAMED"
 
- JDK_JAVA_OPTIONS="$JDK_JAVA_OPTIONS --add-opens=java.base/java.io=ALL-UNNAMED"
 
- JDK_JAVA_OPTIONS="$JDK_JAVA_OPTIONS --add-opens=java.base/java.util=ALL-UNNAMED"
 
- JDK_JAVA_OPTIONS="$JDK_JAVA_OPTIONS --add-opens=java.base/java.util.concurrent=ALL-UNNAMED"
 
- JDK_JAVA_OPTIONS="$JDK_JAVA_OPTIONS --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED"
 
- export JDK_JAVA_OPTIONS
 
- # ----- Execute The Requested Command -----------------------------------------
 
- # Bugzilla 37848: only output this if we have a TTY
 
- if [ $have_tty -eq 1 ]; then
 
-   echo "Using CATALINA_BASE:   $CATALINA_BASE"
 
-   echo "Using CATALINA_HOME:   $CATALINA_HOME"
 
-   echo "Using CATALINA_TMPDIR: $CATALINA_TMPDIR"
 
-   if [ "$1" = "debug" ] ; then
 
-     echo "Using JAVA_HOME:       $JAVA_HOME"
 
-   else
 
-     echo "Using JRE_HOME:        $JRE_HOME"
 
-   fi
 
-   echo "Using CLASSPATH:       $CLASSPATH"
 
-   echo "Using CATALINA_OPTS:   $CATALINA_OPTS"
 
-   if [ ! -z "$CATALINA_PID" ]; then
 
-     echo "Using CATALINA_PID:    $CATALINA_PID"
 
-   fi
 
- fi
 
- if [ "$1" = "jpda" ] ; then
 
-   if [ -z "$JPDA_TRANSPORT" ]; then
 
-     JPDA_TRANSPORT="dt_socket"
 
-   fi
 
-   if [ -z "$JPDA_ADDRESS" ]; then
 
-     JPDA_ADDRESS="localhost:8000"
 
-   fi
 
-   if [ -z "$JPDA_SUSPEND" ]; then
 
-     JPDA_SUSPEND="n"
 
-   fi
 
-   if [ -z "$JPDA_OPTS" ]; then
 
-     JPDA_OPTS="-agentlib:jdwp=transport=$JPDA_TRANSPORT,address=$JPDA_ADDRESS,server=y,suspend=$JPDA_SUSPEND"
 
-   fi
 
-   CATALINA_OPTS="$JPDA_OPTS $CATALINA_OPTS"
 
-   shift
 
- fi
 
- if [ "$1" = "debug" ] ; then
 
-   if $os400; then
 
-     echo "Debug command not available on OS400"
 
-     exit 1
 
-   else
 
-     shift
 
-     if [ "$1" = "-security" ] ; then
 
-       if [ $have_tty -eq 1 ]; then
 
-         echo "Using Security Manager"
 
-       fi
 
-       shift
 
-       eval exec "\"$_RUNJDB\"" "\"$CATALINA_LOGGING_CONFIG\"" $LOGGING_MANAGER "$JAVA_OPTS" "$CATALINA_OPTS" \
 
-         -D$ENDORSED_PROP="$JAVA_ENDORSED_DIRS" \
 
-         -classpath "$CLASSPATH" \
 
-         -sourcepath "$CATALINA_HOME"/../../java \
 
-         -Djava.security.manager \
 
-         -Djava.security.policy=="$CATALINA_BASE"/conf/catalina.policy \
 
-         -Dcatalina.base="$CATALINA_BASE" \
 
-         -Dcatalina.home="$CATALINA_HOME" \
 
-         -Djava.io.tmpdir="$CATALINA_TMPDIR" \
 
-         org.apache.catalina.startup.Bootstrap "$@" start
 
-     else
 
-       eval exec "\"$_RUNJDB\"" "\"$CATALINA_LOGGING_CONFIG\"" $LOGGING_MANAGER "$JAVA_OPTS" "$CATALINA_OPTS" \
 
-         -D$ENDORSED_PROP="$JAVA_ENDORSED_DIRS" \
 
-         -classpath "$CLASSPATH" \
 
-         -sourcepath "$CATALINA_HOME"/../../java \
 
-         -Dcatalina.base="$CATALINA_BASE" \
 
-         -Dcatalina.home="$CATALINA_HOME" \
 
-         -Djava.io.tmpdir="$CATALINA_TMPDIR" \
 
-         org.apache.catalina.startup.Bootstrap "$@" start
 
-     fi
 
-   fi
 
- elif [ "$1" = "run" ]; then
 
-   shift
 
-   if [ "$1" = "-security" ] ; then
 
-     if [ $have_tty -eq 1 ]; then
 
-       echo "Using Security Manager"
 
-     fi
 
-     shift
 
-     eval exec "\"$_RUNJAVA\"" "\"$CATALINA_LOGGING_CONFIG\"" $LOGGING_MANAGER "$JAVA_OPTS" "$CATALINA_OPTS" \
 
-       -D$ENDORSED_PROP="\"$JAVA_ENDORSED_DIRS\"" \
 
-       -classpath "\"$CLASSPATH\"" \
 
-       -Djava.security.manager \
 
-       -Djava.security.policy=="\"$CATALINA_BASE/conf/catalina.policy\"" \
 
-       -Dcatalina.base="\"$CATALINA_BASE\"" \
 
-       -Dcatalina.home="\"$CATALINA_HOME\"" \
 
-       -Djava.io.tmpdir="\"$CATALINA_TMPDIR\"" \
 
-       org.apache.catalina.startup.Bootstrap "$@" start
 
-   else
 
-     eval exec "\"$_RUNJAVA\"" "\"$CATALINA_LOGGING_CONFIG\"" $LOGGING_MANAGER "$JAVA_OPTS" "$CATALINA_OPTS" \
 
-       -D$ENDORSED_PROP="\"$JAVA_ENDORSED_DIRS\"" \
 
-       -classpath "\"$CLASSPATH\"" \
 
-       -Dcatalina.base="\"$CATALINA_BASE\"" \
 
-       -Dcatalina.home="\"$CATALINA_HOME\"" \
 
-       -Djava.io.tmpdir="\"$CATALINA_TMPDIR\"" \
 
-       org.apache.catalina.startup.Bootstrap "$@" start
 
-   fi
 
- elif [ "$1" = "start" ] ; then
 
-   if [ ! -z "$CATALINA_PID" ]; then
 
-     if [ -f "$CATALINA_PID" ]; then
 
-       if [ -s "$CATALINA_PID" ]; then
 
-         echo "Existing PID file found during start."
 
-         if [ -r "$CATALINA_PID" ]; then
 
-           PID=`cat "$CATALINA_PID"`
 
-           ps -p $PID >/dev/null 2>&1
 
-           if [ $? -eq 0 ] ; then
 
-             echo "Tomcat appears to still be running with PID $PID. Start aborted."
 
-             echo "If the following process is not a Tomcat process, remove the PID file and try again:"
 
-             ps -f -p $PID
 
-             exit 1
 
-           else
 
-             echo "Removing/clearing stale PID file."
 
-             rm -f "$CATALINA_PID" >/dev/null 2>&1
 
-             if [ $? != 0 ]; then
 
-               if [ -w "$CATALINA_PID" ]; then
 
-                 cat /dev/null > "$CATALINA_PID"
 
-               else
 
-                 echo "Unable to remove or clear stale PID file. Start aborted."
 
-                 exit 1
 
-               fi
 
-             fi
 
-           fi
 
-         else
 
-           echo "Unable to read PID file. Start aborted."
 
-           exit 1
 
-         fi
 
-       else
 
-         rm -f "$CATALINA_PID" >/dev/null 2>&1
 
-         if [ $? != 0 ]; then
 
-           if [ ! -w "$CATALINA_PID" ]; then
 
-             echo "Unable to remove or write to empty PID file. Start aborted."
 
-             exit 1
 
-           fi
 
-         fi
 
-       fi
 
-     fi
 
-   fi
 
-   shift
 
-   if [ -z "$CATALINA_OUT_CMD" ] ; then
 
-     touch "$CATALINA_OUT"
 
-   else
 
-     if [ ! -e "$CATALINA_OUT" ]; then
 
-       if ! mkfifo "$CATALINA_OUT"; then
 
-         echo "cannot create named pipe $CATALINA_OUT. Start aborted."
 
-         exit 1
 
-       fi
 
-     elif [ ! -p "$CATALINA_OUT" ]; then
 
-       echo "$CATALINA_OUT exists and is not a named pipe. Start aborted."
 
-       exit 1
 
-     fi
 
-     $CATALINA_OUT_CMD <"$CATALINA_OUT" &
 
-   fi
 
-   if [ "$1" = "-security" ] ; then
 
-     if [ $have_tty -eq 1 ]; then
 
-       echo "Using Security Manager"
 
-     fi
 
-     shift
 
-     eval $_NOHUP "\"$_RUNJAVA\"" "\"$CATALINA_LOGGING_CONFIG\"" $LOGGING_MANAGER "$JAVA_OPTS" "$CATALINA_OPTS" \
 
-       -D$ENDORSED_PROP="\"$JAVA_ENDORSED_DIRS\"" \
 
-       -classpath "\"$CLASSPATH\"" \
 
-       -Djava.security.manager \
 
-       -Djava.security.policy=="\"$CATALINA_BASE/conf/catalina.policy\"" \
 
-       -Dcatalina.base="\"$CATALINA_BASE\"" \
 
-       -Dcatalina.home="\"$CATALINA_HOME\"" \
 
-       -Djava.io.tmpdir="\"$CATALINA_TMPDIR\"" \
 
-       org.apache.catalina.startup.Bootstrap "$@" start \
 
-       >> "$CATALINA_OUT" 2>&1 "&"
 
-   else
 
-     eval $_NOHUP "\"$_RUNJAVA\"" "\"$CATALINA_LOGGING_CONFIG\"" $LOGGING_MANAGER "$JAVA_OPTS" "$CATALINA_OPTS" \
 
-       -D$ENDORSED_PROP="\"$JAVA_ENDORSED_DIRS\"" \
 
-       -classpath "\"$CLASSPATH\"" \
 
-       -Dcatalina.base="\"$CATALINA_BASE\"" \
 
-       -Dcatalina.home="\"$CATALINA_HOME\"" \
 
-       -Djava.io.tmpdir="\"$CATALINA_TMPDIR\"" \
 
-       org.apache.catalina.startup.Bootstrap "$@" start \
 
-       >> "$CATALINA_OUT" 2>&1 "&"
 
-   fi
 
-   if [ ! -z "$CATALINA_PID" ]; then
 
-     echo $! > "$CATALINA_PID"
 
-   fi
 
-   echo "Tomcat started."
 
- elif [ "$1" = "stop" ] ; then
 
-   shift
 
-   SLEEP=5
 
-   if [ ! -z "$1" ]; then
 
-     echo $1 | grep "[^0-9]" >/dev/null 2>&1
 
-     if [ $? -gt 0 ]; then
 
-       SLEEP=$1
 
-       shift
 
-     fi
 
-   fi
 
-   FORCE=0
 
-   if [ "$1" = "-force" ]; then
 
-     shift
 
-     FORCE=1
 
-   fi
 
-   if [ ! -z "$CATALINA_PID" ]; then
 
-     if [ -f "$CATALINA_PID" ]; then
 
-       if [ -s "$CATALINA_PID" ]; then
 
-         kill -0 `cat "$CATALINA_PID"` >/dev/null 2>&1
 
-         if [ $? -gt 0 ]; then
 
-           echo "PID file found but either no matching process was found or the current user does not have permission to stop the process. Stop aborted."
 
-           exit 1
 
-         fi
 
-       else
 
-         echo "PID file is empty and has been ignored."
 
-       fi
 
-     else
 
-       echo "\$CATALINA_PID was set but the specified file does not exist. Is Tomcat running? Stop aborted."
 
-       exit 1
 
-     fi
 
-   fi
 
-   eval "\"$_RUNJAVA\"" $LOGGING_MANAGER "$JAVA_OPTS" \
 
-     -D$ENDORSED_PROP="\"$JAVA_ENDORSED_DIRS\"" \
 
-     -classpath "\"$CLASSPATH\"" \
 
-     -Dcatalina.base="\"$CATALINA_BASE\"" \
 
-     -Dcatalina.home="\"$CATALINA_HOME\"" \
 
-     -Djava.io.tmpdir="\"$CATALINA_TMPDIR\"" \
 
-     org.apache.catalina.startup.Bootstrap "$@" stop
 
-   # stop failed. Shutdown port disabled? Try a normal kill.
 
-   if [ $? != 0 ]; then
 
-     if [ ! -z "$CATALINA_PID" ]; then
 
-       echo "The stop command failed. Attempting to signal the process to stop through OS signal."
 
-       kill -15 `cat "$CATALINA_PID"` >/dev/null 2>&1
 
-     fi
 
-   fi
 
-   if [ ! -z "$CATALINA_PID" ]; then
 
-     if [ -f "$CATALINA_PID" ]; then
 
-       while [ $SLEEP -ge 0 ]; do
 
-         kill -0 `cat "$CATALINA_PID"` >/dev/null 2>&1
 
-         if [ $? -gt 0 ]; then
 
-           rm -f "$CATALINA_PID" >/dev/null 2>&1
 
-           if [ $? != 0 ]; then
 
-             if [ -w "$CATALINA_PID" ]; then
 
-               cat /dev/null > "$CATALINA_PID"
 
-               # If Tomcat has stopped don't try and force a stop with an empty PID file
 
-               FORCE=0
 
-             else
 
-               echo "The PID file could not be removed or cleared."
 
-             fi
 
-           fi
 
-           echo "Tomcat stopped."
 
-           break
 
-         fi
 
-         if [ $SLEEP -gt 0 ]; then
 
-           sleep 1
 
-         fi
 
-         if [ $SLEEP -eq 0 ]; then
 
-           echo "Tomcat did not stop in time."
 
-           if [ $FORCE -eq 0 ]; then
 
-             echo "PID file was not removed."
 
-           fi
 
-           echo "To aid diagnostics a thread dump has been written to standard out."
 
-           kill -3 `cat "$CATALINA_PID"`
 
-         fi
 
-         SLEEP=`expr $SLEEP - 1 `
 
-       done
 
-     fi
 
-   fi
 
-   KILL_SLEEP_INTERVAL=5
 
-   if [ $FORCE -eq 1 ]; then
 
-     if [ -z "$CATALINA_PID" ]; then
 
-       echo "Kill failed: \$CATALINA_PID not set"
 
-     else
 
-       if [ -f "$CATALINA_PID" ]; then
 
-         PID=`cat "$CATALINA_PID"`
 
-         echo "Killing Tomcat with the PID: $PID"
 
-         kill -9 $PID
 
-         while [ $KILL_SLEEP_INTERVAL -ge 0 ]; do
 
-             kill -0 `cat "$CATALINA_PID"` >/dev/null 2>&1
 
-             if [ $? -gt 0 ]; then
 
-                 rm -f "$CATALINA_PID" >/dev/null 2>&1
 
-                 if [ $? != 0 ]; then
 
-                     if [ -w "$CATALINA_PID" ]; then
 
-                         cat /dev/null > "$CATALINA_PID"
 
-                     else
 
-                         echo "The PID file could not be removed."
 
-                     fi
 
-                 fi
 
-                 echo "The Tomcat process has been killed."
 
-                 break
 
-             fi
 
-             if [ $KILL_SLEEP_INTERVAL -gt 0 ]; then
 
-                 sleep 1
 
-             fi
 
-             KILL_SLEEP_INTERVAL=`expr $KILL_SLEEP_INTERVAL - 1 `
 
-         done
 
-         if [ $KILL_SLEEP_INTERVAL -lt 0 ]; then
 
-             echo "Tomcat has not been killed completely yet. The process might be waiting on some system call or might be UNINTERRUPTIBLE."
 
-         fi
 
-       fi
 
-     fi
 
-   fi
 
- elif [ "$1" = "configtest" ] ; then
 
-     eval "\"$_RUNJAVA\"" $LOGGING_MANAGER "$JAVA_OPTS" \
 
-       -D$ENDORSED_PROP="\"$JAVA_ENDORSED_DIRS\"" \
 
-       -classpath "\"$CLASSPATH\"" \
 
-       -Dcatalina.base="\"$CATALINA_BASE\"" \
 
-       -Dcatalina.home="\"$CATALINA_HOME\"" \
 
-       -Djava.io.tmpdir="\"$CATALINA_TMPDIR\"" \
 
-       org.apache.catalina.startup.Bootstrap configtest
 
-     result=$?
 
-     if [ $result -ne 0 ]; then
 
-         echo "Configuration error detected!"
 
-     fi
 
-     exit $result
 
- elif [ "$1" = "version" ] ; then
 
-     "$_RUNJAVA"   \
 
-       -classpath "$CATALINA_HOME/lib/catalina.jar" \
 
-       org.apache.catalina.util.ServerInfo
 
- else
 
-   echo "Usage: catalina.sh ( commands ... )"
 
-   echo "commands:"
 
-   if $os400; then
 
-     echo "  debug             Start Catalina in a debugger (not available on OS400)"
 
-     echo "  debug -security   Debug Catalina with a security manager (not available on OS400)"
 
-   else
 
-     echo "  debug             Start Catalina in a debugger"
 
-     echo "  debug -security   Debug Catalina with a security manager"
 
-   fi
 
-   echo "  jpda start        Start Catalina under JPDA debugger"
 
-   echo "  run               Start Catalina in the current window"
 
-   echo "  run -security     Start in the current window with security manager"
 
-   echo "  start             Start Catalina in a separate window"
 
-   echo "  start -security   Start in a separate window with security manager"
 
-   echo "  stop              Stop Catalina, waiting up to 5 seconds for the process to end"
 
-   echo "  stop n            Stop Catalina, waiting up to n seconds for the process to end"
 
-   echo "  stop -force       Stop Catalina, wait up to 5 seconds and then use kill -KILL if still running"
 
-   echo "  stop n -force     Stop Catalina, wait up to n seconds and then use kill -KILL if still running"
 
-   echo "  configtest        Run a basic syntax check on server.xml - check exit code for result"
 
-   echo "  version           What version of tomcat are you running?"
 
-   echo "Note: Waiting for the process to end and use of the -force option require that \$CATALINA_PID is defined"
 
-   exit 1
 
- fi
 
 
  |