Java进程控制非常糟糕 - 主要是由于Java VM / JDK类(例如java.lang.Process)的支持不足。
我想知道,有没有可靠的开源库。
要求是:
答案 0 :(得分:14)
答案 1 :(得分:3)
Java Service Wrapper可能就是你要找的东西。它是跨平台的,可用于启动Windows服务,捕获IO,并且通常完全管理任何Java应用程序。它重量很轻,设计精良。 Atlassian用它来包装他们的产品(Jira,Bamboo等),所以它经过了战斗测试。
答案 2 :(得分:3)
还有一个要求......跨平台支持杀死孤立进程。使用java.lang.Process
(以及Apache Commons Exec),当Java应用程序执行硬停止(kill -9)时,无法终止外部进程。我真的很想找到一个可以更好地处理问题的库。
一种解决方案可能是将PID存储在磁盘上的某些资源中,然后在重新启动Java应用程序时终止进程。当然,这将取决于平台,所以跨平台库非常棒。