tomcat/tomcat-7.0-tomcat-sysd
Michal Vyskocil 97133c31b7 Accepting request 155580 from home:m407:branches:Java:packages
Init scripts generate malformed classpath. Occurs for example with youtrack issue tracker. Tomcat tries to launch two application instances.

OBS-URL: https://build.opensuse.org/request/show/155580
OBS-URL: https://build.opensuse.org/package/show/Java:packages/tomcat?expand=0&rev=19
2013-02-21 14:48:16 +00:00

147 lines
3.8 KiB
Bash

#!/bin/bash
#
# This script provides systemd activation of the tomcat service and tomcat
# throught jsvc wrapper
# check the basic environment variables
if [[ -z "${CATALINA_BASE}" || \
-z "${CATALINA_HOME}" || \
-z "${CATALINA_TMPDIR}" ]]; then
echo "ERROR: one of CATALINA_BASE, CATALINA_HOME or CATALINA_TMPDIR is not defined" >&2
echo " use proper EnvironmentFile= in your .service file" >&2
exit 1
fi
if [[ "${0}" =~ tomcat-jsvc ]]; then
if [[ ! -x /usr/bin/jsvc ]]; then
echo "ERROR: cannot use ${0}, /usr/bin/jsvc does not exists" >&2
exit 1
fi
USE_JSVC=true
JSVC_PIDFILE=${JSVC_PIDFILE:-/var/run/${0##*/}}
else
USE_JSVC=false
fi
#### from /usr/sbin/dtomcat
if [[ -r /usr/share/java-utils/java-functions ]]; then
. /usr/share/java-utils/java-functions
else
echo "ERROR: Can't read Java functions library, aborting" >&2
exit 1
fi
set_javacmd
# CLASSPATH munging
if [[ -n "$JSSE_HOME" ]]; then
CLASSPATH="${CLASSPATH}:$(build-classpath jcert jnet jsse 2>/dev/null)"
fi
CLASSPATH="${CLASSPATH}:${CATALINA_HOME}/bin/bootstrap.jar"
CLASSPATH="${CLASSPATH}:${CATALINA_HOME}/bin/tomcat-juli.jar"
CLASSPATH="${CLASSPATH}:$(build-classpath commons-daemon 2>/dev/null)"
CLASSPATH="`echo ${CLASSPATH} | sed -r 's/::+/:/g; s/^:|:$//g'`"
# See how we were called.
function start() {
local ret
# running as root is not allowed if not running with jsvc
if ! ${USE_JSVC} && [[ $(id -u) == 0 ]]; then
echo "ERROR: starting tomcat under uid 0 is not supported" >&2
echo " use appropriate User/Group settings in service file" >&2
echo " see man systemd.exec for details" >&2
exit 2
fi
if [[ "$SECURITY_MANAGER" = "true" ]]; then
DSECURITY_MANAGER="-Djava.security.manager"
else
unset DSECURITY_MANAGER
fi
if ${USE_JSVC}; then
JAVACMD="/usr/bin/jsvc -pidfile ${JSVC_PIDFILE} -nodetach -user ${TOMCAT_USER:-tomcat}"
fi
#bnc#779538
cd ${CATALINA_BASE}
${JAVACMD} $JAVA_OPTS $CATALINA_OPTS \
-classpath "$CLASSPATH" \
-Dcatalina.base="$CATALINA_BASE" \
-Dcatalina.home="$CATALINA_HOME" \
-Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" \
-Djava.io.tmpdir="$CATALINA_TMPDIR" ${DSECURITY_MANAGER} \
-Djava.util.logging.config.file="${CATALINA_BASE}/conf/logging.properties" \
-Djava.util.logging.manager="org.apache.juli.ClassLoaderLogManager" \
org.apache.catalina.startup.Bootstrap start \
>> ${CATALINA_BASE}/logs/catalina.out 2>&1
ret=${?}
return $ret
}
function stop() {
local ret
if ${USE_JSVC}; then
#XXX: foo is needed because of funny jsvc parser needs a class name
/usr/bin/jsvc -stop -pidfile ${JSVC_PIDFILE} foo
ret=${?}
if [[ $ret == 0 ]]; then
rm -f ${JSVC_PIDFILE}
fi
else
${JAVACMD} $JAVA_OPTS \
-classpath "$CLASSPATH" \
-Dcatalina.base="$CATALINA_BASE" \
-Dcatalina.home="$CATALINA_HOME" \
-Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" \
-Djava.io.tmpdir="$CATALINA_TMPDIR" \
org.apache.catalina.startup.Bootstrap stop
ret=${?}
# workaround the 143 code emmited by jvm in case of sigterm
# using ExecStart=- will ignore all other failures as well
if [[ ret == 143 ]]; then
ret=0
fi
fi
return $ret
}
function version() {
exec ${JAVACMD} -classpath ${CATALINA_HOME}/lib/catalina.jar \
org.apache.catalina.util.ServerInfo
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
version)
version
;;
*)
echo "Usage: $0 {start|stop|restart|version}" >&2
exit 1
esac