Package: tomcat10
Version: 10.1.6-1

Dear maintainers, the tomcat10 package does not ship a sysvinit 
script for use with traditional init. Please consider adding such
a script to the package since it will make things simpler for
users of sysvinit. I have attached a possible implementation of
such a script to this mail. (Derived from tomcat9 package with
some cleanup) I can offer to support/maintain this script
in future if desired.

Best regards,
Andreas Messer
-- 
gnuPG keyid: 8C2BAF51
fingerprint: 28EE 8438 E688 D992 3661 C753 90B3 BAAA 8C2B AF51
#!/bin/sh
### BEGIN INIT INFO
# Provides:          tomcat10
# Required-Start:    $local_fs $remote_fs $network
# Required-Stop:     $local_fs $remote_fs $network
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Tomcat 10
# Description:       The Tomcat 10 servlet engine runs Java Web Archives.
### END INIT INFO

PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC='Tomcat 10 servlet engine'
NAME=tomcat10
readonly DESC NAME

# exit cleanly if disabled or not installed
test -x /usr/libexec/tomcat10/tomcat-update-policy.sh || exit 0
test -x /usr/libexec/tomcat10/tomcat-start.sh || exit 0
test -x /usr/libexec/tomcat10/tomcat-locate-java.sh || exit 0

. /lib/init/vars.sh

test -t 0 && VERBOSE=yes

# set defaults for options
CATALINA_HOME=/usr/share/tomcat10
CATALINA_BASE=/var/lib/tomcat10
CATALINA_TMPDIR=/tmp/tomcat10-tmp
export CATALINA_HOME CATALINA_BASE CATALINA_TMPDIR

JAVA_OPTS=-Djava.awt.headless=true
JSP_COMPILER= # only used if nonempty
SECURITY_MANAGER=false
UMASK=022
export JAVA_HOME JAVA_OPTS JSP_COMPILER SECURITY_MANAGER UMASK

[ -r /etc/default/tomcat10 ] && . /etc/default/tomcat10

. /lib/lsb/init-functions

# somewhat LSB-compliant exit with failure
if test x"$1" = x"status"; then
        exit_failure_msg() {
                log_failure_msg "$@"
                exit 4
        }
else
        exit_failure_msg() {
                log_failure_msg "$@"
                exit 1
        }
fi


# figure out the JRE executable catalina.sh will use
# (we need it for start-stop-daemon --exec for reliability)

[ x"${JAVA_HOME}" = x ] && \
  JAVA_HOME=$(su tomcat -s /bin/sh -c ". 
/usr/libexec/tomcat10/tomcat-locate-java.sh; echo \${JAVA_HOME}")

[ x"${JAVA_HOME}" != x ] || exit_failure_msg "could not determine JRE"

JAVA="${JAVA_HOME}/bin/java"

[ -x "${JAVA}" ] ||  exit_failure_msg "could not find java executable ${JAVA}"


# prepare for actions
case $1 in
(start|stop|restart|force-reload)
        # handled below
        ;;
(try-restart|status)
        start-stop-daemon --status --quiet \
            --pidfile /var/run/tomcat10.pid \
            --exec "$JAVA" --user tomcat
        rv=$?
        # clean up stale pidfile if necessary
        (test x"$rv" = x"1" && rm -f /var/run/tomcat10.pid || :)
        # process status result
        case $1 in
        (try-restart)
                test x"$rv" = x"0" || {
                        # service is not running, or status is unknown
                        log_success_msg "$NAME is not running"
                        exit 0
                }
                # service running, restart it
                ;;
        (status)
                case $rv in
                (0)
                        log_success_msg "$NAME is running"
                        ;;
                (4)
                        log_failure_msg "could not access PID file for $NAME"
                        ;;
                (*)
                        log_failure_msg "$NAME is not running"
                        ;;
                esac
                exit $rv
                ;;
        esac
        ;;
(reload|*)
        # not supported
        echo >&2 "Usage: $0 
{start|stop|restart|try-restart|force-reload|status}"
        exit 3
        ;;
esac

# handle stopping/starting
rv=0

case $1 in
(stop|restart|try-restart|force-reload)
        test x"$VERBOSE" = x"no" || log_daemon_msg "Stopping $DESC" "$NAME"
        start-stop-daemon --stop --quiet \
            --retry=10 --oknodo --remove-pidfile \
            --pidfile /var/run/tomcat10.pid \
            --exec "$JAVA" --user tomcat
        rv=$?
        test x"$VERBOSE" = x"no" || log_end_msg $rv
        ;;
esac

test x"$rv" = x"0" || exit $rv

case $1 in
(start|restart|try-restart|force-reload)
        # ensure the temporary directory exist and change to it
        rm -rf "$CATALINA_TMPDIR"
        mkdir "$CATALINA_TMPDIR" || \
          exit_failure_msg 'could not create JVM temporary directory'
        chown -h tomcat "$CATALINA_TMPDIR"
        cd "$CATALINA_TMPDIR"

        # create log directory if not exists
        [ -d /var/log/tomcat10 ] || mkdir -p /var/log/tomcat10

        /usr/libexec/tomcat10/tomcat-update-policy.sh || \
            exit_failure_msg 'could not regenerating catalina.policy file'
        rm -f /var/run/tomcat10.pid
        test x"$VERBOSE" = x"no" || log_daemon_msg "Starting $DESC" "$NAME"
        start-stop-daemon --start --quiet \
            --chuid tomcat --umask "$UMASK" \
            --startas /usr/libexec/tomcat10/tomcat-start.sh \
            --background --make-pidfile \
            --pidfile /var/run/tomcat10.pid \
            --output /var/log/tomcat10/catalina.out \
            --exec "$JAVA" --user tomcat
        rv=$?
        test x"$VERBOSE" = x"no" || log_end_msg $rv
        ;;
esac

exit $rv

Attachment: signature.asc
Description: PGP signature

Reply via email to