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

问题描述:

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

+0

对于Windows服务,请参阅此问题:http://stackoverflow.com/questions/68113/how-to-create-a-windows-service-from-java-app/3626452#3626452(将此评论添加为Google把我带到这里,但另一个问题有更多答案)。 – atomicules 2010-09-02 11:05:27

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

  • 大X平台支持 - 我用它在Windows和Linux,并发现它很容易在两个
  • 固文档 - 文档清晰并且重点突出,具有很好的示例
  • 深度平台支持 - 窗口服务管理系统中有一些独特的功能,完全由服务包装(无重新启动)支持。而在Windows上,您甚至可以在进程列表中看到您的应用程序名称,而不仅仅是“java.exe”。
  • 符合标准 - 与许多专门的Java初始化脚本不同,服务包装器的脚本倾向于符合LSB标准。如果您希望从Linux Heartbeat/HA等高可用性管理中获得高可用性,这可能最终变得非常重要。

总之,只要我的2美分... :)

+1

不能高度推荐这个 – 2009-05-11 08:10:57

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

另一种选择是WinRun4J。这是仅适用于Windows,但有一些有用的功能:

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

它也开源友好(CPL)所以没有限制使用。

(全面披露:我在这个项目上工作)。