gpt4 book ai didi

java - 使用 JSVC 守护 java 应用程序

转载 作者:搜寻专家 更新时间:2023-10-31 19:56:31 27 4
gpt4 key购买 nike

我正在尝试使用 Apache Commons Daemon 使用 Daemon 接口(interface)来守护我的应用程序。 Java 应用程序本身不执行任何操作,只是写入 stout。

我编译了jsvc:http://people.apache.org/~mturk/daemon-1.0.10/

(甚至尝试了最新版本:http://people.apache.org/~mturk/daemon-1.0.12/)

并编写了这个基本脚本。

do_exec()
{
$EXEC \
-home "$JAVA_HOME" \
-cp $CLASS_PATH \
-outfile $LOG_OUT \
-errfile $LOG_ERR \
-pidfile $PID \
$1 \
$MAIN_CLASS
echo "result: $?"
}

case "$1" in
start)
do_exec
;;
stop)
do_exec "-stop"
;;
restart)
do_exec "-stop"
do_exec
;;
*)
echo "usage: daemon {start|stop|restart}" >&2
exit 3
;;
esac

现在,当我尝试停止未运行的守护进程时,我会得到响应代码 255。太棒了。

但是当我尝试启动已经运行的守护进程时,我得到了响应代码 0。但是在我的错误文件中我发现:

Still running according to PID file /tmp/deamon.pid, PID is 1799
Service exit with a return value of 122

同样的事情,当我尝试在 start() 方法中抛出异常并尝试启动守护进程时,响应代码为 0。但是错误文件:

 Service exit with a return value of 5

我在这里缺少什么?我如何通知用户 stat deamon 没有启动或者它已经在运行?

最佳答案

仔细阅读 JSVC 的工作原理后:http://commons.apache.org/daemon/jsvc.html

我发现我做错了什么,我必须使用wait参数

When the -wait parameter is used, the launcher process waits until the controller says "I am ready", otherwise it returns after creating the controller process.

关于java - 使用 JSVC 守护 java 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14425846/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com