File: tomcat5.init

package info (click to toggle)
tomcat5 5.0.30-12etch1
  • links: PTS
  • area: main
  • in suites: etch
  • size: 22,860 kB
  • ctags: 26,367
  • sloc: java: 152,968; xml: 42,830; ansic: 33,715; jsp: 7,193; perl: 2,289; sh: 1,081; makefile: 551; awk: 59
file content (216 lines) | stat: -rw-r--r-- 6,461 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
#! /bin/sh -e
#
# /etc/init.d/tomcat5 -- startup script for the Tomcat 5 servlet engine
#
# Written by Miquel van Smoorenburg <miquels@cistron.nl>.
# Modified for Debian GNU/Linux	by Ian Murdock <imurdock@gnu.ai.mit.edu>.
# Modified for Tomcat by Stefan Gybas <sgybas@debian.org>.

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
NAME=tomcat5
DESC="Tomcat 5 servlet engine"
CATALINA_HOME=/usr/share/$NAME
DAEMON=$CATALINA_HOME/bin/catalina.sh
DEFAULT=/etc/default/$NAME

# The following variables can be overwritten in $DEFAULT

# Run Tomcat 5 as this user ID
TOMCAT5_USER=tomcat5

# The first existing directory is used for JAVA_HOME (if JAVA_HOME is not
# defined in $DEFAULT)
JDK_DIRS="/usr/lib/jvm/java-1.5.0-sun /usr/lib/j2sdk1.4-sun /usr/lib/j2sdk1.4-blackdown /usr/lib/j2se/1.4 /usr/lib/j2sdk1.5-sun /usr/lib/j2sdk1.3-sun /usr/lib/j2sdk1.3-blackdown /usr/lib/j2sdk1.5-ibm /usr/lib/j2sdk1.4-ibm /usr/lib/jvm/java-gcj /usr/lib/kaffe"

# Directory for per-instance configuration files and webapps
CATALINA_BASE=/var/lib/tomcat5

# Use the Java security manager? (yes/no)
TOMCAT5_SECURITY=yes

# Timeout in seconds for the shutdown of all webapps
TOMCAT5_SHUTDOWN=30

# End of variables that can be overwritten in $DEFAULT

# overwrite settings from default file
if [ -f "$DEFAULT" ]; then
	. "$DEFAULT"
fi

test -f $DAEMON || exit 0

if [ `id -u` -ne 0 ]; then
	echo "Not starting/stopping $DESC, you are not root."
	exit 4
fi

if [ -z "$TOMCAT5_USER" ]; then
	echo "Not starting/stopping $DESC as configured (TOMCAT5_USER is"
	echo "empty in $DEFAULT)."
	exit 0
fi

# Look for the right JVM to use
for jdir in $JDK_DIRS; do
	if [ -r "$jdir/bin/java" -a -z "${JAVA_HOME}" ]; then
		JAVA_HOME_TMP="$jdir"
		# checks for a real JDK like environment, needed to check if 
		# really the java-gcj-compat-dev package is installed
		if [ -r "$jdir/bin/jdb" ]; then
			JAVA_HOME="$JAVA_HOME_TMP"
		fi
	fi
done
export JAVA_HOME

# Set java.awt.headless=true if CATALINA_OPTS is not set so the
# Xalan XSL transformer can work without X11 display on JDK 1.4+
# It also looks like the default heap size of 64M is not enough for most cases
# so the maximum heap size is set to 128M
if [ -z "$CATALINA_OPTS" ]; then
	CATALINA_OPTS="-Djava.awt.headless=true -Xmx128M"
fi

# Set the JSP compiler if set in the tomcat5.default file
if [ -n "$JSP_COMPILER" ]; then
	CATALINA_OPTS="$CATALINA_OPTS -Dbuild.compiler=$JSP_COMPILER"
fi

# Define other required variables
CATALINA_PID="$CATALINA_BASE/temp/$NAME.pid"
STARTUP_OPTS=""
if [ "$TOMCAT5_SECURITY" = "yes" ]; then
	STARTUP_OPTS="-security"
fi

# Look for Java Secure Sockets Extension (JSSE) JARs
if [ -z "${JSSE_HOME}" -a -r "${JAVA_HOME}/jre/lib/jsse.jar" ]; then
    JSSE_HOME="${JAVA_HOME}/jre/"
fi

export CATALINA_HOME CATALINA_BASE CATALINA_OPTS CATALINA_PID JSSE_HOME

