将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)的,因此没有使用限制。

(完整披露:我正在从事这个项目)。