关于unix:将Java应用程序作为* nix守护程序或Windows服务运行的最佳方法?

关于unix:将Java应用程序作为* nix守护程序或Windows服务运行的最佳方法?

Best Method to run a Java Application as a *nix Daemon or Windows Service?

我正在寻找将Java应用程序作为* NIX守护程序或Windows服务运行的最佳方法。我看过Java Service Wrapper,Apache Commons项目" jsvc"和Apache Commons项目" procrun"。到目前为止,Java Service Wrapper似乎是最好的选择……但是,我想知道是否还有其他"开放源代码友好"许可的产品。


我自己在Java Service Wrapper方面取得了巨大的成功。我没有看其他的,但是ServiceWrapper的主要优点是:

  • 强大的x平台支持-我已经在Windows和Linux上使用它,并且发现两者都很容易
  • 扎实的文档-文档清晰明确,并提供了很好的示例
  • 深入的逐平台支持-窗口服务管理系统中有一些独特的功能,服务包装程序完美地支持了这些功能(无需重新启动)。在Windows上,您甚至会在进程列表中看到您的应用程序名称,而不仅仅是" java.exe "。
  • 符合标准-与许多特殊的Java初始化脚本不同,用于服务包装程序的脚本倾向于符合LSB标准。如果您希望通过Linux Heartbeat / HA之类的工具进行高可用性管理,那么这将变得非常重要。

无论如何,只有我的2美分...:)


另一个选项是WinRun4J。这仅是Windows,但具有一些有用的功能:

  • 32位和64位支持
  • 用于访问事件日志和注册表的API
  • 可以注册服务以依赖于其他服务(即serviceA和serviceB必须在serviceC之前启动)

它也是开放源代码友好(CPL),因此没有使用限制。

(完全披露:我正在研究这个项目)。


是否需要支持任何特殊属性(例如,操作系统指导的资源管理)?否则,对于Unix,您应该能够通过编写适当的init.d脚本并将您的应用程序设置为自动启动来守护您的应用程序。


推荐阅读