将Java应用程序作为* nix守护程序或者Windows服务运行的最佳方法?
时间:2020-03-05 18:42:42 来源:igfitidea点击:
我正在寻找将Java应用程序作为* NIX守护程序或者Windows服务运行的最佳方法。我看过Java Service Wrapper,Apache Commons项目" jsvc"和Apache Commons项目" procrun"。到目前为止,Java Service Wrapper似乎是最好的选择……但是,我想知道是否还有其他"开源友好"许可产品。
解决方案
回答
是否需要支持任何特殊属性(例如操作系统指导的资源管理)?否则,对于Unix,我们应该能够通过编写适当的init.d脚本并将应用程序设置为自动启动来守护应用程序。
回答
我自己使用Java Service Wrapper取得了巨大的成功。我没有看其他的,但是ServiceWrapper的主要优点是:
- 强大的x平台支持-我已经在Windows和Linux上使用过它,并且发现两者都很容易
- 扎实的文档-文档清晰明确,并提供了很好的示例
- 深入的逐平台支持-窗口服务管理系统中有一些独特的功能,服务包装程序完美地支持了这些功能(无需重新启动)。在Windows上,我们甚至会在进程列表中看到应用程序名称,而不仅仅是" java.exe"。
- 符合标准-与许多临时Java init脚本不同,用于服务包装程序的脚本倾向于符合LSB标准。如果我们希望通过Linux Heartbeat / HA之类的工具进行高可用性管理,那么这将变得非常重要。
无论如何,只有我的2美分... :)
回答
另一个选项是WinRun4J。这仅是Windows,但具有一些有用的功能:
- 32位和64位支持
- 用于访问事件日志和注册表的API
- 可以注册服务以依赖于其他服务(即serviceA和serviceB必须在serviceC之前启动)
它也是开源友好(CPL)的,因此没有使用限制。
(完整披露:我正在从事这个项目)。