是否可以通过JMX以编程方式关闭Java进程

时间:2009-10-28 10:45:50

标签: java jmx

我正在编写一个应用程序来监控另一个Java进程,并在遇到某些目标时采取特定的操作。例如,如果一个线程死锁一段时间,请终止线程,如果内存使用量超过特定数量,发送电子邮件警报并终止进程等。

我的应用程序将作为一个独立的应用程序运行,监控特定的其他应用程序(本地,但从我可以看到的远程或本地没有区别)。

我正在通过MXBeans监视外部JVM,但看不到一种干净的方法来杀死外部进程,而不是像'kill -9'这样的系统调用(顺便说一句,我在UNIX中工作)。

有没有办法通过MXBean接口杀死JVM?

格雷厄姆

2 个答案:

答案 0 :(得分:7)

不确定。在调用System.exit()的目标服务器上实现MBean,并从客户端调用它作为JMX操作。

答案 1 :(得分:2)

如果你正在使用Spring,你可以简单地注释你的bean,让它的一个操作暴露为MBean operation。所以它会是这样的:

@MBeanOperation(description="Kill the service")
public void die() {
  System.exit();
}

...或者可能自己停止应用程序上下文。