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

时间:2013-05-05 22:44:58

标签: java service daemon executable-jar apache-commons-daemon

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

service myapp start

service myapp stop

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

我听说Apache Commons Daemon可以用于此目的,并且在浏览了他们的网站之后,它看起来就像这样。然而,它看起来像是一个旧项目,并没有任何文档来完成我正在寻找的东西。

所以我问:commons-daemon可以做我需要的,或者我还需要别的什么?如何从可执行JAR中获取跨平台守护程序?提前谢谢!

1 个答案:

答案 0 :(得分:1)

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

Procrun支持正常的Windows服务关闭(它可以在正在运行的应用程序中调用stop方法)。它还有一些额外的功能,比如可选地将stdout和stderr重定向到单独的日志文件,并直接运行服务包装器exe(假设你将其重命名为你的服务名称)运行一个非服务模式控制台,让你看到立即输出。你可能想使用procrun的“jvm模式”。请阅读documentation

中有关如何执行此操作的详细信息

如果您需要其他更高级的功能,例如服务需要能够自行重启,请查看YAJSW(又一个Java Service Wrapper)。 YAJSW整体上可能更好,但我还没有尝试过。