0
我試圖運行一個簡單的JSVC程序。但是,當我運行腳本時它不會啓動。 我在日誌文件,終端或任何可以找到的系統日誌中也沒有收到任何錯誤。JSVC沒有啓動,我也沒有收到任何錯誤消息
JSVC似乎沒有驗證類路徑,因爲如果我故意使它們失效,我仍然不會收到關於它的錯誤。
它確認其他參數,如果錯誤或遺漏,JSVC IS會安裝。
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 ...");
}
}