#!/bin/sh
#
# Tomcat Control Script
#
### BEGIN INIT INFO
# X-UnitedLinux-Should-Start: $network
# Provides: tomcat
# Default-Start: 3 5
# Default-Stop: 0 1 2 6
# Description: WatchPoint Tomcat Server
### END INIT INFO

if [ -f /etc/profile.d/commonplatform.sh ] ; then
	. /etc/profile.d/commonplatform.sh
fi

export JAVA_HOME

TOMCAT_HOME=/opt/tandbergtv/watchpoint/tomcat
ENDORSED_DIRS=$TOMCAT_HOME/common/endorsed
JAVA_HOME=/usr/java/default/bin
JSTACK_CMD=$JAVA_HOME/jstack

# Classpath
TOMCAT_CLASSPATH=$TOMCAT_HOME/bin/bootstrap.jar

# Properties
JAVA_OPTS="-Xmx500M -Dcom.sun.management.jmxremote -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file=$TOMCAT_HOME/conf/logging.properties"
JAVA_OPTS="$JAVA_OPTS -Dcatalina.base=$TOMCAT_HOME -Dcatalina.home=$TOMCAT_HOME -Djava.io.tmpdir=$TOMCAT_HOME/temp"

# Command
CMD_START="java $JAVA_OPTS -Djava.endorsed.dirs="$ENDORSED_DIRS" -classpath "$TOMCAT_CLASSPATH" org.apache.catalina.startup.Bootstrap "$@""
CMD_STOP="java $JAVA_OPTS -Djava.endorsed.dirs="$ENDORSED_DIRS" -classpath "$TOMCAT_CLASSPATH" org.apache.catalina.startup.Bootstrap "$@""

case "$1" in
start)
	pid=$(ps axww | grep "[o]rg.apache.catalina.startup.Bootstrap" | sed -e 's/^\s*//' | cut -d' ' -f1)
	if [ -z "${pid}" ] ; then
		echo -n $"Starting Tomcat"
		sudo -u nobody env LANG=en_US.UTF-8 $CMD_START >/dev/null 2>&1 &
	else
		echo "Tomcat is already running..."
	fi
    ;;
stop)
	pid=$(ps axww | grep "[o]rg.apache.catalina.startup.Bootstrap" | sed -e 's/^\s*//' | cut -d' ' -f1)
	sudo -u nobody $JSTACK_CMD -l $pid > $TOMCAT_HOME/tomcat_stackdump.txt
	echo -n $"Stopping Tomcat"
	sudo -u nobody $CMD_STOP >/dev/null 2>&1 &
	if [ ! -z "${pid}" ] ; then
		kill -9 $pid # PURE MASSACRE
	fi
	echo
    ;;
status)
	pid=$(ps axww | grep "[o]rg.apache.catalina.startup.Bootstrap" | sed -e 's/^\s*//' | cut -d' ' -f1)
	if [ -z "${pid}" ] ; then
		echo "Tomcat is stopped"
	else
		echo "Tomcat (pid " $pid") is running..."
	fi
	;;
restart)
    $0 stop
    $0 start
    ;;
*)
    echo "usage: $0 (start|stop|restart|help)"
esac
