271 lines
8.1 KiB
Bash
271 lines
8.1 KiB
Bash
#!/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.
|
|
#
|
|
# -----------------------------------------------------------------------------
|
|
# Commons Daemon wrapper script.
|
|
# -----------------------------------------------------------------------------
|
|
|
|
# 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
|
|
|
|
DIRNAME="`dirname "$PRG"`"
|
|
PROGRAM="`basename "$PRG"`"
|
|
while [ ".$1" != . ]
|
|
do
|
|
case "$1" in
|
|
--java-home )
|
|
JAVA_HOME="$2"
|
|
shift; shift;
|
|
continue
|
|
;;
|
|
--catalina-home )
|
|
CATALINA_HOME="$2"
|
|
shift; shift;
|
|
continue
|
|
;;
|
|
--catalina-base )
|
|
CATALINA_BASE="$2"
|
|
shift; shift;
|
|
continue
|
|
;;
|
|
--catalina-pid )
|
|
CATALINA_PID="$2"
|
|
shift; shift;
|
|
continue
|
|
;;
|
|
--tomcat-user )
|
|
TOMCAT_USER="$2"
|
|
shift; shift;
|
|
continue
|
|
;;
|
|
--service-start-wait-time )
|
|
SERVICE_START_WAIT_TIME="$2"
|
|
shift; shift;
|
|
continue
|
|
;;
|
|
* )
|
|
break
|
|
;;
|
|
esac
|
|
done
|
|
# OS specific support (must be 'true' or 'false').
|
|
cygwin=false;
|
|
darwin=false;
|
|
case "`uname`" in
|
|
CYGWIN*)
|
|
cygwin=true
|
|
;;
|
|
Darwin*)
|
|
darwin=true
|
|
;;
|
|
esac
|
|
|
|
# Use the maximum available, or set MAX_FD != -1 to use that
|
|
test ".$MAX_FD" = . && MAX_FD="maximum"
|
|
# Setup parameters for running the jsvc
|
|
#
|
|
test ".$TOMCAT_USER" = . && TOMCAT_USER=tomcat
|
|
# Set JAVA_HOME to working JDK or JRE
|
|
# If not set we'll try to guess the JAVA_HOME
|
|
# from java binary if on the PATH
|
|
#
|
|
if [ -z "$JAVA_HOME" ]; then
|
|
JAVA_BIN="`which java 2>/dev/null || type java 2>&1`"
|
|
while [ -h "$JAVA_BIN" ]; do
|
|
ls=`ls -ld "$JAVA_BIN"`
|
|
link=`expr "$ls" : '.*-> \(.*\)$'`
|
|
if expr "$link" : '/.*' > /dev/null; then
|
|
JAVA_BIN="$link"
|
|
else
|
|
JAVA_BIN="`dirname "$JAVA_BIN"`/$link"
|
|
fi
|
|
done
|
|
test -x "$JAVA_BIN" && JAVA_HOME="`dirname "$JAVA_BIN"`"
|
|
test ".$JAVA_HOME" != . && JAVA_HOME=`cd "$JAVA_HOME/.." >/dev/null; pwd`
|
|
else
|
|
JAVA_BIN="$JAVA_HOME/bin/java"
|
|
fi
|
|
|
|
# Only set CATALINA_HOME if not already set
|
|
test ".$CATALINA_HOME" = . && CATALINA_HOME=`cd "$DIRNAME/.." >/dev/null; pwd`
|
|
test ".$CATALINA_BASE" = . && CATALINA_BASE="$CATALINA_HOME"
|
|
test ".$CATALINA_MAIN" = . && CATALINA_MAIN=org.apache.catalina.startup.Bootstrap
|
|
# If not explicitly set, look for jsvc in CATALINA_BASE first then CATALINA_HOME
|
|
if [ -z "$JSVC" ]; then
|
|
JSVC="$CATALINA_BASE/bin/jsvc"
|
|
if [ ! -x "$JSVC" ]; then
|
|
JSVC="$CATALINA_HOME/bin/jsvc"
|
|
fi
|
|
fi
|
|
# Set the default service-start wait time if necessary
|
|
test ".$SERVICE_START_WAIT_TIME" = . && SERVICE_START_WAIT_TIME=10
|
|
|
|
# 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=
|
|
JAVA_OPTS=
|
|
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
|
|
|
|
# Add on extra jar files to CLASSPATH
|
|
test ".$CLASSPATH" != . && CLASSPATH="$CLASSPATH:"
|
|
CLASSPATH="$CLASSPATH$CATALINA_HOME/bin/bootstrap.jar:$CATALINA_HOME/bin/commons-daemon.jar"
|
|
|
|
test ".$CATALINA_OUT" = . && CATALINA_OUT="$CATALINA_BASE/logs/catalina-daemon.out"
|
|
test ".$CATALINA_TMP" = . && CATALINA_TMP="$CATALINA_BASE/temp"
|
|
|
|
# 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
|
|
|
|
# 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
|
|
|
|
test ".$LOGGING_MANAGER" = . && LOGGING_MANAGER="-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager"
|
|
JAVA_OPTS="$JAVA_OPTS $LOGGING_MANAGER"
|
|
|
|
# Set -pidfile
|
|
test ".$CATALINA_PID" = . && CATALINA_PID="$CATALINA_BASE/logs/catalina-daemon.pid"
|
|
|
|
# Increase the maximum file descriptors if we can
|
|
if [ "$cygwin" = "false" ]; then
|
|
MAX_FD_LIMIT=`ulimit -H -n`
|
|
if [ "$?" -eq 0 ]; then
|
|
# Darwin does not allow RLIMIT_INFINITY on file soft limit
|
|
if [ "$darwin" = "true" ] && [ "$MAX_FD_LIMIT" = "unlimited" ]; then
|
|
MAX_FD_LIMIT=`/usr/sbin/sysctl -n kern.maxfilesperproc`
|
|
fi
|
|
test ".$MAX_FD" = ".maximum" && MAX_FD="$MAX_FD_LIMIT"
|
|
ulimit -n $MAX_FD
|
|
if [ "$?" -ne 0 ]; then
|
|
echo "$PROGRAM: Could not set maximum file descriptor limit: $MAX_FD"
|
|
fi
|
|
else
|
|
echo "$PROGRAM: Could not query system maximum file descriptor limit: $MAX_FD_LIMIT"
|
|
fi
|
|
fi
|
|
|
|
# Set UMASK unless it has been overridden
|
|
if [ -z "$UMASK" ]; then
|
|
UMASK="0027"
|
|
fi
|
|
umask $UMASK
|
|
|
|
# ----- Execute The Requested Command -----------------------------------------
|
|
case "$1" in
|
|
run )
|
|
shift
|
|
eval exec "\"$JSVC\"" $* \
|
|
"$JSVC_OPTS" \
|
|
-java-home "\"$JAVA_HOME\"" \
|
|
-pidfile "\"$CATALINA_PID\"" \
|
|
-wait $SERVICE_START_WAIT_TIME \
|
|
-umask $UMASK \
|
|
-nodetach \
|
|
-outfile "\"&1\"" \
|
|
-errfile "\"&2\"" \
|
|
-classpath "\"$CLASSPATH\"" \
|
|
"\"$CATALINA_LOGGING_CONFIG\"" "$JAVA_OPTS" "$CATALINA_OPTS" \
|
|
-Dcatalina.base="\"$CATALINA_BASE\"" \
|
|
-Dcatalina.home="\"$CATALINA_HOME\"" \
|
|
-Djava.io.tmpdir="\"$CATALINA_TMP\"" \
|
|
$CATALINA_MAIN
|
|
exit $?
|
|
;;
|
|
start )
|
|
eval "\"$JSVC\"" \
|
|
"$JSVC_OPTS" \
|
|
-java-home "\"$JAVA_HOME\"" \
|
|
-user $TOMCAT_USER \
|
|
-pidfile "\"$CATALINA_PID\"" \
|
|
-wait $SERVICE_START_WAIT_TIME \
|
|
-umask $UMASK \
|
|
-outfile "\"$CATALINA_OUT\"" \
|
|
-errfile "\"&1\"" \
|
|
-classpath "\"$CLASSPATH\"" \
|
|
"\"$CATALINA_LOGGING_CONFIG\"" "$JAVA_OPTS" "$CATALINA_OPTS" \
|
|
-Dcatalina.base="\"$CATALINA_BASE\"" \
|
|
-Dcatalina.home="\"$CATALINA_HOME\"" \
|
|
-Djava.io.tmpdir="\"$CATALINA_TMP\"" \
|
|
$CATALINA_MAIN
|
|
exit $?
|
|
;;
|
|
stop )
|
|
eval "\"$JSVC\"" \
|
|
"$JSVC_OPTS" \
|
|
-stop \
|
|
-pidfile "\"$CATALINA_PID\"" \
|
|
-classpath "\"$CLASSPATH\"" \
|
|
-Dcatalina.base="\"$CATALINA_BASE\"" \
|
|
-Dcatalina.home="\"$CATALINA_HOME\"" \
|
|
-Djava.io.tmpdir="\"$CATALINA_TMP\"" \
|
|
$CATALINA_MAIN
|
|
exit $?
|
|
;;
|
|
version )
|
|
"$JSVC" \
|
|
-java-home "$JAVA_HOME" \
|
|
-pidfile "$CATALINA_PID" \
|
|
-classpath "$CLASSPATH" \
|
|
-errfile "&2" \
|
|
-version \
|
|
-check \
|
|
$CATALINA_MAIN
|
|
if [ "$?" = 0 ]; then
|
|
"$JAVA_BIN" \
|
|
-classpath "$CATALINA_HOME/lib/catalina.jar" \
|
|
org.apache.catalina.util.ServerInfo
|
|
fi
|
|
exit $?
|
|
;;
|
|
* )
|
|
echo "Unknown command: '$1'"
|
|
echo "Usage: $PROGRAM ( commands ... )"
|
|
echo "commands:"
|
|
echo " run Start Tomcat without detaching from console"
|
|
echo " start Start Tomcat"
|
|
echo " stop Stop Tomcat"
|
|
echo " version What version of commons daemon and Tomcat"
|
|
echo " are you running?"
|
|
exit 1
|
|
;;
|
|
esac
|