• # Et Voilà !

    Posté par . En réponse au message Librairies pour script de démarrage de tomcat avec jsvc. Évalué à 1.

    Je crois être arrivé à un résultat fonctionnel :

    #!/bin/sh
    #
    # /etc/init.d/tomcat -- startup script for the Tomcat servlet engine
    #
    . /etc/init.d/functions
    VERSION=7
    PATH=/bin:/usr/bin:/sbin:/usr/sbin
    NAME=tomcat$VERSION
    DESC="Tomcat servlet engine"
    DAEMON=/usr/bin/jsvc
    CATALINA_HOME=/usr/share/$NAME
    DEFAULT=/etc/default/$NAME
    # Run Tomcat as this user ID
    TOMCAT_USER=tomcat
    # The first existing directory is used for JAVA_HOME (if JAVA_HOME is not
    # defined in $DEFAULT)
    JDK_DIRS="/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64 /usr/lib/jvm/java-1.6.0 /usr/lib/jvm/java-1.6.0-openjdk.x86_64 /usr/lib/jre-1.6.0-openjdk.x86_64 /usr/lib/jre-1.5.0 /usr/lib/j2sdk1.4-sun /usr/lib/j2sdk1.4-blackdown /usr/lib/j2se/1.4 /usr/lib/j2sdk1.4-ibm /usr/lib/j2sdk1.3-sun /usr/lib/j2sdk1.3-blackdown /usr/lib/jvm/java-gcj /usr/lib/kaffe"
    # 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
    # Directory for per-instance configuration files and webapps
    CATALINA_BASE=/usr/share/$NAME
    # Use the Java security manager? (yes/no)
    TOMCAT_SECURITY=no
    # Timeout in seconds for the shutdown of all webapps
    TOMCAT_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
    [ -z "$TOMCAT_USER" ] && TOMCAT_USER=tomcat7
    # Check if we use gij
    gij=no
    "$JAVA_HOME/bin/java" -version 2>&1 | grep -q "^gij (GNU libgcj)" && gij=yes
    # gij doesn't support a security manager yet (see bug #399595)
    if [ "$gij" = "yes" ]; then
     echo -e "The java-gcj-compat-dev environment currently doesn't\nsupport a security manager. See README.Debian." | logger -p daemon.warning -t $NAME
    fi
    # Set java.awt.headless=true if JAVA_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
    # se the maximum heap size is set to 128M
    if [ -z "$JAVA_OPTS" ]; then
     JAVA_OPTS="-Djava.awt.headless=true -Xmx128M"
    fi
    JAVA_OPTS="$JAVA_OPTS -Djava.endorsed.dirs=$CATALINA_HOME/common/endorsed -Dcatalina.base=$CATALINA_BASE -Dcatalina.home=$CATALINA_HOME -Djava.io.tmpdir=$CATALINA_BASE/temp"
    JAVA_OPTS="$JAVA_OPTS -Xms128m -Xmx512m -Dfile.encoding=UTF8 -Duser.timezone=GMT -Djava.security.auth.login.config=$CATALINA_HOME/conf/jaas.config"
    # Set the JSP compiler if set in the tomcat7.default file
    if [ -n "$JSP_COMPILER" ]; then
     JAVA_OPTS="$JAVA_OPTS -Dbuild.compiler=$JSP_COMPILER"
    fi
    if [ "$TOMCAT_SECURITY" = "yes" ]; then
     JAVA_OPTS="$JAVA_OPTS -Djava.security.manager -Djava.security.policy=$CATALINA_BASE/conf/catalina.policy"
    fi
    # juli LogManager disabled if running under gij (see bug #395167)
    if [ "$gij" != "yes" ]; then
     JAVA_OPTS="$JAVA_OPTS -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file=$CATALINA_BASE/conf/logging.properties"
    fi
    # Define other required variables
    CATALINA_PID="/var/run/$NAME.pid"
    BOOTSTRAP_CLASS=org.apache.catalina.startup.Bootstrap
    JSVC_CLASSPATH="/usr/share/java/commons-daemon.jar:$CATALINA_HOME/bin/bootstrap.jar:$CATALINA_HOME/bin/tomcat-juli.jar"
    export CATALINA_PID
    # 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 JSSE_HOME
    start() {
     if [ -z "$JAVA_HOME" ]; then
     echo "no JDK found - please set JAVA_HOME"
     exit 1
     fi
     if [ ! -d "$CATALINA_BASE/conf" ]; then
     echo "invalid CATALINA_BASE specified"
     exit 1
     fi
     echo "Starting $DESC" "$NAME"
     ISSTARTED=-1
     if [ -f "${CATALINA_PID}" ]; then
     read kpid < $CATALINA_PID
     if checkpid $kpid 2>&1; then
     ISSTARTED=0
     else
     rm -f $CATALINA_PID
     fi
     else
     pid=$(pgrep -u ${TOMCAT_USER} jsvc)
     if [ -n "$pid" ]; then
     ISSTARTED=0
     fi
     fi
     if [ $ISSTARTED -ne 0 ]; 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/$NAME/policy.d/ instead" \
     >> "$CATALINA_BASE/conf/catalina.policy"
     echo "" >> "$CATALINA_BASE/conf/catalina.policy"
     policies=$(ls $CATALINA_BASE/conf/policy.d/*.policy 2> /dev/null | wc -l)
     if [ "$policies" != "0" ]; then
     cat $CATALINA_BASE/conf/policy.d/*.policy \
     >> "$CATALINA_BASE/conf/catalina.policy"
     fi
     # Clean up and set permissions on required files
     find "$CATALINA_BASE"/temp/ -mindepth 1 -exec rm -f {} +
     chown --dereference "$TOMCAT_USER" "$CATALINA_BASE/conf" \
     "$CATALINA_BASE/conf/tomcat-users.xml" \
     "$CATALINA_BASE/logs" "$CATALINA_BASE/temp" \
     "$CATALINA_BASE/webapps" "$CATALINA_BASE/work" \
     || true
     $DAEMON -user "$TOMCAT_USER" -cp "$JSVC_CLASSPATH" \
     -outfile SYSLOG -errfile SYSLOG \
     -pidfile "$CATALINA_PID" $JAVA_OPTS "$BOOTSTRAP_CLASS"
     else
     echo "(already running)"
     fi
    }
    stop() {
     echo "Stopping $DESC" "$NAME"
     ISSTARTED=-1
     if [ -f "${CATALINA_PID}" ]; then
     read kpid < $CATALINA_PID
     if checkpid $kpid 2>&1; then
     ISSTARTED=0
     fi
     else
     pid=$(pgrep -u ${TOMCAT_USER} jsvc)
     if [ -n "$pid" ]; then
     ISSTARTED=0
     fi
     fi
     if [ $ISSTARTED -eq 0 ]; then
     $DAEMON -cp "$JSVC_CLASSPATH" -pidfile "$CATALINA_PID" \
     -stop "$BOOTSTRAP_CLASS"
     else
     echo "(not running)"
     fi
    }
    restart() {
     # Restart
     stop
     echo "Sleeping for 2 seconds."
     sleep 2
     start
    }
    status() {
     RETVAL="1"
     if [ -f "${CATALINA_PID}" ]; then
     read kpid < $CATALINA_PID
     if checkpid $kpid 2>&1; then
     echo "0ドル is already running (${kpid})"
     RETVAL="0"
     else
     echo "lock file found but no process running for pid $kpid"
     fi
     else
     pid=$(pgrep -u ${TOMCAT_USER} jsvc)
     if [ -n "$pid" ]; then
     echo "0ドル running (${pid}) but no PID file exists"
     RETVAL="0"
     else
     echo "0ドル is stopped"
     fi
     fi
     return $RETVAL
    }
    case "1ドル" in
     start)
     start
     ;;
     stop)
     stop
     ;;
     restart)
     restart
     ;;
     status)
     status
     ;;
     *)
     echo $"Usage: tomcat {start|stop|restart|status}"
     exit 1
    esac
    exit 0