JMX
介紹
JMX
(Java Management Extension)是爲一個應用程序植入管理功能的框架。說的很抽象,JMX
的最主要的應用場景是對中間件的監控,配置文件的在線修改。
基本用法
通常一個MBean
需要定義一個接口,以MBean
結尾, 例如: TaskMBean
, 格式爲XXXMBean
,這個是規範,必須得遵守.
public interface TaskMBean {
// 如果想要修改屬性,必須有get和set方法
void setTask(String task);
String getTask();
void printTask();
}
public class Task implements TaskMBean {
public String getTask() {
return task;
}
public void setTask(final String task) {
this.task = task;
}
private String task = "task";
public void printTask() {
// TODO Auto-generated method stub
System.out.println("打印:" + task);
}
}
然後我們將MBean
註冊到MBeanServer
public class AppApplication {
public static void main(final String[] args) throws Exception {
// 工廠方法獲取MBeanServer
MBeanServer mBeanServer = ManagementFactory.getPlatformMBeanServer();
// 創建待發布的MBean
Task task = new Task();
// 將MBean註冊到MBeanServer,這樣就可以通過Jconsole查看
// ObjectName是用來唯一標識MBean的
mBeanServer.registerMBean(task, new ObjectName("myBean:name=task"));
while (true) {
Thread.sleep(10000);
}
}
}
然後運行程序,就可以通過Jconsole
工具(jdk/bin目錄下
)查看Task在JMX
上的註冊情況了。
選擇本地進程,點擊剛剛啓動的項目名稱AppApplication
,點擊連接,我們從Jconsole
的視圖標籤中見到,JConsole
通過JMX
展示的信息都是Java程序的通用信息,如內存情況、線程情況、類加載情況等,換言之,只要是Java程序就都具備這些信息。這些信息爲我們優化程序性能、排查BUG非常有用。
點擊MBean
找到我們暴漏的類。
然後點擊printTask執行該方法。然後在點擊task修改task屬性,然後再次點擊task屬性,修改task的值,然後再次點擊printTask,發現屬性已經更改了。
方法。然後在點擊task修改task屬性,然後再次點擊task屬性,修改task的值,然後再次點擊printTask,發現屬性已經更改了。