#!/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.
|
|
# -----------------------------------------------------------------------------
|
# Wrapper script for command line tools
|
#
|
# Environment Variable Prerequisites
|
#
|
# CATALINA_HOME May point at your Catalina "build" directory.
|
#
|
# TOOL_OPTS (Optional) Java runtime options.
|
#
|
# JAVA_HOME Must point at your Java Development Kit installation.
|
# Using JRE_HOME instead works as well.
|
#
|
# 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.
|
#
|
# 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.
|
# -----------------------------------------------------------------------------
|
|
# OS specific support. $var _must_ be set to either true or false.
|
cygwin=false
|
darwin=false
|
os400=false
|
case "`uname`" in
|
CYGWIN*) cygwin=true;;
|
Darwin*) darwin=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 CATALINA_HOME if not already set
|
[ -z "$CATALINA_HOME" ] && CATALINA_HOME=`cd "$PRGDIR/.." >/dev/null; pwd`
|
|
# 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_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 "$CLASSPATH" ] && CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
|
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
|
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:"$CATALINA_HOME"/bin/tomcat-juli.jar:"$CATALINA_HOME"/lib/servlet-api.jar:"$CATALINA_HOME"/lib/tomcat-util.jar
|
|
# 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"`
|
CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
|
[ -n "$JAVA_ENDORSED_DIRS" ] && JAVA_ENDORSED_DIRS=`cygpath --path --windows "$JAVA_ENDORSED_DIRS"`
|
fi
|
|
# 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
|
|
JAVA_OPTS="$JAVA_OPTS -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager"
|
|
# ----- Execute The Requested Command -----------------------------------------
|
|
eval exec "\"$_RUNJAVA\"" "$JAVA_OPTS" "$TOOL_OPTS" \
|
-D$ENDORSED_PROP="\"$JAVA_ENDORSED_DIRS\"" \
|
-classpath "\"$CLASSPATH\"" \
|
-Dcatalina.home="\"$CATALINA_HOME\"" \
|
org.apache.catalina.startup.Tool "$@"
|