我正在尝试使用Apache Commons Daemon使用Daemon接口来守护我的应用程序.它自己的Java应用程序只是写入粗壮的东西.
我编译了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
Run Code Online (Sandbox Code Playgroud)
现在,当我尝试在守护程序未运行时停止守护程序时,我会得到响应代码255.真是棒极了.
但是当我尝试启动守护进程时它已经运行我得到响应代码0.但在我的错误文件中我发现:
Still running according to PID file /tmp/deamon.pid, PID is …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用jsvc将Java应用程序作为Linux服务运行.我找到了如何用jsvc将java程序转换为守护进程?它能够让我大部分时间,但我仍然在努力让类路径得到解决.
我向stderr收到以下错误:
19/04/2013 10:43:18 12233 jsvc.exec错误:找不到守护进程加载器org/apache/commons/daemon/support/DaemonLoader
19/04/2013 10:43:18 12231 jsvc.exec错误:服务退出,返回值为1
似乎运行时无法找到commons-daemon.jar.
我的应用程序是结构化的,以便应用程序本身在一个jar文件中,具有依赖项,包括lib目录中的commons-daemon.
这是我的daemon-script.sh的相关部分:
LIB_DIR = $(PWD)/ lib目录/*
CLASS_PATH = $(PWD)/myapp.jar
$ EXEC -home $ JAVA_EXEC -cp $ CLASS_PATH:$ LIB_DIR -outfile $ LOG_OUT -errfile $ LOG_ERR -pidfile $ PID $ 1 $ CLASS
我尝试了很多变化:相对路径,特别是引用lib/commons-daemon.jar,没有通配符等.有没有人知道如何正常工作?
此外,myapp.jar是一个自执行jar (主要用于测试目的,是的,我仍然需要它作为服务运行),因此manifest.mf包含Class-Path和Main-Class属性.有没有办法让jsvc识别清单?
我正在寻找Apache守护进程来帮助我使用Java应用程序,我只想获得一些关于可能性的想法/提示.
我想创建一个简化的应用程序,显示某种故障保护能力.应用程序将按顺序执行4个步骤(想象它在每个步骤中打印出一个简单的文本文件只是一个字母,如步骤1是"A",步骤2是"B"等),我想能够强制关闭JVM,然后让它自动重启java应用程序并恢复打印输出(想象它就像一个小孩拉动电视上的插头,它自己再次打开).
这可以通过Apache Daemon做到吗?如果是这样,我将如何实现自动化?我是否需要在操作系统级别附加一些第三个程序(就像一个本身监视流程的简单C程序?).
在这个阶段,我只是在寻找指针,因为我意识到我要做的事情并不是很清楚.我更喜欢Windows,但我也有Mac,如果更好的话,我会开放使用Mac(我知道Linux有一些独特的工具/能力).任何提示/想法赞赏.
我是一个刚开始学习 Spring Boot 的新人。我觉得它对于轻松开发 Java 应用程序来说确实是非常有帮助和很棒的工具。
另一方面,我正在考虑开发一个守护程序服务,它通过 Kafka Consumer API 从 Apache Kafka 收集数据/消息,并对检索到的数据进行一些处理。当然,这整个过程是定期完成的。
因此,我一直使用 Apache Commons Daemon 将应用程序开发为守护进程。然而,我现在想使用 Spring Boot 来代替它。
是否可以通过Spring Boot实现这样的服务应用?如果可能的话,请告诉我如何实施。提前致谢!
背景:从Java 9开始,可以使用jlink创建自定义运行时映像(JRE + program)。
可以使用prunsrv.exe(Apache Commons Daemon的一部分)将Java程序作为Windows服务安装。
prunsrv可用于三种启动模式:java,jvm和exe。
我设法使用exe模式启动了自定义运行时映像,并使用jvm模式启动了传统的Java程序(类路径+普通JDK),但无法在映像中使用jvm模式(不会启动新进程) 。
prunsrv具有一个“ JvmOptions9 ”参数,这可能暗示可能支持此方案,但我不确定。
我下载了Apache Daemon,但是我在运行它时遇到了一些问题.
在命令行中,我正在尝试提取JAR文件(文件目录.如下所示):
我这样做,通过使用此命令(在CMD中):
jar -xf commons-daemon-1.0.15.jar
Run Code Online (Sandbox Code Playgroud)
但这没有做任何事情.我一直在寻找启动守护进程工具的方法,以便Windows可以开始运行Java服务.
任何提示都有帮助,谢谢
java ×4
daemon ×2
jsvc ×2
apache-kafka ×1
java-9 ×1
java-module ×1
jlink ×1
prunsrv ×1
spring-boot ×1