我正在寻找将 Java 应用程序作为 *NIX 守护程序或 Windows 服务运行的最佳方法。我已经查看了 Java 服务包装器, , 这 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分钱......:)

其他提示

另一种选择是 运行4J. 。这仅适用于 Windows,但有一些有用的功能:

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

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

(全面披露:我从事这个项目)。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top