case "$1" in
  start)
	if [ -z "$JAVA_HOME" ]; then
		echo "Could not start $DESC because no Java Development Kit"
		echo "(JDK) was found. Please download and install JDK 1.3 or higher and set"
		echo "JAVA_HOME in $DEFAULT to the JDK's installation directory."
		exit 0
	fi

	if [ ! -d "$CATALINA_BASE/conf" ]; then
		echo "Not starting Tomcat 5: Invalid CATALINA_BASE specified in $DEFAULT"
		exit 1
	fi

	echo -n "Starting $DESC using Java from $JAVA_HOME: "

	if start-stop-daemon --test --start --pidfile "$CATALINA_PID" \
		--user $TOMCAT5_USER --startas "$JAVA_HOME/bin/java" \
		>/dev/null; then

		# Create catalina.policy (for the security manager)
		rm -f "$CATALINA_BASE/conf/catalina.policy"
		umask 022
		echo "// AUTO-GENERATED FILE -- DO NOT EDIT!" \
			> "$CATALINA_BASE/conf/catalina.policy"
		echo "// Edit the files in /etc/tomcat5/policy.d/ instead" \
			>> "$CATALINA_BASE/conf/catalina.policy"
		echo ""  >> "$CATALINA_BASE/conf/catalina.policy"
		cat /etc/tomcat5/policy.d/*.policy \
			>> "$CATALINA_BASE/conf/catalina.policy"

		# Clean up and set permissions on required files
		rm -rf "$CATALINA_BASE"/temp/* \
			"$CATALINA_BASE/logs/catalina.out"
		mkfifo -m700 "$CATALINA_BASE/logs/catalina.out"
		chown --dereference "$TOMCAT5_USER" "$CATALINA_BASE/conf" \
			"$CATALINA_BASE/conf/tomcat-users.xml" \
			"$CATALINA_BASE/logs" "$CATALINA_BASE/temp" \
			"$CATALINA_BASE/webapps" "$CATALINA_BASE/work" \
			"$CATALINA_BASE/logs/catalina.out" || true

		# Look for rotatelogs/rotatelogs2
		if [ -x /usr/sbin/rotatelogs ]; then
			ROTATELOGS=/usr/sbin/rotatelogs
		else
			ROTATELOGS=/usr/sbin/rotatelogs2
		fi

		# -p preserves the environment (for $JAVA_HOME etc.)
		# -s is required because tomcat5's login shell is /bin/false
		su -p -s /bin/sh $TOMCAT5_USER \
				-c "$ROTATELOGS \"$CATALINA_BASE/logs/catalina_%F.log\" 86400" \
				< "$CATALINA_BASE/logs/catalina.out" &
		su -p -s /bin/sh $TOMCAT5_USER \
			-c "\"$DAEMON\" start $STARTUP_OPTS" \
			>> "$CATALINA_BASE/logs/catalina.out" 2>&1
		echo "$NAME."
	else
		echo "(already running)."
	fi
	;;
  stop)
	echo -n "Stopping $DESC: "
        if start-stop-daemon --test --start --pidfile "$CATALINA_PID" \
		--user "$TOMCAT5_USER" --startas "$JAVA_HOME/bin/java" \
		>/dev/null; then
		echo "(not running)."
	else
		su -p -s /bin/sh $TOMCAT5_USER -c "\"$DAEMON\" stop" \
			>/dev/null 2>&1 || true
		# Fallback to kill the JVM process in case stopping didn't work
		sleep 1
		while ! start-stop-daemon --test --start \
			--pidfile "$CATALINA_PID" --user "$TOMCAT5_USER" \
			--startas "$JAVA_HOME/bin/java" >/dev/null; do
			sleep 1
			echo -n "."
			TOMCAT5_SHUTDOWN=`expr $TOMCAT5_SHUTDOWN - 1` || true
			if [ $TOMCAT5_SHUTDOWN -le 0 ]; then
				echo -n " (killing) "
				start-stop-daemon --stop --signal 9 --oknodo \
					--quiet --pidfile "$CATALINA_PID" \
					--user "$TOMCAT5_USER"
			fi
		done
		rm -f "$CATALINA_PID" "$CATALINA_BASE/logs/catalina.out"
		echo "$NAME."
	fi
	;;
   status)
        if start-stop-daemon --test --start --pidfile "$CATALINA_PID" \
		--user $TOMCAT5_USER --startas "$JAVA_HOME/bin/java" \
		>/dev/null; then

		if [ -f "$CATALINA_PID" ]; then
		    echo "$DESC is not running, but pid file exists."
		    exit 1
		else
		    echo "$DESC is not running."
		    exit 3
		fi
	else
		echo -n "$DESC is running with Java pid "
		cat "$CATALINA_PID"
		exit 0
	fi
        ;;
  reload)
	echo "Reload is not implemented!" >&2
	exit 3
  	;;
  restart|force-reload)
	$0 stop
	sleep 1
	$0 start
	;;
  *)
	echo "Usage: /etc/init.d/tomcat5 {start|stop|restart|force-reload|status}" >&2
	exit 2
	;;
esac

exit 0