Blame SOURCES/bz917681-tomcat-heartbeat-updates.patch

aba6ec
diff --git a/heartbeat/tomcat b/heartbeat/tomcat
aba6ec
index 95cc49e..4fafdaa 100755
aba6ec
--- a/heartbeat/tomcat
aba6ec
+++ b/heartbeat/tomcat
aba6ec
@@ -33,8 +33,8 @@
aba6ec
 #   OCF_RESKEY_java_opts - Options to pass to Java JVM for start and stop. Default is none
aba6ec
 #   OCF_RESKEY_catalina_home - Home directory of Tomcat. Default is none
aba6ec
 #   OCF_RESKEY_catalina_base - Base directory of Tomcat. Default is OCF_RESKEY_catalina_home
aba6ec
-#   OCF_RESKEY_catalina_out - Log file name of Tomcat. Default is OCF_RESKEY_catalina_home/logs/catalina.out
aba6ec
-#   OCF_RESKEY_catalina_pid  - A PID file name of Tomcat. Default is OCF_RESKEY_catalina_home/logs/catalina.pid
aba6ec
+#   OCF_RESKEY_catalina_out - Log file name of Tomcat. Default is OCF_RESKEY_catalina_base/logs/catalina.out
aba6ec
+#   OCF_RESKEY_catalina_pid  - A PID file name of Tomcat. Default is OCF_RESKEY_catalina_base/logs/catalina.pid
aba6ec
 #   OCF_RESKEY_tomcat_start_opts - Start options of Tomcat. Default is none.
aba6ec
 #   OCF_RESKEY_catalina_opts - CATALINA_OPTS environment variable. Default is none.
aba6ec
 #   OCF_RESKEY_catalina_tmpdir - CATALINA_TMPDIR environment variable. Default is none.
aba6ec
@@ -86,11 +86,14 @@ isalive_tomcat()
aba6ec
 	# As the server stops, the PID file disappears. To avoid race conditions, 
aba6ec
 	# we will have remembered the PID of a running instance on script entry.
aba6ec
 	local pid=$rememberedPID
aba6ec
-	# If there is a PID file, use that
aba6ec
+	# If there is a PID file, attempt to use that
aba6ec
 	if [ -f $CATALINA_PID ]; then
aba6ec
+		local tmp
aba6ec
 		ocf_log debug "Reading pid from $CATALINA_PID"
aba6ec
-		# race conditions on PID file being removed by stopping tomcat...
aba6ec
-		pid=`head -n 1 $CATALINA_PID`
aba6ec
+		tmp=`head -n 1 $CATALINA_PID`
aba6ec
+		if [ $? -eq 0 ]; then
aba6ec
+			pid=$tmp
aba6ec
+		fi
aba6ec
 	fi
aba6ec
 	if [ -n "$pid" ] && [ "$pid" -gt 0 ]; then
aba6ec
 		# Retry message for restraint
aba6ec
@@ -103,6 +106,22 @@ isalive_tomcat()
aba6ec
 }
aba6ec
 
aba6ec
 ############################################################################
aba6ec
+# Check rotatelogs process and restart if it is stopped
aba6ec
+monitor_rotatelogs()
aba6ec
+{
aba6ec
+	pgrep -f "$ROTATELOGS.*$CATALINA_BASE/logs/catalina_%F.log" > /dev/null 2>&1
aba6ec
+	if [ $? -ne 0 ]; then
aba6ec
+		ocf_log warn "A rotatelogs command for $CATALINA_BASE/logs/catalina_%F.log is not running. Restarting it."
aba6ec
+		start_rotatelogs
aba6ec
+		if [ $? -eq 0 ]; then
aba6ec
+			ocf_log info "Restart rotatelogs process succeeded."
aba6ec
+		else
aba6ec
+			ocf_log warn "Restart rotatelogs process failed."
aba6ec
+		fi
aba6ec
+	fi
aba6ec
+}
aba6ec
+
aba6ec
+############################################################################
aba6ec
 # Check tomcat process and service availability
