gpt4 book ai didi

java - 如何将 Apache Commons Daemon 与跨平台服务一起使用?

转载 作者:行者123 更新时间:2023-11-30 11:32:48 26 4
gpt4 key购买 nike

我有一个 Java 守护进程(系统服务运行 24/7/365)需要部署为可执行 JAR,但是我希望用户(在 Windows、Linux 和 Mac 上)能够启动/停止应用程序通过:

service myapp start

service myapp stop

(或 Windows/Mac 服务的等效项)。显然,这需要在操作系统级别将 myapp“服务”映射到我的 Java 应用程序内部的特定方法调用(可能是 LifecycleManager#start()LifecycleManager#stop() 分别)。

我听说Apache Commons Daemon可以用于此目的,在仔细阅读他们的网站后,它看起来就是这样做的。然而,它看起来像是一个旧项目,实际上没有任何文档可以实现我正在寻找的东西。

所以我问:commons-daemon 可以做我需要的吗,或者我还需要其他东西吗?如何从可执行 JAR 中获取跨平台守护进程?提前致谢!

最佳答案

是的,Apache Commons Daemon 可以将您的 jar 作为 Windows 上的服务(使用 procrun)或作为 *NIX 上的守护进程(使用 JSVC)运行。我只在 Windows 上使用它,所以其余的只适用于 procrun:

Procrun 支持适当的 Windows 服务关闭(它可以在您正在运行的应用程序中调用停止方法)。它还具有一些额外的功能,例如可选择将 stdout 和 stderr 重定向到单独的日志文件,并直接运行服务包装器 exe(假设您将其重命名为您的服务名称)运行一个非服务模式控制台,让您看到立即输出。您可能想使用 procrun 的“jvm 模式”。在 documentation 中阅读有关如何执行此操作的详细信息.

如果您需要额外的功能,例如服务需要能够自行重启,请查看 YAJSW (又一个 Java 服务包装器)代替。 YAJSW 整体上很可能更好,但我还没有尝试过。

关于java - 如何将 Apache Commons Daemon 与跨平台服务一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16389872/

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