我正在编写一个监视Java应用程序的程序。我想监视本机进程的状态,并知道它们什么时候退出。这可以; Java给了我Process对象,我可以在它上面waitFor()。
然而,出现的问题是,如果我的程序死了,我希望它能够获得对流程的引用 - 它在Java中无法做到,因为它从未创建过程。我的第一个猜测是通过RMI发送进程对象并让客户端应用程序在重新连接时将其发回,但这不起作用,因为Process不可序列化。
我可以想办法在Windows上使用JNA本地执行此操作,但有人知道是否有现有的库可以执行此操作吗?
干杯!
答案 0 :(得分:2)
您可以使用WMI在Windows上实现此功能,并在Unix上执行命令行实用程序(如果需要)。 我知道以下工具可以使用WMI:JaWin,WIntegra,JInterop。
如果您的显示器也在Windows中运行,您可以使用JaWin。它是COM + API的JNI包装器。如果你想跨平台并且能够从Unix机器监视Windows机器使用JInterop。它是在纯java中实现DCOM协议的开源库。 JIntegra类似但商业化。
编辑:可能更简单的解决方案。如果要监视java应用程序,只需使用JMX。使用JMX远程或本地连接到此应用程序。 祝你好运。