aba6ec
 monitor_tomcat()
aba6ec
 {
aba6ec
@@ -110,32 +129,51 @@ monitor_tomcat()
aba6ec
 		return $OCF_NOT_RUNNING
aba6ec
 	isrunning_tomcat ||
aba6ec
 		return $OCF_ERR_GENERIC
aba6ec
+	if ocf_is_true ${CATALINA_ROTATE_LOG}; then
aba6ec
+		# Monitor rotatelogs process and restart it if it is stopped.
aba6ec
+		# And never consider rotatelogs process failure to be a monitor failure
aba6ec
+		# as long as Tomcat process works fine.
aba6ec
+		monitor_rotatelogs
aba6ec
+	fi
aba6ec
 	return $OCF_SUCCESS
aba6ec
 }
aba6ec
 
aba6ec
 ############################################################################
aba6ec
+# Startup rotatelogs process
aba6ec
+start_rotatelogs()
aba6ec
+{
aba6ec
+	# -s is required because tomcat5.5's login shell is /bin/false
aba6ec
+	su - -s /bin/sh $RESOURCE_TOMCAT_USER \
aba6ec
+        	-c "$ROTATELOGS -l \"$CATALINA_BASE/logs/catalina_%F.log\" $CATALINA_ROTATETIME" \
aba6ec
+        	< "$CATALINA_OUT" > /dev/null 2>&1 &
aba6ec
+}
aba6ec
+
aba6ec
+############################################################################
aba6ec
 # Execute catalina.out log rotation
aba6ec
 rotate_catalina_out()
