|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個軟體套件 下一個軟體套件 | 框架 無框架 |
請參見:
描述
介面摘要 | |
---|---|
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 notification 的 NotificationFilter 介面。 |
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 介面的註釋。 |
提供 Java Management Extensions 的核心類別。
Java Management Extensions (JMXTM) API 是一個用於管理和監視的標準 API。典型用途包括:
JMX API 還可以作為解決方案的一部分來管理系統、網路等。
API 套件括遠端存取,因此,遠端管理程序可以基於這些目的與正在運行的應用程序進行交互。
JMX API 的基本概念是 MBean。MBean 是表示資源的指定管理物件。它有一個管理介面,該介面包括以下內容:
例如,一個表示應用程序配置的 MBean 可以有一些表示不同配置項的屬性。讀取 CacheSize
屬性可以返回該項的當前值。寫入該屬性可以更新該項,從而可能會更改正在運行的應用程序的行為。諸如 save
之類別的操作可以持久保存當前配置。每次更改配置時都會發送 ConfigurationChangedNotification
之類別的通知。
在 JMX API 的標準用法中,可以像實作 Java 物件那樣來實作 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(); }
方法 getCacheSize
和 setCacheSize
定義了名為 CacheSize
的 int
型別的讀寫屬性(首字母大寫,這與 JavaBeans 慣例不同)。
方法 getLastChangedTime
定義了名為 LastChangedTime
的 long
型別的屬性。這是一種只讀屬性,原因是沒有方法 setLastChangedTime
。
方法 save
定義了名為 save
的操作。它不是屬性,原因是它的名稱沒有以 get
、set
或 is
開頭。
Standard MBean 的準確命名網要將在 JMX 規範中詳述。
制做作為帶有此管理介面的 MBean 的 Java 物件的方法有兩種。一種用於具有與 Java 介面完全相同的名稱、但沒有 MBean
後綴的類別的物件。因此,在該範例中,物件將是 Configuration
類別的物件,與 ConfigurationMBean
在相同的 Java 套件中。第二種方法是使用 StandardMBean
類別。
MXBean 是標準 MBean 的一個變體,其中復合型別將映射到 javax.management.openmbean
套件中定義的標準型別集。如果需要參考 MBean 介面中特定於應用程序的類別,則可以使用 MXBean。在 MXBean
規範中有 MXBean 的詳細描述。
Dynamic MBean 是一種在運行時定義其管理介面的 MBean。例如,配置 MBean 可以通過解析 XML 檔案來確定它所公開的屬性名稱和型別。
任何實作 DynamicMBean
介面的類別的 Java 物件都是 Dynamic MBean。
Open MBean 是一種 Dynamic MBean,在這種 MBean 中,屬性型別、操作參數型別和返回值都是使用一個預定義 Java 類別的小集合來建構的。Open MBean 使用其遠端管理程序加快了操作,這些遠端管理程序不必使用特定於應用程序的型別,其中包括非 Java 程序。Open MBean 由包 javax.management.openmbean
定義。
Model MBean 是一種 Dynamic MBean,它充當管理介面和基礎托管資源之間的橋樑。管理介面和托管資源都被指定為 Java 物件。相同的 Model MBean 實作可以重複多次用於不同的管理介面和托管資源,並且還可以提供諸如持久性和快取記憶體之類別的共有功能。Model MBean 由包 javax.management.modelmbean
定義。
要想讓 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 的 Java 物件,然後使用 registerMBean
方法在 MBean 伺服器中註冊它。另一種方法是使用其中一個 createMBean
方法在單一操作中創建並註冊 MBean。
registerMBean
方法對於本地使用較為簡單,但不能遠端使用。createMBean
方法可以遠端使用,但有時需要注意類別載入問題。
如果實作了 MBeanRegistration
介面,則 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
類別建構。然後方法 queryNames
和 queryMBeans
將執行查詢。
通知 是 Notification
類別或子類別的一個實例。除其 Java 類別之外,它還有一個可以將它與相同類別的其他通知區分開的型別 字元串。
一個將發送通知的 MBean 必須實作 NotificationBroadcaster
或 NotificationEmitter
介面。通常情況下,它通過創建 NotificationBroadcasterSupport
子類別或委派該類別的一個實例來實作這一點。
通知可以由偵聽器 接收,該偵聽器是一個實作了 NotificationListener
介面的物件。可以使用方法 javax.management.MBeanServer#addNotificationListener(ObjectName、NotificationListener、NotificationFilter、Object)
將偵聽器添加到 MBean 中。可以選擇向此方法提供過濾器,以便只選擇感興趣的通知。過濾器是一個實作了 NotificationFilter
介面的物件。
MBean 可以是由同一個 MBean 伺服器中其他 MBean 發出的通知的偵聽器。在此情況下,它實作 NotificationListener
,並使用方法 javax.management.MBeanServer#addNotificationListener(ObjectName、ObjectName、NotificationFilter、Object)
來偵聽。
可以通過連接器 遠端存取 Bean 伺服器。連接器允許遠端 Java 應用程序以實質上與本地 Java 應用程序相同的方式存取 MBean 伺服器。包 javax.management.remote
定義了連接器。
JMX 規範還定義了適配器 的概念。適配器可以在協議中(如 SNMP 或 HTML )的請求與對 MBean 伺服器的存取之間進行轉換。所以,像 SNMP GET 這樣的操作可能會導致對 MBean 伺服器 getAttribute
。
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個軟體套件 下一個軟體套件 | 框架 無框架 |
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。