四、 創建JMX MBeans
MBeans基礎知識及其適於JMX架構的方面超出了本文所討論的范圍。我們將為我們的應用程序簡單地創建、實現、暴露和保護一個MBean。我們所感興趣的是暴露相應與下列兩個方法的兩種數據。下面是我們的簡單MBean接口:
public interface LoginStatsMBean {
public int getFailedLogins();
public int getSuccessLogins();
}
這兩個方法簡單地返回成功和失敗登陸的數目。LoginStatsMBean的實現-LoginStats,為上面兩種方法提供了一種具體的實現。讓我們分析一下getFailedLogins()實現:
public int getFailedLogins() {
ServletContext context = Config.getServletContext();
Integer val = (Integer) context.getAttribute( Constants.FAILED_LOGINS_KEY);
return (val == null) ? 0 : val.intValue();
}
該方法返回一個存儲在ServletContext中的值。getSuccessLogins()方法是以相似的方式實現的。
五、 創建和保護一個JMX代理
管理應用程序的JMX相關方面的JMXAgent類有以下幾個責任:
1. 創建一個MBeanServer。
2. 用MBeanServer注冊LoginStatsMBean。
3. 創建一個JMXConnector以允許遠程客戶進行連接。
o 包含對JNDI的使用。
o 也必須有一個RMI注冊運行。
4. 使用一個用戶名和口令保護JMXConnector。
5. 分別在應用程序啟動和停止時,啟動和停止JMXConnector。
JMXAgent的類輪廓是:
public class JMXAgent {
public JMXAgent() {
//初始化JMX服務器
}
public void start() {
//啟動JMX服務器
}
//在應用程序結束時調用
public void stop() {
//停止JMX服務器
}
}
讓我們理解在該構造器的這部分代碼-它能夠使得客戶遠程地監控該應用程序。
用MBeans創建一個MBeanServer
我們首先創建一個MBeanServer對象。它是JMX基礎結構的核心組件,它允許我們暴露我們的MBeans作為可管理的對象。MBeanServerFactory.createMBeanServer(String)方法使得這一任務極為輕松。所提供的參數是服務器的域。可以把它當作這個MBeanServer的唯一的名字。然後,我們用MbeanServe來注冊LoginStatsMBean。MBeanServer.reGISterMBean(Object,ObjectName)方法使用的參數有兩個:一個是MBean實現的一個實例;另一個是類型ObjectName的一個對象-它用於唯一地標識該MBean;在這種情況下,DOMAIN+":name=LoginStats"就足夠了。
MBeanServer server = MBeanServerFactory.createMBeanServer(DOMAIN);
server.registerMBean(new LoginStats(),new ObjectName(DOMAIN+ ":name=LoginStats"));
本文來自編程入門網:http://www.bianceng.cn/Programming/Java/201107/28048_2.htm