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

我正在寻找将Java应用程序作为* NIX守护程序或Windows服务运行的最佳方法。 我查看了Java服务包装器 , Apache Commons项目“jsvc”和Apache Commons项目“procrun” 。 到目前为止,Java服务包装看起来是最好的select…但是,我想知道是否有任何其他“开源友好”的许可产品。

我自己在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脚本并将您的应用程序设置为自动启动来守护程序。