#!/bin/sh
#
# tomcat	Tomcat Servlet/JSP container
#
# chkconfig:    345  84 16
#
# description:	Tomcat Servlet/JSP container
#
# $Id: apache-tomcat.init,v 1.22 2011/04/13 09:51:36 baggins Exp $


# Source function libraries
. /etc/rc.d/init.d/functions
. /usr/share/java-utils/java-functions

# Get network config
. /etc/sysconfig/network

# Check that networking is up.
if is_yes "${NETWORKING}"; then
	if [ ! -f /var/lock/subsys/network -a "$1" != stop -a "$1" != status ]; then
		msg_network_down tomcat
		exit 1
	fi
else
	exit 0
fi

set_jvm

# Set default options
CATALINA_OPTS="-Xmx384M -XX:MaxPermSize=192m -XX:PermSize=128m"

# Get service config - may override defaults
[ -f /etc/sysconfig/tomcat ] && . /etc/sysconfig/tomcat

unset TMPDIR
unset TMP

COMMONSDAEMON=$(find-jar commons-daemon)
TOMCATLIBS=/usr/share/tomcat/bin/bootstrap.jar:$(build-classpath-directory /usr/share/tomcat/lib)
CLASSPATH=${CLASSPATH:+"$CLASSPATH:"}$COMMONSDAEMON:$TOMCATLIBS

CATALINA_HOME=/usr/share/tomcat
CATALINA_BASE=/var/lib/tomcat
CATALINA_TMPDIR=/var/lib/tomcat/temp

JSVC_OPTS="-classpath ${CLASSPATH} \
	-home ${JAVA_HOME} \
	-pidfile /var/run/tomcat.pid"

if is_yes "${SECURITY_MANAGER}"; then
	CATALINA_OPTS="$CATALINA_OPTS \
		-Djava.security.manager \
		-Djava.security.policy==${CATALINA_BASE}/conf/catalina.policy"
	if [ -n "${SECURITY_MANAGER_DEBUG}" ]; then
		CATALINA_OPTS="$CATALINA_OPTS \
			-Djava.security.debug=${SECURITY_MANAGER_DEBUG}"
	fi
fi

start() {
	# Check if the service is already running?
	if [ ! -f /var/lock/subsys/tomcat ]; then
		msg_starting tomcat
		busy
		cd $CATALINA_BASE
		jsvc -user tomcat -procname tomcat \
			$JSVC_OPTS \
			-Dcatalina.base=${CATALINA_BASE} \
			-Dcatalina.home=${CATALINA_HOME} \
			-Djava.io.tmpdir=${CATALINA_TMPDIR} \
			-Djava.library.path=/usr/lib64:/usr/lib \
			-Djava.util.logging.config.file="${CATALINA_BASE}/conf/logging.properties" \
			-Djava.util.logging.manager="org.apache.juli.ClassLoaderLogManager" \
			$CATALINA_OPTS \
			org.apache.catalina.startup.Bootstrap >> /var/log/tomcat/catalina.out 2>&1
		[ $? -ne 0 ] && RETVAL=1
		if [ $RETVAL -eq 0 ]; then
		   	ok
			touch /var/lock/subsys/tomcat
		else
			fail
		fi
	else
		msg_already_running tomcat
	fi
}

stop() {
	if [ -f /var/lock/subsys/tomcat ]; then
		# Stop daemons.
		msg_stopping tomcat
		busy
		jsvc -user tomcat -stop \
			$JSVC_OPTS \
			org.apache.catalina.startup.Bootstrap
		[ $? -eq 0 ] && ok || fail
		rm -f /var/lock/subsys/tomcat
	else
		msg_not_running tomcat
	fi
}

condrestart() {
	if [ -f /var/lock/subsys/tomcat ]; then
		stop
		start
	else
		msg_not_running tomcat
		RETVAL=$1
	fi
}

RETVAL=0
# See how we were called.
case "$1" in
  start)
  	start
	;;
  stop)
  	stop
	;;
  restart)
	stop
	start
	;;
  try-restart)
	condrestart 0
	;;
  force-reload)
	condrestart 7
	;;
  status)
	status --pidfile /var/run/tomcat.pid tomcat tomcat
	;;
  *)
	msg_usage "$0 {start|stop|restart|try-restart|force-reload|status}"
	exit 3
esac

exit $RETVAL
