#!/bin/sh
#
# Start/stop script for tomcat located at /etc/init.d
#
# Author: Christian Egli <christian.egli@wyona.com>.
# Author: Michael Wechner <michael.wechner@wyona.com>.
#
# |||||||||||||||||||| START CONFIGURATION SECTION  ||||||||||||||||||||
# --------------------                              --------------------

# Has to be defined for tomcat
USER="username"

# Has to be defined for tomcat
JAVA_HOME="/usr/local/j2sdk1.4.1_02"

# The bin directories of all the servers
DAEMONS="/usr/local/jakarta-tomcat-4.1.21-LE-jdk14/bin"

# where you can also set more than one server, e.g.
#DAEMONS="/usr/local/jakarta-tomcat-4.1.21-LE-jdk14/bin /home/username/build/jakarta-tomcat-4.1.21-LE-jdk14/bin"
#
# --------------------                              --------------------
# ||||||||||||||||||||   END CONFIGURATION SECTION  ||||||||||||||||||||

NAME=$0
DESC="Tomcat in virtual hosts"



case "$1" in
  start)
	echo "Starting $DESC: $NAME"
	for daemon in $DAEMONS; do 
	    echo "Starting $daemon/startup.sh"
	    su - $USER -c "export JAVA_HOME=$JAVA_HOME; sh $daemon/startup.sh"
	done;
	;;
  stop)
	echo "Stopping $DESC: $NAME "
	for daemon in $DAEMONS; do 
	    echo "Stopping $daemon/shutdown.sh"
	    su - $USER -c "export JAVA_HOME=$JAVA_HOME; sh $daemon/shutdown.sh"
	done;
	;;
  restart|force-reload)
        # FIXME: Tomcat does not shutdown properly
	#
	#	If the "reload" option is implemented, move the "force-reload"
	#	option to the "reload" entry above. If not, "force-reload" is
	#	just the same as "restart".
	#
	echo "FIXME"
	#echo "Restarting $DESC: $NAME"
	#for daemon in $DAEMONS; do 
	#    echo "Stopping $daemon/shutdown.sh"
	#    eval $daemon/shutdown.sh
	#done;
        #
	#sleep 10
	#for daemon in $DAEMONS; do 
	#    echo "Starting $daemon/startup.sh"
	#    eval $daemon/startup.sh
	#done;
	#
	;;
  *)
	#echo "Usage: $NAME {start|stop|restart|force-reload}" >&2
	echo "Usage: $NAME {start|stop}" >&2
	exit 1
	;;
esac

exit 0
