0

シンプルな JSVC プログラムを実行しようとしています。ただし、スクリプトを実行しても起動しません。ログファイル、ターミナル、または見つけたsyslogにもエラーはありません。

クラスパスを意図的に無効にしてもエラーが発生しないため、JSVC がクラスパスを検証しているようには見えません。

JSVCがインストールされているため、間違っているか欠落している場合に文句を言う他のパラメーターを検証します。

以前にそれについて不平を言ったので、Javaホームも正しいはずです。

脚本:

#!/bin/sh

# Setup variables
EXEC=/usr/bin/jsvc
JAVA_HOME=/usr/lib/jvm/default-java
CLASS_PATH="/usr/share/java/commons-daemon.jar":"/home/xxxuserxxx/Desktop/Tutorials/StackOverflow_version/EchoTest.jar"
CLASS=Main
USER=xxxuserxxx
PID=/tmp/example.pid
LOG_OUT=/tmp/example.out
LOG_ERR=/tmp/example.err

do_exec()
{
    $EXEC -home "$JAVA_HOME" -cp $CLASS_PATH -user $USER -outfile $LOG_OUT -errfile $LOG_ERR -pidfile $PID $1 -wait 20 $CLASS
}

case "$1" in
    start)
        do_exec
            ;;
    stop)
        do_exec "-stop"
            ;;
    restart)
        if [ -f "$PID" ]; then
            do_exec "-stop"
            do_exec
        else
            echo "service not running, will do nothing"
            exit 1
        fi
            ;;
    *)
            echo "usage: daemon {start|stop|restart}" >&2
            exit 3
            ;;
esac

コード:

import java.util.Timer;
import org.apache.commons.daemon.*;

public class Main implements Daemon {


private static Timer timer = null;

public static void main(String[] args) {
    System.out.println("Hello");
    timer = new Timer();
    timer.schedule(new EchoTask(), 0, 1000);
}

@Override
public void init(DaemonContext dc) throws DaemonInitException, Exception {
    System.out.println("initializing ...");
}

@Override
public void start() throws Exception {
    System.out.println("starting ...");
    main(null);
}

@Override
public void stop() throws Exception {
    System.out.println("stopping ...");
    if (timer != null) {
        timer.cancel();
    }
}

@Override
public void destroy() {
    System.out.println("done.");
}

}

import java.util.Date;
import java.util.TimerTask;

public class EchoTask extends TimerTask {
    @Override
    public void run() {
        System.out.println(new Date() + " running ...");
    }
}
4

1 に答える 1