aba6ec
 {
aba6ec
-	# Look for rotatelogs/rotatelogs2
aba6ec
-	if [ -x /usr/sbin/rotatelogs ]; then
aba6ec
-		ROTATELOGS=/usr/sbin/rotatelogs
aba6ec
-	elif [ -x /usr/sbin/rotatelogs2 ]; then
aba6ec
-		ROTATELOGS=/usr/sbin/rotatelogs2
aba6ec
-	else
aba6ec
-		ocf_log warn "rotatelogs command not found."
aba6ec
-		return 1
aba6ec
+	# Check catalina_%F.log is writable or not.
aba6ec
+	CURRENT_ROTATELOG_SUFFIX=`date +"%F"`
aba6ec
+	su - -s /bin/sh $RESOURCE_TOMCAT_USER \
aba6ec
+		-c "touch \"$CATALINA_BASE/logs/catalina_$CURRENT_ROTATELOG_SUFFIX.log\"" > /dev/null 2>&1
aba6ec
+	if [ $? -ne 0 ]; then
aba6ec
+		ocf_log err "$CATALINA_BASE/logs/catalina_$CURRENT_ROTATELOG_SUFFIX.log is not writable."
aba6ec
+		return $OCF_ERR_GENERIC
aba6ec
 	fi
aba6ec
 
aba6ec
 	# Clean up and set permissions on required files
aba6ec
-	rm -rf "$CATALINA_HOME"/temp/* "$CATALINA_OUT"
aba6ec
+	rm -rf "$CATALINA_BASE"/temp/*
aba6ec
+	if [ -p "$CATALINA_OUT" ]; then
aba6ec
+		rm -f "$CATALINA_OUT"
aba6ec
+	elif [ -e "$CATALINA_OUT" ]; then
aba6ec
+		DATE=`date +"%F-%H%M%S"`
aba6ec
+		ocf_log warn "$CATALINA_OUT already exists. It is saved as $CATALINA_OUT-$DATE"
aba6ec
+		mv "$CATALINA_OUT" "$CATALINA_OUT-$DATE"
aba6ec
+	fi
aba6ec
 	mkfifo -m700 "$CATALINA_OUT"
aba6ec
 	chown --dereference "$RESOURCE_TOMCAT_USER" "$CATALINA_OUT" || true
aba6ec
 
aba6ec
-	# -s is required because tomcat5.5's login shell is /bin/false
aba6ec
-	su - -s /bin/sh $RESOURCE_TOMCAT_USER \
aba6ec
-        	-c "$ROTATELOGS -l \"$CATALINA_HOME/logs/catalina_%F.log\" $CATALINA_ROTATETIME" \
aba6ec
-        	< "$CATALINA_OUT" > /dev/null 2>&1 &
aba6ec
+	start_rotatelogs
aba6ec
 }
aba6ec
 
aba6ec
 ############################################################################
aba6ec
@@ -154,16 +192,25 @@ cat<<-END_TOMCAT_COMMAND
aba6ec
 	export JAVA_ENDORSED_DIRS="${JAVA_ENDORSED_DIRS}"
aba6ec
 	export LOGGING_CONFIG="${LOGGING_CONFIG}"
aba6ec
 	export LOGGING_MANAGER="${LOGGING_MANAGER}"
aba6ec
-	$CATALINA_HOME/bin/catalina.sh $@
aba6ec
+	export TOMCAT_CFG=${TOMCAT_CFG}
aba6ec
+	$TOMCAT_START_SCRIPT $@
aba6ec
 END_TOMCAT_COMMAND
aba6ec
 }
aba6ec
 attemptTomcatCommand()
aba6ec
 {
aba6ec
-	if [ "$RESOURCE_TOMCAT_USER" = RUNASIS ]; then
aba6ec
-		"$CATALINA_HOME/bin/catalina.sh" $@ >> "$TOMCAT_CONSOLE" 2>&1
aba6ec
+	if [ -n "$REDIRECT_DEFAULT_CONFIG" ]; then
aba6ec
+		export TOMCAT_CFG=$(mktemp ${HA_RSCTMP}/tomcat-tmp-XXXXX.cfg)
aba6ec
+	fi
aba6ec
+
aba6ec
+	if [ "$RESOURCE_TOMCAT_USER" = root ]; then
aba6ec
+		"$TOMCAT_START_SCRIPT" $@ >> "$TOMCAT_CONSOLE" 2>&1
aba6ec
 	else
aba6ec
 		tomcatCommand $@ | su - -s /bin/sh "$RESOURCE_TOMCAT_USER" >> "$TOMCAT_CONSOLE" 2>&1
aba6ec
 	fi
aba6ec
+
aba6ec
+	if [ -n "$REDIRECT_DEFAULT_CONFIG" ]; then
aba6ec
+		rm -f "$TOMCAT_CFG"
aba6ec
+	fi
aba6ec
 }
aba6ec
 
aba6ec
 ############################################################################
aba6ec
@@ -175,7 +222,7 @@ start_tomcat()
aba6ec
 	validate_all_tomcat || exit $?
aba6ec
 
aba6ec
 	monitor_tomcat
aba6ec
-	if [ $? = $OCF_SUCCESS ]; then
aba6ec
+	if [ $? -eq $OCF_SUCCESS ]; then
aba6ec
 		return $OCF_SUCCESS
aba6ec
 	fi
aba6ec
 
aba6ec
@@ -183,12 +230,13 @@ start_tomcat()
aba6ec
 	rm -f $CATALINA_PID
aba6ec
 
aba6ec
 	#ocf_log debug "catalina.out rotation FLG = ${CATALINA_ROTATE_LOG}"
aba6ec
-	if [ ${CATALINA_ROTATE_LOG} = "YES" ]; then
aba6ec
+	if ocf_is_true ${CATALINA_ROTATE_LOG}; then
aba6ec
 		rotate_catalina_out
aba6ec
-		if [ $? = 0 ]; then
aba6ec
+		if [ $? -eq 0 ]; then
aba6ec
 			ocf_log debug "Rotate catalina.out succeeded."
aba6ec
 		else
aba6ec
-			ocf_log warn "Rotate catalina.out failed. Starting tomcat without catalina.out rotation."
aba6ec
+			ocf_log err "Rotate catalina.out failed. Avoid starting tomcat without catalina.out rotation."
aba6ec
+			return $OCF_ERR_GENERIC
aba6ec
 		fi
aba6ec
 	fi
aba6ec
 	
aba6ec
@@ -199,7 +247,7 @@ start_tomcat()
aba6ec
 
aba6ec
 	while true; do
aba6ec
 		monitor_tomcat
aba6ec
-		if [ $? = $OCF_SUCCESS ]; then
aba6ec
+		if [ $? -eq $OCF_SUCCESS ]; then
aba6ec
 			break
aba6ec
 		fi
aba6ec
 		ocf_log debug "start_tomcat[$TOMCAT_NAME]: retry monitor_tomcat"
aba6ec
@@ -213,7 +261,14 @@ start_tomcat()
aba6ec
 # Stop Tomcat
aba6ec
 stop_tomcat()
aba6ec
 {
aba6ec
-	RA_TIMEOUT=$((OCF_RESKEY_CRM_meta_timeout/1000))
aba6ec
+	local stop_time
aba6ec
+	local RA_TIMEOUT=20
aba6ec
+	local TOMCAT_STOP_OPTS=""
aba6ec
+
aba6ec
+	if [ -n $OCF_RESKEY_CRM_meta_timeout ]; then
aba6ec
+		RA_TIMEOUT=$((OCF_RESKEY_CRM_meta_timeout/1000))
aba6ec
+	fi
aba6ec
+
aba6ec
 	STOP_TIMEOUT=$((RA_TIMEOUT-5))
aba6ec
 	if [ -n "$MAX_STOP_TIME" ]; then
aba6ec
 		if [ $MAX_STOP_TIME -gt $RA_TIMEOUT ]; then
aba6ec
@@ -232,17 +287,23 @@ stop_tomcat()
aba6ec
 
aba6ec
 	echo "`date "+%Y/%m/%d %T"`: stop  ###########################" >> "$TOMCAT_CONSOLE"
aba6ec
 
aba6ec
-	attemptTomcatCommand stop $STOP_TIMEOUT -force
aba6ec
+	if [ "$TOMCAT_START_SCRIPT" = "$CATALINA_HOME/bin/catalina.sh" ]; then
aba6ec
+		TOMCAT_STOP_OPTS="$STOP_TIMEOUT --force"
aba6ec
+	fi
aba6ec
+	stop_time=$(date +%s)
aba6ec
+	attemptTomcatCommand stop $TOMCAT_STOP_OPTS
aba6ec
 
aba6ec
 	lapse_sec=0
aba6ec
 	while isalive_tomcat; do
aba6ec
 		sleep 1
aba6ec
-		lapse_sec=`expr $lapse_sec + 1`
aba6ec
-		ocf_log debug "stop_tomcat[$TOMCAT_NAME]: stop failed, killing with SIGKILL ($lapse_sec)"
aba6ec
-		kill -KILL $rememberedPID
aba6ec
+		lapse_sec=`expr $(date +%s) - $stop_time`
aba6ec
+		if [ $lapse_sec -ge $STOP_TIMEOUT ]; then
aba6ec
+			ocf_log debug "stop_tomcat[$TOMCAT_NAME]: stop failed, killing with SIGKILL ($lapse_sec)"
aba6ec
+			kill -s KILL $rememberedPID > /dev/null 2>&1
aba6ec
+		fi
aba6ec
 	done
aba6ec
 
aba6ec
-	if [ ${CATALINA_ROTATE_LOG} = "YES" ]; then
aba6ec
+	if ocf_is_true ${CATALINA_ROTATE_LOG}; then
aba6ec
 		rm -f "$CATALINA_PID" "${CATALINA_OUT}"
aba6ec
 	else
aba6ec
 		rm -f "$CATALINA_PID"
aba6ec
@@ -305,7 +366,7 @@ and killing Tomcat. DEPRECATED. Does not retry.
aba6ec
 The user who starts Tomcat.
aba6ec
 </longdesc>
aba6ec
 <shortdesc>The user who starts Tomcat</shortdesc>
aba6ec
-<content type="string" default="" />
aba6ec
+<content type="string" default="root" />
aba6ec
 </parameter>
aba6ec
 
aba6ec
 <parameter name="statusurl" unique="0">
aba6ec
@@ -345,7 +406,7 @@ Java JVM options used on start and stop.
aba6ec
 <content type="string" default="" />
aba6ec
 </parameter>
aba6ec
 
aba6ec
-<parameter name="catalina_home" unique="1" required="1">
aba6ec
+<parameter name="catalina_home" unique="0" required="1">
aba6ec
 <longdesc lang="en">
aba6ec
 Home directory of Tomcat.
aba6ec
 </longdesc>
aba6ec
@@ -365,7 +426,7 @@ Instance directory of Tomcat
aba6ec
 <longdesc lang="en">
aba6ec
 Log file name of Tomcat
aba6ec
 </longdesc>
aba6ec
-<shortdesc>Log file name of Tomcat, defaults to catalina_home/logs/catalina.out</shortdesc>
aba6ec
+<shortdesc>Log file name of Tomcat, defaults to catalina_base/logs/catalina.out</shortdesc>
aba6ec
 <content type="string" default="" />
aba6ec
 </parameter>
aba6ec
 
aba6ec
@@ -377,6 +438,14 @@ A PID file name for Tomcat.
aba6ec
 <content type="string" default="" />
aba6ec
 </parameter>
aba6ec
 
aba6ec
+<parameter name="tomcat_start_script" unique="0" required="0">
aba6ec
+<longdesc lang="en">
aba6ec
+Absolute path to the custom tomcat start script to use.
aba6ec
+</longdesc>
aba6ec
+<shortdesc>Tomcat start script location</shortdesc>
aba6ec
+<content type="string" default="$TOMCAT_START_SCRIPT" />
aba6ec
+</parameter>
aba6ec
+
aba6ec
 <parameter name="tomcat_start_opts" unique="0">
aba6ec
 <longdesc lang="en">
aba6ec
 Tomcat start options.
aba6ec
@@ -406,7 +475,7 @@ Temporary directory of Tomcat
aba6ec
 Rotate catalina.out flag.
aba6ec
 </longdesc>
aba6ec
 <shortdesc>Rotate catalina.out flag</shortdesc>
aba6ec
-<content type="string" default="" />
aba6ec
+<content type="boolean" default="NO" />
aba6ec
 </parameter>
aba6ec
 
aba6ec
 <parameter name="catalina_rotatetime" unique="0">
aba6ec
@@ -458,46 +527,42 @@ END
aba6ec
 
aba6ec
 validate_all_tomcat()
aba6ec
 {
aba6ec
+	local port
aba6ec
+	local rc=$OCF_SUCCESS
aba6ec
 	ocf_log info "validate_all_tomcat[$TOMCAT_NAME]"
aba6ec
 
aba6ec
-	misconfigured=0
aba6ec
-	notinstalled=0
aba6ec
-	wrongpermissions=0
aba6ec
-
aba6ec
 	check_binary $WGET
aba6ec
 
aba6ec
+	if [ -z "${TOMCAT_START_SCRIPT}" ]; then
aba6ec
+		ocf_log err "No default tomcat start script detected. Please specify start script location using the 'tomcat_start_script' option"
aba6ec
+		rc=$OCF_ERR_CONFIGURED
aba6ec
+	fi
aba6ec
+
aba6ec
 	if [ -n "$MAX_STOP_TIME" ] && [ "$MAX_STOP_TIME" -lt 0 ]; then
aba6ec
 		ocf_log err "max_stop_time must be set to a value greater than 0."
aba6ec
-		misconfigured=1
aba6ec
+		rc=$OCF_ERR_CONFIGURED
aba6ec
 	fi
aba6ec
 
aba6ec
-	if [[ "$RESOURCE_STATUSURL" =~ :[0-9][0-9]* ]]; then
aba6ec
+	if echo "$RESOURCE_STATUSURL" | grep -q ":[0-9][0-9]*" ; then
aba6ec
 		port=${RESOURCE_STATUSURL##*:}
aba6ec
 		port=${port%%/*}
aba6ec
 		ocf_log debug "Tomcat port is $port"
aba6ec
-		ocf_log debug "grep port=\"$port\" $CATALINA_HOME/conf/server.xml"
aba6ec
-		if [ "$port" -gt 0 ]; then
aba6ec
-			grep "port=\"$port\"" $CATALINA_HOME/conf/server.xml > /dev/null 2>&1
aba6ec
-			if [ $? -ne 0 ]; then
aba6ec
-				ocf_log err "Your configured status URL specifies a port ($port), but the server does not have a connector listening to that port in $CATALINA_HOME/conf/server.xml"
aba6ec
-				notinstalled=1
aba6ec
-			fi
aba6ec
+		ocf_log debug "grep port=\"$port\" $CATALINA_BASE/conf/server.xml"
aba6ec
+		grep "port=\"$port\"" $CATALINA_BASE/conf/server.xml > /dev/null 2>&1
aba6ec
+		if [ $? -ne 0 ]; then
aba6ec
+			ocf_log err "Your configured status URL specifies a port ($port), but the server does not have a connector listening to that port in $CATALINA_BASE/conf/server.xml"
aba6ec
+			rc=$OCF_ERR_INSTALLED
aba6ec
 		fi
aba6ec
 	fi
aba6ec
 
aba6ec
-	if [ $misconfigured -gt 0 ]; then
aba6ec
-		return $OCF_ERR_CONFIGURED
aba6ec
-	fi
aba6ec
-
aba6ec
-	if [ $notinstalled -gt 0 ]; then
aba6ec
-		return $OCF_ERR_INSTALLED
aba6ec
-	fi
aba6ec
-
aba6ec
-	if [ $wrongpermissions -gt 0 ]; then
aba6ec
-		return $OCF_ERR_PERM
aba6ec
+	if ocf_is_true ${CATALINA_ROTATE_LOG}; then
aba6ec
+		if [ ! -x "$ROTATELOGS" ]; then
aba6ec
+			ocf_log err "rotatelogs command does not exist."
aba6ec
+			rc=$OCF_ERR_INSTALLED
aba6ec
+		fi
aba6ec
 	fi
aba6ec
 
aba6ec
-	return $OCF_SUCCESS
aba6ec
+	return $rc
aba6ec
 }
aba6ec
 
aba6ec
 # As we stop tomcat, it removes it's own pid file...we still want to know what it was
aba6ec
@@ -515,18 +580,28 @@ memorize_pid()
aba6ec
 COMMAND=$1
aba6ec
 TOMCAT_NAME="${OCF_RESKEY_tomcat_name-tomcat}"
aba6ec
 TOMCAT_CONSOLE="${OCF_RESKEY_script_log-/var/log/$TOMCAT_NAME.log}"
aba6ec
-RESOURCE_TOMCAT_USER="${OCF_RESKEY_tomcat_user-RUNASIS}"
aba6ec
+RESOURCE_TOMCAT_USER="${OCF_RESKEY_tomcat_user-root}"
aba6ec
 RESOURCE_STATUSURL="${OCF_RESKEY_statusurl-http://127.0.0.1:8080}"
aba6ec
 
aba6ec
 JAVA_HOME="${OCF_RESKEY_java_home}"
aba6ec
 JAVA_OPTS="${OCF_RESKEY_java_opts}"
aba6ec
 CATALINA_HOME="${OCF_RESKEY_catalina_home}"
aba6ec
 CATALINA_BASE="${OCF_RESKEY_catalina_base-${OCF_RESKEY_catalina_home}}"
aba6ec
-CATALINA_OUT="${OCF_RESKEY_catalina_out-$CATALINA_HOME/logs/catalina.out}"
aba6ec
-CATALINA_PID="${OCF_RESKEY_catalina_pid-$CATALINA_HOME/logs/catalina.pid}"
aba6ec
+CATALINA_OUT="${OCF_RESKEY_catalina_out-$CATALINA_BASE/logs/catalina.out}"
aba6ec
+
aba6ec
+CATALINA_PID=$OCF_RESKEY_catalina_pid
aba6ec
+if [ -z "$CATALINA_PID" ]; then
aba6ec
+	mkdir -p "${HA_RSCTMP}/${TOMCAT_NAME}_tomcatstate/"
aba6ec
+	if [ "${RESOURCE_TOMCAT_USER}" != "root" ]; then
aba6ec
+		chown ${RESOURCE_TOMCAT_USER} "${HA_RSCTMP}/${TOMCAT_NAME}_tomcatstate/"
aba6ec
+	fi
aba6ec
+	CATALINA_PID="${HA_RSCTMP}/${TOMCAT_NAME}_tomcatstate/catalina.pid"
aba6ec
+fi
aba6ec
+
aba6ec
 MAX_STOP_TIME="${OCF_RESKEY_max_stop_time}"
aba6ec
 
aba6ec
 TOMCAT_START_OPTS="${OCF_RESKEY_tomcat_start_opts}"
aba6ec
+TOMCAT_START_SCRIPT="${OCF_RESKEY_tomcat_start_script}"
aba6ec
 CATALINA_OPTS="-Dname=$TOMCAT_NAME ${OCF_RESKEY_catalina_opts}"
aba6ec
 CATALINA_TMPDIR="${OCF_RESKEY_catalina_tmpdir}"
aba6ec
 CATALINA_ROTATE_LOG="${OCF_RESKEY_catalina_rotate_log-NO}"
aba6ec
@@ -545,6 +620,15 @@ case "$COMMAND" in
aba6ec
 	help|usage) usage; exit $OCF_SUCCESS;;
aba6ec
 esac
aba6ec
 
aba6ec
+if [ -z "${TOMCAT_START_SCRIPT}" ]; then
aba6ec
+	if [ -e "$CATALINA_HOME/bin/catalina.sh" ]; then
aba6ec
+		TOMCAT_START_SCRIPT="$CATALINA_HOME/bin/catalina.sh"
aba6ec
+	elif [ -e "/usr/sbin/tomcat" ]; then
aba6ec
+		REDIRECT_DEFAULT_CONFIG=1
aba6ec
+		TOMCAT_START_SCRIPT="/usr/sbin/tomcat"
aba6ec
+	fi
aba6ec
+fi
aba6ec
+
aba6ec
 if [ ! -d "$JAVA_HOME" -o ! -d "$CATALINA_HOME" -o ! -d "$CATALINA_BASE" ]; then
aba6ec
 	case $COMMAND in
aba6ec
 		stop)		exit	$OCF_SUCCESS;;
aba6ec
@@ -569,6 +653,16 @@ if [ ! -x "$JAVA" ]; then
aba6ec
 	exit $OCF_ERR_INSTALLED
aba6ec
 fi
aba6ec
 
aba6ec
+ROTATELOGS=""
aba6ec
+if ocf_is_true ${CATALINA_ROTATE_LOG}; then
aba6ec
+	# Look for rotatelogs/rotatelogs2
aba6ec
+	if [ -x /usr/sbin/rotatelogs ]; then
aba6ec
+		ROTATELOGS=/usr/sbin/rotatelogs
aba6ec
+	elif [ -x /usr/sbin/rotatelogs2 ]; then
aba6ec
+		ROTATELOGS=/usr/sbin/rotatelogs2
aba6ec
+	fi
aba6ec
+fi
aba6ec
+
aba6ec
 #
aba6ec
 # ------------------
aba6ec
 # the main script
aba6ec
diff --git a/tools/ocft/fedora/tomcat b/tools/ocft/fedora/tomcat
aba6ec
index 7b1283e..4226329 100644
aba6ec
--- a/tools/ocft/fedora/tomcat
aba6ec
+++ b/tools/ocft/fedora/tomcat
aba6ec
@@ -13,11 +13,13 @@ CONFIG
aba6ec
 VARIABLE
aba6ec
 	# Adjust accrding to your configuration
aba6ec
 	catalina_home=/usr/share/tomcat
aba6ec
-	java_home=/usr/lib/jvm/jre-openjdk
aba6ec
+	java_home=/usr/lib/jvm/jre
aba6ec
+	tomcat_user=tomcat
aba6ec
 
aba6ec
 CASE-BLOCK required_args_tomcat
aba6ec
 	Env OCF_RESKEY_catalina_home=${catalina_home}
aba6ec
 	Env OCF_RESKEY_java_home=${java_home}
aba6ec
+	Env OCF_RESKEY_tomcat_user=${tomcat_user}
aba6ec
 
aba6ec
 CASE-BLOCK args_clear
aba6ec
 	Unenv OCF_RESKEY_catalina_home
aba6ec
@@ -33,22 +35,22 @@ CASE-BLOCK prepare_tomcat
aba6ec
 
aba6ec
 # Test CASE
aba6ec
 #
aba6ec
-#CASE "normal start tomcat require_args (user:user)"
aba6ec
-#	Include prepare_tomcat
aba6ec
-#	AgentRun start OCF_SUCCESS
aba6ec
-#	AgentRun monitor OCF_SUCCESS
aba6ec
-#	AgentRun stop  OCF_SUCCESS
aba6ec
-#	AgentRun monitor OCF_NOT_RUNNING
aba6ec
-#	Include args_clear
aba6ec
+CASE "normal start tomcat require_args (user:user)"
aba6ec
+	Include prepare_tomcat
aba6ec
+	AgentRun start OCF_SUCCESS
aba6ec
+	AgentRun monitor OCF_SUCCESS
aba6ec
+	AgentRun stop  OCF_SUCCESS
aba6ec
+	AgentRun monitor OCF_NOT_RUNNING
aba6ec
+	Include args_clear
aba6ec
 
aba6ec
-#CASE "normal start tomcat require_args (user:root)"
aba6ec
-#	Include prepare_tomcat
aba6ec
-#	Unenv OCF_RESKEY_tomcat_user
aba6ec
-#	AgentRun start OCF_SUCCESS
aba6ec
-#	AgentRun monitor OCF_SUCCESS
aba6ec
-#	AgentRun stop  OCF_SUCCESS
aba6ec
-#	AgentRun monitor OCF_NOT_RUNNING
aba6ec
-#	Include args_clear
aba6ec
+CASE "normal start tomcat require_args (user:root)"
aba6ec
+	Include prepare_tomcat
aba6ec
+	Unenv OCF_RESKEY_tomcat_user
aba6ec
+	AgentRun start OCF_SUCCESS
aba6ec
+	AgentRun monitor OCF_SUCCESS
aba6ec
+	AgentRun stop  OCF_SUCCESS
aba6ec
+	AgentRun monitor OCF_NOT_RUNNING
aba6ec
+	Include args_clear
aba6ec
 
aba6ec
 CASE "error start tomcat no catalina_home"
aba6ec
 	Include prepare_tomcat