JavaTM 2 Platform
Standard Ed. 6

軟體套件 javax.management

提供 Java Management Extensions 的核心類別。

請參見:
          描述

介面摘要
Descriptor JMX 元素的附加元資料。
DescriptorAccess 此介面用於獲得對 Descriptor 類別的描述符的存取,這些 Descriptor 類別與某個 JMX 元件相關聯,比如 MBean、MBeanInfo、MBeanAttributeInfo、MBeanNotificationInfo、MBeanOperationInfo 和 MBeanParameterInfo。
DescriptorRead 讀取管理介面元素(如 MBeanInfo)的 Descriptor 的介面。
DynamicMBean 定義了 Dynamic MBean(公開了動態管理介面的 MBean)應該實作的各個方法。
MBeanRegistration 可以由 MBean 實作,以便在向 MBean 伺服器註冊或從其註銷之前和之後執行操作。
MBeanServer 這是在代理端進行 MBean 操作的介面。
MBeanServerConnection 此介面表示了與 MBean 伺服器(無論是本地的還是遠端的)進行通信的一種方式。
MBeanServerDelegateMBean 定義類別 MBeanServerDelegate 的物件的管理介面。
NotificationBroadcaster 由發出 Notifications 的 MBean 實作的介面。
NotificationEmitter 由發出 Notifications 的 MBean 實作的介面。
NotificationFilter 可由作為通知過濾器的任何類別來實作。
NotificationListener 應該由想要接收通知的物件來實作。
PersistentMBean 此類別是一個由希望是持久性的 MBean 實作的介面。
QueryExp 表示可在資料庫查詢“where 子句”中使用的相關約束。
ValueExp 表示可以作為參數傳遞給關係表達式的值。
 

類別摘要
Attribute 通過將 MBean 屬性名與其值相關聯來表示 MBean 屬性。
AttributeChangeNotification 提供 MBean 所發送的屬性更改通知的定義。
AttributeChangeNotificationFilter 此類別實作 attribute change notificationNotificationFilter 介面。
AttributeList 表示 MBean 屬性值的列表。
AttributeValueExp 表示用作關係約束參數的屬性。
DefaultLoaderRepository 已過時。 使用 MBeanServer.getClassLoaderRepository() 取代。
ImmutableDescriptor 不可變的描述符。
JMX JMX API 提供的靜態方法。
MBeanAttributeInfo 描述出於管理目的而公開的 MBean 屬性。
MBeanConstructorInfo 描述 MBean 所公開的建構子。
MBeanFeatureInfo 提供 MBean 描述符物件的常規資訊。
MBeanInfo 描述由 MBean 公開的管理介面;即描述為管理操作所提供的屬性和操作的集合。
MBeanNotificationInfo MBeanNotificationInfo 類別用於描述 MBean 向給定的 Java 通知類別發出的不同通知實例的特性。
MBeanOperationInfo 描述由 MBean 公開的管理操作。
MBeanParameterInfo 描述由 MBean 公開的操作的參數。
MBeanPermission 權限控制對 MBeanServer 操作的存取。
MBeanServerBuilder 此類別表示創建預設 MBeanServer 實作的產生器。
MBeanServerDelegate 從管理的角度表示 MBean 伺服器。
MBeanServerFactory 提供 MBean 伺服器參考。
MBeanServerInvocationHandler 通過 MBean 伺服器將 MBean 的管理介面中的方法轉發到 MBean 的 InvocationHandler
MBeanServerNotification 表示 MBean 伺服器通過 MBeanServerDelegate MBean 所發出的通知。
MBeanServerPermission 執行與 MBeanServer 關聯的操作的 Permission。
MBeanTrustPermission 此權限表示“信任”簽章者或程式碼基。
Notification Notification 類別表示 MBean 所發出的通知。
NotificationBroadcasterSupport 提供 NotificationEmitter 介面的實作。
NotificationFilterSupport 提供 NotificationFilter 介面的實作。
ObjectInstance 用於表示 MBean 物件名及其類別名。
ObjectName 表示 MBean 的物件名,或者能夠與多個 MBean 名稱相比對的網要。
Query 建構查詢物件約束。
QueryEval 允許在特定的 MBean 伺服器上下文中執行查詢。
StandardEmitterMBean 一個其管理介面由 Java 介面上的反射確定並且可以發送通知的 MBean。
StandardMBean 一個管理介面由 Java 介面上的反射確定的 MBean。
StringValueExp 表示作為關係約束變數的字元串。
 

