#!/bin/sh
# $Id: template,v 1.3 2003/05/21 17:47:00 ldv Exp $
#
# Startup script for Tomcat 5.0, the Apache Servlet Engine.
#
# chkconfig: 345 70 30
# description:	Tomcat 5.0 is the Apache Servlet Engine RI for Servlet 2.4/JSP 2.0

# Source function library.
. /etc/init.d/functions

TOMCAT_USER=tomcat
TOMCAT_CONF_DIR=/etc/tomcat5
TOMCAT_HOME=/usr/lib/tomcat5

PIDFILE=/var/run/tomcat5.pid
LOCKFILE=/var/lock/subsys/tomcat5

JSVC=/usr/sbin/jsvc

TOMCAT_BASE=$TOMCAT_HOME

TOMCAT_ARGS=
JSVC_OPTS=

RETVAL=0

SourceIfExists "$TOMCAT_CONF_DIR"/tomcat5.conf

start()
{
    SourceIfExists /usr/lib/java-common/java-functions
    FindJVM

    if [ -z "$JAVA_HOME" ]; then
	echo -n 'Tomcat startup: cannot find Java runtime environment'
	failure 'Tomcat JVM startup'
	exit 1
    fi

    local STARTUP_OPTS LOGFILE

    AddToClasspath "$TOMCAT_HOME"/bin/bootstrap.jar
    AddToClasspath "$TOMCAT_HOME"/bin/jakarta-commons-daemon.jar
    AddToClasspath "$TOMCAT_HOME"/bin/jakarta-commons-logging-api.jar
    AddToClasspath "$TOMCAT_HOME"/bin/jmx.jar
    AddToClasspath "$JAVA_HOME"/lib/tools.jar

    if [ -n "$TOMCAT_SECURITY_POLICY" ]; then
	STARTUP_OPTS="$STARTUP_OPTS -Djava.security.manager -Djava.security.policy=$TOMCAT_SECURITY_POLICY"
    fi

    if [ -n "$JAVA_ENDORSED_DIRS" ]; then
	STARTUP_OPTS="$STARTUP_OPTS -Djava.endorsed.dirs=$JAVA_ENDORSED_DIRS"
    fi

    STARTUP_OPTS="$STARTUP_OPTS -Dcatalina.home=$TOMCAT_HOME"
    STARTUP_OPTS="$STARTUP_OPTS -Dcatalina.base=$TOMCAT_BASE"
    STARTUP_OPTS="$STARTUP_OPTS -Djava.io.tmpdir=$TOMCAT_BASE/temp"

    LOGFILE=$TOMCAT_BASE/logs/tomcat_boot.log

    if [ -e "$LOGFILE" ]; then
	/bin/mv -f -- "$LOGFILE" "$LOGFILE".old
    fi

    msg_starting tomcat
    start_daemon \
	--pidfile "$PIDFILE" \
	--lockfile "$LOCKFILE" \
	--expect-user "$TOMCAT_USER" \
	--no-announce \
	-- "$JSVC" \
		-home "$JAVA_HOME" \
		-cp "$CLASSPATH" \
		$JSVC_OPTS \
		-user "$TOMCAT_USER" \
		-pidfile "$PIDFILE" \
		-errfile '&1' \
		-outfile "$LOGFILE" \
		$STARTUP_OPTS \
		org.apache.catalina.startup.Bootstrap \
		$TOMCAT_ARGS

    RETVAL=$?
    return $RETVAL
}

stop()
{
    msg_stopping tomcat
    stop_daemon \
	--pidfile "$PIDFILE" \
	--lockfile "$LOCKFILE" \
	--expect-user "$TOMCAT_USER" \
	--no-announce \
	-- "$JSVC"

    RETVAL=$?
    return $RETVAL
}

status()
{
    status \
	--pidfile "$PIDFILE" \
	--expect-user "$TOMCAT_USER" \
	-- "$JSVC"

    RETVAL=$?
    return $RETVAL
}

# See how we were called.
case "$1" in
    start)
	start
        ;;
    stop)
	stop
        ;;
    restart|reload)
	stop
	start
	;;
    condstop)
	# Stop the servce if it is already running, for example:
	if [ -e "$LOCKFILE" ]; then
	    stop
	fi
	;;
    condrestart)
	# Restart the servce if it is already running, for example:
	if [ -e "$LOCKFILE" ]; then
	    stop
	    start
	fi
	;;
    status)
	status
	;;
    *)
	echo "Usage: ${0##*/} {start|stop|reload|restart|condstop|condrestart|status}"
	RETVAL=1
esac

exit $RETVAL
