Table of Contents
There are lots of quirks which are encountered when trying to start up Tomcat. See the Tomcat Quirks chapter about problems with starting up Tomcat.
If you are restarting Tomcat, make sure that it really does shut down, because the Tomcat-supplied scripts do not tell you if your shutdown attempt fails. Often, a startup problem is really a shutdown problem... if you could just stop the damned thing, it would start just fine. See the Tomcat Quirks about fixing that.
If your OS supplies a good init script, you should probably use that,
since it will probably use configuration files and users which have
been set up by the OS-specific installation scripts.
Suse-users should be aware that most of the runtime configurations
for the startup script are made in
/etc/sysconfig/j2ee
.
Most significantly, the setting CATALINA_BASE
.
Example 3.1. Multi-Tomcat-instance generic UNIX init script
#!/bin/sh -p # $Id: tomcat,v 1.8 2005/11/01 15:32:16 blaine Exp $ export CATALINA_HOME CATALINA_BASE JAVA_HOME CATALINA_PID JAVA_OPTS BASE_PARENT_PATH=/home/tomcat DFLT_CATALINA_HOME=/usr/local/tomcat-5.0.28 DFLT_JAVA_HOME=/usr/local/java DFLT_TOMCAT_OWNER=tomcat # Note: Set JAVA_OPT to increate RAM usage, etc. # The "headless" setting is needed for any webapps making use of # an awt graphics context, like with JFreeChart or JasperReport. DFLT_JAVA_OPTS="-Djava.awt.headless=true -ms512M -mx512M" case "$1" in start|stop) case "$1" in start) SCRIPT=startup.sh;; stop) SCRIPT=shutdown.sh;; esac for catworkdir in $BASE_PARENT_PATH/*/work/Catalina; do workdir=`dirname $catworkdir` CATALINA_BASE=`dirname $workdir` [ -d "$CATALINA_BASE" ] || { echo "Aborting. CATALINA_BASE '$CATALINA_BASE' not a directory?" 1>&2 exit 1 } # Reset all vars to defaults CATALINA_HOME="$DFLT_CATALINA_HOME" JAVA_HOME="$DFLT_JAVA_HOME" TOMCAT_OWNER="$DFLT_TOMCAT_OWNER" JAVA_OPTS="$DFLT_JAVA_OPTS" BASE_NAME=`basename $CATALINA_BASE` case "$BASE_NAME" in test*) continue;; template*) continue;; esac CATALINA_PID=$CATALINA_BASE/temp/tomcat.pid # Allow instance-specific environment file to override any settings [ -f "$CATALINA_BASE" ] && [ -r "$CATALINA_BASE/instance.env" ] && . "$CATALINA_BASE/instance.env" echo "Starting Tomcat instance '$BASE_NAME'..." 1>&2 if su "$TOMCAT_OWNER" -c $CATALINA_HOME/bin/$SCRIPT; then echo Success else echo Failed fi 1>&2 done ;; purge) /etc/init.d/tomcat stop || exit 1 for catworkdir in $BASE_PARENT_PATH/*/work/Catalina; do workdir=`dirname $catworkdir` CATALINA_BASE=`dirname $workdir` [ -d "$CATALINA_BASE" ] || { echo "Aborting. CATALINA_BASE '$CATALINA_BASE' not a directory?" 1>&2 exit 1 } BASE_NAME=`basename $CATALINA_BASE` case "$BASE_NAME" in test*) continue;; template*) continue;; esac echo "Purging Tomcat instance '$BASE_NAME'..." 1>&2 rm -r $CATALINA_BASE/logs/* done exec /etc/init.d/tomcat start ;; restart) /etc/init.d/tomcat stop && exec /etc/init.d/tomcat start ;; *) echo "SYNTAX: /etc/init.d/tomcat {start|stop|restart|purge}" 1>&2 exit 2 ;; esac exit 0