#!/bin/bash # Copyright 1999-2012 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 eerror() { echo "ERROR: ${@}" >&2 } RC_SVCNAME="${2:-tomcat@SLOT@}" RC_SVCBASE="/@GENTOO_PORTAGE_EPREFIX@etc/conf.d/" RC_SVCCONF="${RC_SVCBASE}${RC_SVCNAME}" if [ ! -e "${RC_SVCCONF}" ]; then # Try alternate (preferred) service name "tomcat@SLOT@-NAME" before giving up RC_SVCNAME="tomcat@SLOT@-${RC_SVCNAME/tomcat@SLOT@-/}" RC_SVCCONF="${RC_SVCBASE}${RC_SVCNAME}" if [ ! -e "${RC_SVCCONF}" ]; then eerror "Invalid instance name \"${RC_SVCNAME}\"" eerror "Make sure the instance name is correct and the configuration file" eerror "in \"${RC_SVCCONF}\" exists and is readable by the tomcat user" exit 1 fi fi source ${RC_SVCCONF} if [ $? -ne 0 ]; then eerror "Environment configuration file \"${RC_SVCCONF}\" contains errors" exit 1 fi : ${CATALINA_HOME:=/@GENTOO_PORTAGE_EPREFIX@opt/tomcat@SLOT@} : ${CATALINA_BASE:=/@GENTOO_PORTAGE_EPREFIX@var/lib/${RC_SVCNAME}} : ${CATALINA_TMPDIR:=/@GENTOO_PORTAGE_EPREFIX@var/tmp/${RC_SVCNAME}} : ${TOMCAT_START:=start} : ${JPDA_TRANSPORT:="dt_socket"} : ${JPDA_ADDRESS:="8000"} : ${JPDA_OPTS="-Xdebug -Xrunjdwp:transport=${JPDA_TRANSPORT},address=${JPDA_ADDRESS},server=y,suspend=n"} JAVA_HOME=`java-config ${TOMCAT_JVM:+--select-vm ${TOMCAT_JVM}} --jre-home` CLASSPATH=`java-config --classpath tomcat-bin-@SLOT@${TOMCAT_EXTRA_JARS:+,${TOMCAT_EXTRA_JARS}}` CLASSPATH="${CLASSPATH}${TOMCAT_EXTRA_CLASSPATH:+:${TOMCAT_EXTRA_CLASSPATH}}" start() { if [ ! -e "${CATALINA_BASE}" ]; then eerror "CATALINA_BASE does not exist. Unable to start tomcat." exit 1 fi if [ ! -e "${CATALINA_HOME}" ]; then eerror "CATALINA_HOME does not exist. Unable to start tomcat." exit 1 fi if [ ! -e "${CATALINA_TMPDIR}" ]; then eerror "CATALINA_TMPDIR does not exist. Unable to start tomcat." eerror "Please see /@GENTOO_PORTAGE_EPREFIX@etc/conf.d/${RC_SVCNAME} for more information." exit 1 fi if [ $(id -u) -eq 0 ]; then eerror "This service should not be started as root" exit 1 fi cmd=java args= if [ "${TOMCAT_START}" = "debug" ] || [ "${TOMCAT_START}" = "-security debug" ] ; then cmd=jdb args="${args} -sourcepath ${CATALINA_HOME}/../../jakarta-tomcat-catalina/catalina/src/share" fi if [ "${TOMCAT_START}" = "-security debug" ] || [ "${TOMCAT_START}" = "-security start" ]; then args="${args} -Djava.security.manager" args="${args} -Djava.security.policy=${CATALINA_BASE}/conf/catalina.policy" fi if [ "${TOMCAT_START}" = "jpda start" ] ; then args="${args} ${JPDA_OPTS}" fi if [ -r "${CATALINA_HOME}"/bin/tomcat-juli.jar ]; then args="${args} -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager \ -Djava.util.logging.config.file=${CATALINA_BASE}/conf/logging.properties" fi cd "${CATALINA_BASE}" exec ${JAVA_HOME}/bin/${cmd} \ ${JAVA_OPTS} \ ${args} \ -Dcatalina.base="${CATALINA_BASE}" \ -Dcatalina.home="${CATALINA_HOME}" \ -Djava.io.tmpdir="${CATALINA_TMPDIR}" \ -classpath "${CLASSPATH}" \ org.apache.catalina.startup.Bootstrap \ ${CATALINA_OPTS} \ ${TOMCAT_START} } stop() { exec ${JAVA_HOME}/bin/java \ ${JAVA_OPTS} \ -Dcatalina.base="${CATALINA_BASE}" \ -Dcatalina.home="${CATALINA_HOME}" \ -Djava.io.tmpdir="${CATALINA_TMPDIR}" \ -classpath "${CLASSPATH}" \ org.apache.catalina.startup.Bootstrap \ ${CATALINA_OPTS} \ stop ret=$? # Ignore sigterm [[ $ret -eq 143 ]] && \ ret=0 return $ret } version() { exec ${JAVA_HOME}/bin/java \ ${JAVA_OPTS} \ -Dcatalina.base="${CATALINA_BASE}" \ -Dcatalina.home="${CATALINA_HOME}" \ -Djava.io.tmpdir="${CATALINA_TMPDIR}" \ -classpath "${CLASSPATH}" \ org.apache.catalina.util.ServerInfo } case "$1" in start) start ;; stop) stop ;; restart) stop start ;; version) version ;; *) echo "Usage: $0 {start|stop|restart|version|getenv} [instance name]" >&2 exit 1 esac