異常摘要
AttributeNotFoundException 指定的屬性不存在或無法檢索。
BadAttributeValueExpException 向建構的查詢方法傳遞無效的 MBean 屬性時,拋出此異常。
BadBinaryOpValueExpException 向建構查詢的方法傳遞無效的表達式時,拋出此異常。
BadStringOperationException 向建構查詢的方法傳遞無效的字元串操作時,拋出此異常。
InstanceAlreadyExistsException 已經在存儲資源庫中註冊了 MBean。
InstanceNotFoundException 存儲資源庫中不存在指定的 MBean。
IntrospectionException 在 MBean 的 introspection 期間出現的異常。
InvalidApplicationException 試圖應用下列任一內容時拋出此異常:對 MBean 應用子查詢表達式或對錯誤類別的 MBean 應用完全限定屬性表達式。
InvalidAttributeValueException 指定的值對該屬性無效。
JMException 由 JMX 實作所拋出的異常。
JMRuntimeException 由 JMX 實作所發出的運行時異常。
ListenerNotFoundException 存儲資源庫中不存在指定的 MBean 偵聽器。
MalformedObjectNameException 字元串的格式不對應於有效的 ObjectName。
MBeanException 表示由代理的 MBean 方法所拋出的“使用者定義的”異常。
MBeanRegistrationException 包裹由 MBeanRegistration 介面的 preRegister() 和 preDeregister() 方法所拋出的異常。
NotCompliantMBeanException 嘗試在 MBean 伺服器中註冊一個物件,而該物件不是 JMX 相容的 MBean 時出現此異常。
OperationsException 表示在 MBean 上執行操作時,在 MBean 伺服器中拋出的異常。
ReflectionException 表示在使用 java.lang.reflect 類別調用 MBean 上的方法時,MBean 伺服器中拋出的異常。
RuntimeErrorException 當代理中發生 java.lang.Error 時,必須捕獲它並作為 RuntimeErrorException 重新拋出。
RuntimeMBeanException 表示由代理中的 MBean 方法拋出的運行時異常。
RuntimeOperationsException 表示在 MBean 上執行操作時代理中拋出的運行時異常。
ServiceNotFoundException 表示請求的服務不受支持時引發的異常。
 

註釋型別摘要
DescriptorKey 描述註釋元素與 Descriptor 中欄位之間關聯方式的元註釋。
MXBean 顯式地標記某一介面是否為 MXBean 介面的註釋。
 

軟體套件 javax.management 的描述

提供 Java Management Extensions 的核心類別。

Java Management Extensions (JMXTM) API 是一個用於管理和監視的標準 API。典型用途包括:

JMX API 還可以作為解決方案的一部分來管理系統、網路等。

API 套件括遠端存取,因此,遠端管理程序可以基於這些目的與正在運行的應用程序進行交互。

MBean

JMX API 的基本概念是 MBean。MBean 是表示資源的指定管理物件。它有一個管理介面,該介面包括以下內容:

例如,一個表示應用程序配置的 MBean 可以有一些表示不同配置項的屬性。讀取 CacheSize 屬性可以返回該項的當前值。寫入該屬性可以更新該項,從而可能會更改正在運行的應用程序的行為。諸如 save 之類別的操作可以持久保存當前配置。每次更改配置時都會發送 ConfigurationChangedNotification 之類別的通知。

在 JMX API 的標準用法中,可以像實作 Java 物件那樣來實作 MBean。不過,如下所述,通常不直接參考這些物件。

Standard MBean

為了簡化 MBean 實作,JMX API 套件括 Standard MBean 這一概念。Standard MBean 的屬性和操作來源於 Java 介面,使用特定的命名網要,與 JavaBeansTM 使用的屬性和操作類似。例如,假定具有如下所示介面:

    public interface ConfigurationMBean {
        public int getCacheSize();
        public void setCacheSize(int size);
        public long getLastChangedTime();
        public void save();
    }
      

方法 getCacheSizesetCacheSize 定義了名為 CacheSizeint 型別的讀寫屬性(首字母大寫,這與 JavaBeans 慣例不同)。

方法 getLastChangedTime 定義了名為 LastChangedTimelong 型別的屬性。這是一種只讀屬性,原因是沒有方法 setLastChangedTime

方法 save 定義了名為 save 的操作。它不是屬性,原因是它的名稱沒有以 getsetis 開頭。

Standard MBean 的準確命名網要將在 JMX 規範中詳述。

制做作為帶有此管理介面的 MBean 的 Java 物件的方法有兩種。一種用於具有與 Java 介面完全相同的名稱、但沒有 MBean 後綴的類別的物件。因此,在該範例中,物件將是 Configuration 類別的物件,與 ConfigurationMBean 在相同的 Java 套件中。第二種方法是使用 StandardMBean 類別。

MXBean

MXBean 是標準 MBean 的一個變體,其中復合型別將映射到 javax.management.openmbean 套件中定義的標準型別集。如果需要參考 MBean 介面中特定於應用程序的類別,則可以使用 MXBean。在 MXBean 規範中有 MXBean 的詳細描述。

Dynamic MBean

Dynamic MBean 是一種在運行時定義其管理介面的 MBean。例如,配置 MBean 可以通過解析 XML 檔案來確定它所公開的屬性名稱和型別。

任何實作 DynamicMBean 介面的類別的 Java 物件都是 Dynamic MBean。

Open MBean

Open MBean 是一種 Dynamic MBean,在這種 MBean 中,屬性型別、操作參數型別和返回值都是使用一個預定義 Java 類別的小集合來建構的。Open MBean 使用其遠端管理程序加快了操作,這些遠端管理程序不必使用特定於應用程序的型別,其中包括非 Java 程序。Open MBean 由包 javax.management.openmbean 定義。

