Java进程控制因Java虚拟机/JDK类(如java.lang.Process)的支持不足而声名狼藉。
我想知道,是否有任何可靠的开源库可以满足以下要求:
- 开源
- 启动/停止进程
- 管理标准输入和标准输出
- 跨平台(至少包括Linux、Windows、Solaris、HP和IBM)
- (可选)可重启
- (理想情况下)成熟可靠
Java进程控制因Java虚拟机/JDK类(如java.lang.Process)的支持不足而声名狼藉。
我想知道,是否有任何可靠的开源库可以满足以下要求:
关于Apache Commons Exec,你觉得怎么样?
还有一个要求...跨平台支持孤立进程的终止。使用java.lang.Process
(以及Apache Commons Exec),当Java应用程序进行强制停止(kill -9)时,没有办法杀死外部进程。我真的很希望能找到一个能够更好地处理这个问题的库。
一种解决方案可能是将PID存储在磁盘上的某些资源中,然后在Java应用程序重新启动时杀死进程。当然,这将依赖于平台,所以一个好的跨平台库将是非常棒的。
Java Service Wrapper 可能是你在寻找的东西。它是跨平台的,可以用来启动任何Java应用程序作为Windows服务、捕获IO并完全管理。它非常轻量级且设计良好。Atlassian使用它来封装他们的产品(Jira、Bamboo等),因此它经过了实战考验。