【问题标题】:Good Java Process Control Library [closed]良好的 Java 过程控制库 [关闭]
【发布时间】:2010-09-16 15:05:54
【问题描述】:

Java 进程控制是出了名的糟糕 - 主要是由于 Java VM/JDK 类(例如 java.lang.Process)的支持不足。

我想知道,有没有好的可靠的开源库。

要求是:

  1. 开源软件
  2. 启动/停止进程
  3. 管理 STDIN 和 STDOUT
  4. 跨平台(至少Linux, Windows、Solaris、HP 和 IBM 在 该命令)
  5. (可选)可重启
  6. (理想的)成熟的

【问题讨论】:

  • 我会添加一个进程依赖概念作为要求:进程/服务只有在其依赖的进程/服务已启动时才应启动。如果一个进程/服务停止,它的所有依赖进程/服务都会停止。
  • 现在是 2015 年。我想知道是否有任何变化,现在这个问题的答案会有所不同。
  • 现在是 2020 年,看起来 java Process API 的替代品并不多。
  • 在 maven 和 github 上有一个库叫做 jProcesses,非常好用,功能强大,跨平台。

标签: java open-source process


【解决方案1】:

Apache Commons Exec怎么样?

【讨论】:

  • 好技巧 - 也是好教程! commons.apache.org/exec/tutorial.html
  • 我不认为 Apache Commons Exec 提供与 Java Service Wrapper 相同的抽象级别。对于实现进程/守护进程管理器 Commons Exec 可能是一个好的开始。
【解决方案2】:

Java Service Wrapper 可能就是您要找的。它是跨平台的,可用于将事物作为 Windows 服务启动、捕获 IO,并且通常可以完全管理任何 Java 应用程序。它的重量非常轻且设计精良。 Atlassian 使用它来包装他们的产品(Jira、Bamboo 等),因此它经过了实战考验。

【讨论】:

【解决方案3】:

还有一个要求... 跨平台支持杀死一个孤立的进程。使用java.lang.Process(和 Apache Commons Exec),当 Java 应用程序执行硬停止(kill -9)时,无法终止外部进程。我真的很想找到一个可以更好地处理问题的库。

一种解决方案可能是将 PID 存储在磁盘上的某些资源中,然后在 Java 应用程序重新启动时终止进程。当然,这将取决于平台,所以一个好的跨平台库会很棒。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-08
    • 2010-11-19
    • 2010-09-05
    • 1970-01-01
    • 2010-11-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多