#!/bin/sh
#
# tomcat        Startup script for the Tomcat servlet container
#
# chkconfig: 345 86 14
# description: Tomcat startup

prog=$0

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

JAVA_HOME=/usr/java/default
CATALINA_HOME=/usr/local/tomcat
TOMCAT_USER=tomcat
TC_HOME=/usr/local/terracotta

# For the IdP, a MaxPermSize of 128M is recommended.
# If we are also running the Cams app, bump it to 256M.
if [ -f "$CATALINA_HOME/webapps/cams.war" ]; then
  maxpermsize=256M
else
  maxpermsize=128M
fi

# Set Java options for the IdP.
JAVA_OPTS="-server"
JAVA_OPTS="$JAVA_OPTS -Xms1G -Xmx1G"
JAVA_OPTS="$JAVA_OPTS -XX:MaxPermSize=$maxpermsize"
JAVA_OPTS="$JAVA_OPTS -XX:+UseParallelOldGC"
JAVA_OPTS="$JAVA_OPTS -XX:+DisableExplicitGC"
JAVA_OPTS="$JAVA_OPTS -XX:MaxGCPauseMillis=5000"
JAVA_OPTS="$JAVA_OPTS -XX:+PrintGCDetails"
JAVA_OPTS="$JAVA_OPTS -XX:+PrintGCTimeStamps"
JAVA_OPTS="$JAVA_OPTS -XX:-TraceClassUnloading"

# Add terracotta client setup, if the terracotta server is configured.
if chkconfig terracotta ; then
  # Use the latest generated dso boot file.
  tc_dso_boot=$(ls -1 -t $TC_HOME/lib/dso-boot/dso-boot-*.jar | head -1)
  if [ -n "$tc_dso_boot" ]; then
    JAVA_OPTS="$JAVA_OPTS -Xbootclasspath/p:$tc_dso_boot"
  else
    echo "Warning: Cannot find terracotta dso boot file!"
  fi
  JAVA_OPTS="$JAVA_OPTS -Dtc.install-root=$TC_HOME"
  JAVA_OPTS="$JAVA_OPTS -Dtc.config=/usr/local/shibboleth-idp/conf/tc-config.xml"
fi

export CATALINA_HOME JAVA_HOME JAVA_OPTS 

start() {
  su $TOMCAT_USER -s /bin/sh -c "$CATALINA_HOME/bin/startup.sh"
  RETVAL=$?
}

stop() {
  su $TOMCAT_USER -s /bin/sh -c $CATALINA_HOME/bin/shutdown.sh
  RETVAL=$?
}

cd $CATALINA_HOME || exit 1
case $1 in
  start)
     start
     ;;
  stop)
    stop
    ;;
  restart)
    stop
    sleep 3
    start
    ;;
  *)
    echo "Usage: $prog {start|stop|restart}"
    exit 1
    ;;
esac

exit $RETVAL