Model MBean

Model MBean 是一種 Dynamic MBean,它充當管理介面和基礎托管資源之間的橋樑。管理介面和托管資源都被指定為 Java 物件。相同的 Model MBean 實作可以重複多次用於不同的管理介面和托管資源,並且還可以提供諸如持久性和快取記憶體之類別的共有功能。Model MBean 由包 javax.management.modelmbean 定義。

MBean 伺服器

要想讓 MBean 有用,必須在 MBean 伺服器中註冊它。MBean 伺服器是一個 MBean 存儲資源庫。通常情況下,只能通過 MBean 伺服器存取 MBean。換句話說,程式碼不再直接存取實作 MBean 的 Java 物件,而是通過 MBean 伺服器根據名稱存取該 MBean。每個 MBean 在 MBean 伺服器內都有一個由 ObjectName 類別定義的唯一名稱。

MBean 伺服器是一個實作了介面 MBeanServer 的物件。最便於使用的 MBean Server 是 Platform MBean Server。這是可以由相同 Java 虛擬機器中運行的不同托管元件共享的單獨 MBean 伺服器。平臺 MBean 伺服器可以通過方法 ManagementFactory.getPlatformMBeanServer() 存取。

使用 MBeanServerFactory 類別,應用程序程式碼還可以創建一個新的 MBean 伺服器,或者存取已經創建的 MBean 伺服器。

在 MBean 伺服器中創建 MBean

創建 MBean 有兩種方法。一種方法是建構將作為 MBean 的 Java 物件,然後使用 registerMBean 方法在 MBean 伺服器中註冊它。另一種方法是使用其中一個 createMBean 方法在單一操作中創建並註冊 MBean。

registerMBean 方法對於本地使用較為簡單,但不能遠端使用。createMBean 方法可以遠端使用,但有時需要注意類別載入問題。

如果實作了 MBeanRegistration 介面,則 MBean 可以在向 MBean 伺服器註冊或從中註銷時執行操作。

在 MBean 伺服器中存取 MBean

在給定一個 ObjectName name 和一個 MBeanServer mbs 的情況下,可以存取一些屬性和操作,如下所示:

    int cacheSize = mbs.getAttribute(name, "CacheSize");
    Attribute newCacheSize =
        new Attribute("CacheSize", new Integer(2000));
    mbs.setAttribute(name, newCacheSize);
    mbs.invoke(name, "save", new Object[0], new Class[0]);
      

另外,如果有一個與 MBean 管理介面對應的 Java 介面,那麼可以使用 MBean 代理,如下所示:

     ConfigurationMBean conf =
        JMX.newMBeanProxy(mbs, name, ConfigurationMBean.class);
                                                      
    int cacheSize = conf.getCacheSize();
    conf.setCacheSize(2000);
    conf.save();
      

使用 MBean 代理只是為了方便。與第一個範例相同,第二個範例的結尾同樣調用了 MBeanServer 操作。

可以通過查詢 MBean 伺服器尋找其名稱與特定網要比對和/或其屬性滿足特定約束的 MBean。名稱網要可以使用 ObjectName 類別建構,而約束可以使用 Query 類別建構。然後方法 queryNamesqueryMBeans 將執行查詢。

通知

通知Notification 類別或子類別的一個實例。除其 Java 類別之外,它還有一個可以將它與相同類別的其他通知區分開的型別 字元串。

一個將發送通知的 MBean 必須實作 NotificationBroadcasterNotificationEmitter 介面。通常情況下,它通過創建 NotificationBroadcasterSupport 子類別或委派該類別的一個實例來實作這一點。

通知可以由偵聽器 接收,該偵聽器是一個實作了 NotificationListener 介面的物件。可以使用方法 javax.management.MBeanServer#addNotificationListener(ObjectName、NotificationListener、NotificationFilter、Object) 將偵聽器添加到 MBean 中。可以選擇向此方法提供過濾器,以便只選擇感興趣的通知。過濾器是一個實作了 NotificationFilter 介面的物件。

MBean 可以是由同一個 MBean 伺服器中其他 MBean 發出的通知的偵聽器。在此情況下,它實作 NotificationListener,並使用方法 javax.management.MBeanServer#addNotificationListener(ObjectName、ObjectName、NotificationFilter、Object) 來偵聽。

遠端存取 MBean

可以通過連接器 遠端存取 Bean 伺服器。連接器允許遠端 Java 應用程序以實質上與本地 Java 應用程序相同的方式存取 MBean 伺服器。包 javax.management.remote 定義了連接器。

JMX 規範還定義了適配器 的概念。適配器可以在協議中(如 SNMP 或 HTML )的請求與對 MBean 伺服器的存取之間進行轉換。所以,像 SNMP GET 這樣的操作可能會導致對 MBean 伺服器 getAttribute

從以下版本開始:
1.5
另請參見:
Java SE 6 Platform documentation on JMX technology,尤其是 JMX Specification, version 1.4(pdf)。

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only