2009-10-28 86 views
7

我目前正在编写一个应用程序来监视另一个Java进程并在特定目标被击中时执行特定操作。例如,如果某个线程在某段时间内死锁,如果内存使用超过特定数量,发送电子邮件警报并终止进程等,请杀死该线程。是否有可能以编程方式关闭通过JMX的Java进程

我的应用程序将作为独立应用程序运行,监控特定的其他应用程序(本地,但从我可以看到远程或本地没有什么区别)。我正在监视通过MXBeans的外部JVM,但看不到一个干净的方式来杀死外部进程,因为系统调用像'kill -9'(我在UNIX上工作)。

有什么办法通过MXBean接口杀死JVM吗?

格雷厄姆

+0

我不知道这样做的出的现成办法,但我倾向于实行“紧急停机”的MBean调用时只需调用System.exit(我也让你通过在退出返回码中)。 – Adamski 2009-10-28 10:48:14

回答

7

当然。在调用System.exit()的目标服务器上实现MBean,并将其作为来自客户端的JMX操作调用。

2

如果你使用Spring,你可以简单地注释你的bean有其业务的一个被暴露作为MBean operation。所以它会是这样的:

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

...或者也许你自己停止应用程序上下文。

+0

你的意思是'@ ManagedOperation' – skaffman 2009-10-28 12:09:08

相关问题