JavaTM 2 Platform
Standard Ed. 6

javax.management.modelmbean
類別 RequiredModelMBean

java.lang.Object
  繼承者 javax.management.modelmbean.RequiredModelMBean
所有已實作的介面:
DynamicMBean, MBeanRegistration, ModelMBean, ModelMBeanNotificationBroadcaster, NotificationBroadcaster, NotificationEmitter, PersistentMBean

public class RequiredModelMBean
extends Object
implements ModelMBean, MBeanRegistration, NotificationEmitter

此類別是 ModelMBean 的實作。每個發行的 JMX Agent 必須帶有 ModelMBean 的適當實作,且該類別必須是指定的 RequiredModelMBean。

Java 資源使用 MBeanServer 的 createMBean 方法來實例化 RequiredModelMBean,希望以這種方式獲得可管理性。然後該資源設置 RequiredModelMBean 實例的 MBeanInfo 和 Descriptor。通過 ModelMBean 的 ModelMBeanInfo 公開的屬性和操作像其他 MBean 一樣可以從 MBean、連接器/適配器進行存取。通過使用 Descriptor,可以定義托管應用程序中的值和方法,並可以將它們映射到 ModelMBean 的屬性和操作。此映射可以在 XML 格式的檔案中定義,也可以以程式方式在運行時動態定義。

MBeanServer 中實例化的每個 RequiredModelMBean 都將是可管理的:
通過連接到該 MBeanServer 的連接器/適配器,可以遠端存取其屬性和操作。

Java 物件不能在 MBeanServer 中進行註冊,除非它是 JMX 相容的 MBean。通過實例化 RequiredModelMBean,資源得到了保證,因此 MBean 是有效的。每個公共方法必須拋出 MBeanException 和 RuntimeOperationsException,允許使用這些異常包裹來自分佈式通信(RMI、EJB 等)的異常。

從以下版本開始:
1.5

建構子摘要
RequiredModelMBean()
          建構帶有空 ModelMBeanInfo 的 RequiredModelMBean
RequiredModelMBean(ModelMBeanInfo mbi)
          使用傳入的 ModelMBeanInfo 建構 RequiredModelMBean 物件。
 
方法摘要
 void addAttributeChangeNotificationListener(NotificationListener inlistener, String inAttributeName, Object inhandback)
          註冊一個將 NotificationListener 介面實作為偵聽器的物件。
 void addNotificationListener(NotificationListener listener, NotificationFilter filter, Object handback)
          註冊一個將 NotificationListener 介面實作為偵聽器的物件。
 Object getAttribute(String attrName)
          返回為此 ModelMBean 定義的指定屬性的值。
 AttributeList getAttributes(String[] attrNames)
          返回 ModelMBean 中幾個屬性的值。
protected  ClassLoaderRepository getClassLoaderRepository()
          返回用於執行類別載入的 Class Loader Repository。
 MBeanInfo getMBeanInfo()
          返回此 RequiredModelMBean 公開的屬性、操作、建構子和通知是為了便於管理。
 MBeanNotificationInfo[] getNotificationInfo()
          返回總是由 RequiredModelMBean 產生的 Notification 陣列。
 Object invoke(String opName, Object[] opArgs, String[] sig)
          調用 RequiredModelMBean 上的(或通過它調用)某個方法,並返回方法的執行結果。
 void load()
          使用在持久存儲中找到的 MBean 的資料實例化此 MBean。
 void postDeregister()
          允許 MBean 在已從 MBean 伺服器註銷之後執行任何所需要的操作。
 void postRegister(Boolean registrationDone)
          允許 MBean 在已註冊到 MBean 伺服器之後或註冊失敗之後執行任何所需要的操作。
 void preDeregister()
          允許 MBean 在由 MBean 伺服器註銷之前執行任何所需要的操作。
 ObjectName preRegister(MBeanServer server, ObjectName name)
          允許 MBean 在註冊到 MBean 伺服器之前執行任何所需要的操作。
 void removeAttributeChangeNotificationListener(NotificationListener inlistener, String inAttributeName)
          從 RequiredModelMBean 移除一個 attributeChangeNotifications 的偵聽器。
 void removeNotificationListener(NotificationListener listener)
          從 RequiredModelMBean 移除一個 Notification 的偵聽器。
 void removeNotificationListener(NotificationListener listener, NotificationFilter filter, Object handback)
          從此 MBean 移除一個偵聽器。
 void sendAttributeChangeNotification(Attribute inOldVal, Attribute inNewVal)
          將包含屬性的原有值和新值的 attributeChangeNotification 發送到 ModelMBean 上已註冊的 AttributeChangeNotification 偵聽器。
 void sendAttributeChangeNotification(AttributeChangeNotification ntfyObj)
          將傳入的 attributeChangeNotification 發送到 ModelMBean 上已註冊的 attributeChangeNotification 偵聽器。
 void sendNotification(Notification ntfyObj)
          以 jmx.modelmbean.generic 通知形式將傳入的 Notification 發送到 ModelMBean 上已註冊的 Notification 偵聽器。
 void sendNotification(String ntfyText)
          將包含傳入文本字元串的 Notification 發送到 ModelMBean 上已註冊的 Notification 偵聽器。
 void setAttribute(Attribute attribute)
          設置指定的 ModelMBean 的指定屬性值。
 AttributeList setAttributes(AttributeList attributes)
          設置此 ModelMBean 的屬性陣列的值。
 void setManagedResource(Object mr, String mr_type)
          設置物件的實例句柄,我們將根據該句柄執行此 ModelMBean 管理介面(MBeanInfo 和 Descripto)中的所有方法。
 void setModelMBeanInfo(ModelMBeanInfo mbi)
          使用傳入的 ModelMBeanInfo 實例化 ModelMBean 物件。
 void store()
          捕獲此 MBean 實例的當前狀態,並將它寫出到持久存儲中。
 
從類別 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

建構子詳細資訊

RequiredModelMBean

public RequiredModelMBean()
                   throws MBeanException,
                          RuntimeOperationsException
建構帶有空 ModelMBeanInfo 的 RequiredModelMBean

可以使用 setModelMBeanInfo(javax.management.modelmbean.ModelMBeanInfo) 方法來自定義 RequiredModelMBean 的 MBeanInfo 和 Descriptor。自定義 RequiredModelMBean 的 MBeanInfo 和 Descriptor 之後,可以在 MBeanServer 中註冊 RequiredModelMBean。

拋出:
MBeanException - 套件裝了一個分佈式通信異常。
RuntimeOperationsException - 在物件的建構期間包裹了一個 RuntimeException

RequiredModelMBean

public RequiredModelMBean(ModelMBeanInfo mbi)
                   throws MBeanException,
                          RuntimeOperationsException
使用傳入的 ModelMBeanInfo 建構 RequiredModelMBean 物件。只要尚未在 MBeanServer 中註冊 RequiredModelMBean,就可以使用 setModelMBeanInfo(javax.management.modelmbean.ModelMBeanInfo) 方法自定義 RequiredModelMBean 的 MBeanInfo 和 Descriptor。自定義 RequiredModelMBean 的 MBeanInfo 和 Descriptor 之後,可以向 MBeanServer 註冊 RequiredModelMBean。

參數:
mbi - RequiredModelMBean 要使用的 ModelMBeanInfo 物件。給定的 ModelMBeanInfo 根據 setModelMBeanInfo(javax.management.modelmbean.ModelMBeanInfo) 指定的方式進行複製和修改
拋出:
MBeanException - 套件裝了一個分佈式通信異常。
RuntimeOperationsException - 套件裝了一個 {link java.lang.IllegalArgumentException}:傳入參數中的 MBeanInfo 為 null。
方法詳細資訊

setModelMBeanInfo

public void setModelMBeanInfo(ModelMBeanInfo mbi)
                       throws MBeanException,
                              RuntimeOperationsException
使用傳入的 ModelMBeanInfo 實例化 ModelMBean 物件。此方法能夠設置 ModelMBean 上的自定義 ModelMBeanInfo(只要它尚未在 MBeanServer 中註冊)。
一旦自定義 ModelMBean 的 ModelMBeanInfo 並在 ModelMBean 上設置它(帶有 Descriptor)之後,就可以在 MBeanServer 中註冊 ModelMBean。

如果目前已經註冊了 ModelMBean,則此方法拋出包裹 IllegalStateExceptionRuntimeOperationsException

如果給定的 inModelMBeanInfo 不包含任何 GENERICATTRIBUTE_CHANGE 通知的 ModelMBeanNotificationInfo,則 RequiredModelMBean 將為這些缺少的通知提供它自己的預設 ModelMBeanNotificationInfo

指定者:
介面 ModelMBean 中的 setModelMBeanInfo
參數:
mbi - ModelMBean 要使用的 ModelMBeanInfo 物件。
拋出:
MBeanException - 套件裝了一個分佈式通信異常。
RuntimeOperationsException -

setManagedResource

public void setManagedResource(Object mr,
                               String mr_type)
                        throws MBeanException,
                               RuntimeOperationsException,
                               InstanceNotFoundException,
                               InvalidTargetObjectTypeException
設置物件的實例句柄,我們將根據該句柄執行此 ModelMBean 管理介面(MBeanInfo 和 Descripto)中的所有方法。

指定者:
介面 ModelMBean 中的 setManagedResource
參數:
mr - 作為托管資源的物件
mr_type - 托管資源的參考型別。
該參數可以是:"ObjectReference"、"Handle"、"IOR"、"EJBHandle" 或 "RMIReference"。
在此實作中僅支持 "ObjectReference"。
拋出:
MBeanException - 如果物件初始化程序已拋出異常。
InstanceNotFoundException - 如果找不到托管資源物件
InvalidTargetObjectTypeException - 托管資源物件應為 "ObjectReference"。
RuntimeOperationsException - 如果設置資源時包裹一個 RuntimeException

load

public void load()
          throws MBeanException,
                 RuntimeOperationsException,
                 InstanceNotFoundException

使用在持久存儲中找到的 MBean 的資料實例化此 MBean。載入的資料可以包括屬性和操作值。

此方法的調用應在此實例的建構或實例化期間,且在向 MBeanServer 註冊該 MBean 之前。

如果此類別的實例不支持持久存儲,則拋出包裹 ServiceNotFoundExceptionMBeanException

指定者:
介面 PersistentMBean 中的 load
拋出:
MBeanException - 套件裝另一個異常,或者不支持持久存儲
RuntimeOperationsException - 套件裝來自持久機制的異常
InstanceNotFoundException - 不能從持久存儲找到或載入此 MBean

store

public void store()
           throws MBeanException,
                  RuntimeOperationsException,
                  InstanceNotFoundException

捕獲此 MBean 實例的當前狀態,並將它寫出到持久存儲中。存儲的狀態可以包括屬性和操作值。

如果此類別的實例不支持持久存儲,則拋出包裹 ServiceNotFoundExceptionMBeanException

來自 MBean 和屬性描述符的持久策略用於指導此方法的執行。如果 'persistPolicy' 是以下值,則應存儲 MBean:

  != "never"
   = "always"
   = "onTimer" and now > 'lastPersistTime' + 'persistPeriod'
   = "NoMoreOftenThan" and now > 'lastPersistTime' + 'persistPeriod'
   = "onUnregister"
 

如果 'persistPolicy' 欄位是以下值,則不存儲 MBean:

    = "never"
    = "onUpdate"
    = "onTimer" && now < 'lastPersistTime' + 'persistPeriod'
 

指定者:
介面 PersistentMBean 中的 store
拋出:
MBeanException - 套件裝另一個異常,或者如果不支持持久存儲
RuntimeOperationsException - 套件裝來自持久機制的異常
InstanceNotFoundException - 不能找到/存取持久存儲

getMBeanInfo

public MBeanInfo getMBeanInfo()
返回此 RequiredModelMBean 公開的屬性、操作、建構子和通知是為了便於管理。

指定者:
介面 DynamicMBean 中的 getMBeanInfo
返回:
允許檢索此 MBean 的所有屬性、操作和 Notification 的 ModelMBeanInfo 的實例。

invoke

public Object invoke(String opName,
                     Object[] opArgs,
                     String[] sig)
              throws MBeanException,
                     ReflectionException
調用 RequiredModelMBean 上的(或通過它調用)某個方法,並返回方法的執行結果。

如果要調用的給定方法連同提供的簽章與 RequiredModelMbean 可存取方法中的某個方法比對,則將調用此比對的方法。否則將在托管資源上嘗試調用給定的方法。

該操作返回的最後一個值可以在該操作的描述符中進行快取記憶體,此描述符位於 ModelMBeanOperationInfo 的描述符中。有效值將位於 'value' 欄位中(如果有)。如果描述符中的 'currencyTimeLimit' 欄位為:

註:由於與此規範以前版本不一致,因此對於 currencyTimeLimit,建議不要使用負值或零。要指示某個快取記憶體的值永遠無效,請忽略 currencyTimeLimit 欄位。要指示它總是有效,請為此欄位使用一個非常大的值。

指定者:
介面 DynamicMBean 中的 invoke
參數:
opName - 要調用的方法名稱。此名稱可以是包括類別名稱的完全限定方法名,如果類別名稱是在操作描述符的 'class' 欄位中定義的,則此名稱也可以僅為方法名稱。
opArgs - 套件含調用操作時要設置的參數的陣列
sig - 套件含操作簽章的陣列。用於載入類別物件的類別載入器與用於載入 MBean(要在其上調用操作)的類別載入器相同。
返回:
該方法返回的物件,它表示在指定托管資源上調用方法的結果。
拋出:
MBeanException - 套件裝以下 Exceptions 之一:
ReflectionException - 套件裝一個試圖調用該方法時拋出的 Exception
RuntimeOperationsException - 套件裝一個 IllegalArgumentException。方法名稱為 null。

getAttribute

public Object getAttribute(String attrName)
                    throws AttributeNotFoundException,
                           MBeanException,
                           ReflectionException
返回為此 ModelMBean 定義的指定屬性的值。該屬性返回的最後一個值可以在該屬性的描述符中進行快取記憶體。有效值將位於 'value' 欄位中(如果有)。如果描述符中的 'currencyTimeLimit' 欄位為:

註:由於與此規範以前版本不一致,因此對於 currencyTimeLimit,建議不要使用負值或零。要指示某個快取記憶體的值永遠無效,請忽略 currencyTimeLimit 欄位。要指示它總是有效,請為此欄位使用一個非常大的值。

如果 'getMethod' 欄位包含有效的操作描述符名稱,則執行操作描述符所描述的方法。該方法的回應將作為屬性值返回。如果操作失敗或返回值的型別與屬性宣告的型別不相容,則將拋出異常。

如果沒有定義 'getMethod' 欄位,則返回屬性的預設值。如果返回值的型別與屬性宣告的型別不相容,則將拋出異常。

屬性宣告的型別是 MBeanAttributeInfo.getType() 返回的 String。如果以下條件中有一個為真,則值與此型別相容:

在此實作中,對於需要調用 getMethod 的每種情況,因為該方法是通過標準的 "invoke" 方法調用的並因此需要 operationInfo,所以必須為該 getMethod 指定一個操作,以便調用正確工作。

指定者:
介面 DynamicMBean 中的 getAttribute
參數:
attrName - 指定要檢索的屬性名稱的 String。它必須與 ModelMBeanAttributeInfo 名稱比對。
返回:
從描述符 'value' 欄位或從描述符的 'getMethod' 欄位中的操作調用檢索到的屬性值。
拋出:
AttributeNotFoundException - 如果指定的屬性在 MBean 中不是可存取的。以下情況可能導致 AttributeNotFoundException:
  • 未找到 Model MBean 的 ModelMBeanInfo。
  • 未找到指定屬性名稱的 ModelMBeanAttributeInfo。
  • ModelMBeanAttributeInfo isReadable 方法返回 'false'。
MBeanException - 套件裝以下 Exception 之一:
  • InvalidAttributeValueException: 從屬性的獲取方法檢索到一個錯誤值型別,或者描述符中未定義屬性的 'getMethod' 欄位且預設值不存在。
  • ServiceNotFoundException: 沒有為屬性的獲取方法定義 ModelMBeanOperationInfo,或者沒有與 ModelMBeanOperationInfo 關聯的描述符,或者托管資源為 null。
  • InvalidTargetObjectTypeException 'targetType' 欄位值不是 'objectReference'。
  • 由管理物件的設置方法拋出的 Exception。
ReflectionException - 套件裝試圖調用設置方法時拋出的 Exception
RuntimeOperationsException - 套件裝 IllegalArgumentException:參數中的屬性名稱為 null。
另請參見:
setAttribute(javax.management.Attribute)

getAttributes

public AttributeList getAttributes(String[] attrNames)
返回 ModelMBean 中幾個屬性的值。執行所傳入的 attrNames 陣列中每個屬性名稱的 getAttribute。

指定者:
介面 DynamicMBean 中的 getAttributes
參數:
attrNames - 要檢索的屬性名稱的 String 陣列。
返回:
檢索到的屬性的陣列。
拋出:
RuntimeOperationsException - 套件裝一個 IllegalArgumentException:參數中的物件名稱為 null,或參數中的屬性為 null。
另請參見:
setAttributes(javax.management.AttributeList)

setAttribute

public void setAttribute(Attribute attribute)
                  throws AttributeNotFoundException,
                         InvalidAttributeValueException,
                         MBeanException,
                         ReflectionException
設置指定的 ModelMBean 的指定屬性值。如果屬性描述符的 'setMethod' 欄位包含有效的操作描述符名稱,則執行操作描述符所描述的方法。在此實作中,必須正確指定操作描述符,並將它們分派給 modelMBeanInfo,以便 'setMethod' 正確工作。該方法的回應將被設置為描述符中的屬性值。

如果 currencyTimeLimit > 0,則在屬性描述符的 'value' 欄位中快取記憶體屬性的新值,並且 'lastUpdatedTimeStamp' 欄位設置為當前時間戳。

如果屬性描述符的 persist 欄位不為 null,則來自屬性描述符的 Persistence 策略用於指導在持久存儲中存儲屬性。
如果 'persistPolicy' 欄位是以下值,則存儲 MBean:

如果 'persistPolicy' 欄位是以下值,則不存儲 MBean:

Model MBean 的 ModelMBeanInfo 存儲於檔案中。

指定者:
介面 DynamicMBean 中的 setAttribute
參數:
attribute - 套件含要設置的屬性的名稱和要設置的值的 Attribute 實例。
拋出:
AttributeNotFoundException - 如果指定的屬性在 MBean 中不是可存取的。
以下情況可能導致 AttributeNotFoundException:
  • 未找到指定屬性的 ModelMBeanAttributeInfo。
  • ModelMBeanAttributeInfo 的 isWritable 方法返回 'false'。
InvalidAttributeValueException - 如果沒有為指定的屬性定義描述符。
MBeanException - 套件裝以下 Exception 之一:
  • 由管理物件的設置方法拋出的 Exception。
  • 如果在屬性的描述符中定義了一個 setMethod 欄位且托管資源為 null,或者沒有定義任何 setMethod 欄位且該屬性沒有啟用快取記憶體,則拋出 ServiceNotFoundException。注意,如果也沒有定義任何 getMethod 欄位,則將自動啟用快取記憶體。
  • InvalidTargetObjectTypeException 'targetType' 欄位值不是 'objectReference'。
  • 由管理物件的設置方法拋出的 Exception。
ReflectionException - 套件裝試圖調用設置方法時拋出的 Exception
RuntimeOperationsException - 套件裝一個 IllegalArgumentException:參數中的屬性為 null。
另請參見:
getAttribute(java.lang.String)

setAttributes

public AttributeList setAttributes(AttributeList attributes)
設置此 ModelMBean 的屬性陣列的值。為列表中每個屬性執行 setAttribute() 方法。

指定者:
介面 DynamicMBean 中的 setAttributes
參數:
attributes - 屬性列表:要設置的屬性的標識和這些屬性要設置的值。
返回:
所設置的屬性陣列,以及 Attribute 實例中它們的新值。
拋出:
RuntimeOperationsException - 套件裝一個 IllegalArgumentException:參數中的物件名稱為 null,或參數中的屬性為 null。
另請參見:
getAttributes(java.lang.String[])

addNotificationListener

public void addNotificationListener(NotificationListener listener,
                                    NotificationFilter filter,
                                    Object handback)
                             throws IllegalArgumentException
註冊一個將 NotificationListener 介面實作為偵聽器的物件。當通過或由 ModelMBean 發佈任何通知時,將調用此物件的 'handleNotification()' 方法。這不包括 attributeChangeNotifications。它們必須獨立註冊。

指定者:
介面 NotificationBroadcaster 中的 addNotificationListener
參數:
listener - 將處理由已註冊的 MBean 發出的通知的偵聽器物件。
filter - 過濾器物件。如果為 null,則在處理通知之前將不執行過濾。
handback - 當發出通知時,要發送到帶有通知的偵聽器的上下文。
拋出:
IllegalArgumentException - 偵聽器不可以為 null。
另請參見:
removeNotificationListener(javax.management.NotificationListener)

removeNotificationListener

public void removeNotificationListener(NotificationListener listener)
                                throws ListenerNotFoundException
從 RequiredModelMBean 移除一個 Notification 的偵聽器。

指定者:
介面 NotificationBroadcaster 中的 removeNotificationListener
參數:
listener - 正在處理由註冊的 MBean 發出的通知的偵聽器名稱。此方法將移除與此偵聽器相關的所有資訊。
拋出:
ListenerNotFoundException - 偵聽器未在 MBean 中註冊,或為 null。
另請參見:
addNotificationListener(javax.management.NotificationListener, javax.management.NotificationFilter, java.lang.Object)

removeNotificationListener

public void removeNotificationListener(NotificationListener listener,
                                       NotificationFilter filter,
                                       Object handback)
                                throws ListenerNotFoundException
從介面 NotificationEmitter 複製的描述

從此 MBean 移除一個偵聽器。該 MBean 必須有一個與給定 listenerfilterhandback 參數完全比對的偵聽器。如果有多個此類別偵聽器,則只移除一個偵聽器。

當且僅當在要移除的偵聽器中 filterhandback 參數為 null 時,這兩個參數才可以為 null。

指定者:
介面 NotificationEmitter 中的 removeNotificationListener
參數:
listener - 以前添加到此 MBean 中的偵聽器。
filter - 添加偵聽器時指定的過濾器。
handback - 添加偵聽器時指定的回送。
拋出:
ListenerNotFoundException - 如果沒有在該 MBean 中註冊偵聽器,或者沒有用給定的過濾器和回送註冊它。

sendNotification

public void sendNotification(Notification ntfyObj)
                      throws MBeanException,
                             RuntimeOperationsException
從介面 ModelMBeanNotificationBroadcaster 複製的描述
以 jmx.modelmbean.generic 通知形式將傳入的 Notification 發送到 ModelMBean 上已註冊的 Notification 偵聽器。

指定者:
介面 ModelMBeanNotificationBroadcaster 中的 sendNotification
參數:
ntfyObj - 要傳遞給偵聽器物件的 'handleNotification' 方法的通知。
拋出:
MBeanException - 套件裝一個分佈式通信異常。
RuntimeOperationsException - 套件裝一個 IllegalArgumentException:傳入參數中的 Notification 物件為 null。

sendNotification

public void sendNotification(String ntfyText)
                      throws MBeanException,
                             RuntimeOperationsException
從介面 ModelMBeanNotificationBroadcaster 複製的描述
將包含傳入文本字元串的 Notification 發送到 ModelMBean 上已註冊的 Notification 偵聽器。

指定者:
介面 ModelMBeanNotificationBroadcaster 中的 sendNotification
參數:
ntfyText - Notification 中要傳遞到偵聽器物件的 'handleNotification' 方法的文本。 所建構的 Notification 將為: 型別 "jmx.modelmbean.generic" 源 此 ModelMBean 實例 序列 1
拋出:
MBeanException - 套件裝一個分佈式通信異常。
RuntimeOperationsException - 套件裝一個 IllegalArgumentException:傳入參數中的 Notification 文本字元串為 null。

getNotificationInfo

public MBeanNotificationInfo[] getNotificationInfo()
返回總是由 RequiredModelMBean 產生的 Notification 陣列。

RequiredModelMBean 還可能總是發送兩個其他通知:

因此這兩個通知總是被添加到由應用程序指定的通知中。

指定者:
介面 NotificationBroadcaster 中的 getNotificationInfo
返回:
MBeanNotificationInfo[]

addAttributeChangeNotificationListener

public void addAttributeChangeNotificationListener(NotificationListener inlistener,
                                                   String inAttributeName,
                                                   Object inhandback)
                                            throws MBeanException,
                                                   RuntimeOperationsException,
                                                   IllegalArgumentException
從介面 ModelMBeanNotificationBroadcaster 複製的描述
註冊一個將 NotificationListener 介面實作為偵聽器的物件。當通過或由 ModelMBean 發佈任何 attributeChangeNotification 時,將調用此物件的 'handleNotification()' 方法。這不包括其他 Notification。它們必須獨立註冊。將為此 attributeName 產生一個 AttributeChangeNotification。

指定者:
介面 ModelMBeanNotificationBroadcaster 中的 addAttributeChangeNotificationListener
參數:
inlistener - 將處理由已註冊的 MBean 發出的通知的偵聽器物件。
inAttributeName - 要為其接收更改通知的 ModelMBean 屬性名稱。如果參數為 null,則所有更改將導致發佈 attributeChangeNotification。
inhandback - 當發出通知時,要發送到帶有通知的偵聽器的上下文。
拋出:
MBeanException - 套件裝一個分佈式通信異常。
RuntimeOperationsException - 套件裝一個 IllegalArgumentException。傳入參數中的屬性名稱不存在。
IllegalArgumentException - 偵聽器不可以為 null。
另請參見:
ModelMBeanNotificationBroadcaster.removeAttributeChangeNotificationListener(javax.management.NotificationListener, java.lang.String)

removeAttributeChangeNotificationListener

public void removeAttributeChangeNotificationListener(NotificationListener inlistener,
                                                      String inAttributeName)
                                               throws MBeanException,
                                                      RuntimeOperationsException,
                                                      ListenerNotFoundException
從介面 ModelMBeanNotificationBroadcaster 複製的描述
從 RequiredModelMBean 移除一個 attributeChangeNotifications 的偵聽器。

指定者:
介面 ModelMBeanNotificationBroadcaster 中的 removeAttributeChangeNotificationListener
參數:
inlistener - 正在處理由註冊的 MBean 發出的通知的偵聽器名稱。此方法將移除與此偵聽器相關的所有資訊。
inAttributeName - 偵聽器不再為其接收 attributeChangeNotifications 的屬性。如果為 null,則將移除所有 attributeChangeNotifications 的偵聽器。
拋出:
MBeanException - 套件裝一個分佈式通信異常。
RuntimeOperationsException - 套件裝一個 IllegalArgumentException 如果 inAttributeName 參數沒有對應一個屬性名稱。
ListenerNotFoundException - 偵聽器未在 MBean 中註冊,或為 null。
另請參見:
ModelMBeanNotificationBroadcaster.addAttributeChangeNotificationListener(javax.management.NotificationListener, java.lang.String, java.lang.Object)

sendAttributeChangeNotification

public void sendAttributeChangeNotification(AttributeChangeNotification ntfyObj)
                                     throws MBeanException,
                                            RuntimeOperationsException
從介面 ModelMBeanNotificationBroadcaster 複製的描述
將傳入的 attributeChangeNotification 發送到 ModelMBean 上已註冊的 attributeChangeNotification 偵聽器。

指定者:
介面 ModelMBeanNotificationBroadcaster 中的 sendAttributeChangeNotification
參數:
ntfyObj - 要傳遞給偵聽器物件的 'handleNotification' 方法的通知。
拋出:
MBeanException - 套件裝一個分佈式通信異常。
RuntimeOperationsException - 套件裝一個 IllegalArgumentException:傳入參數中的 AttributeChangeNotification 物件為 null。

sendAttributeChangeNotification

public void sendAttributeChangeNotification(Attribute inOldVal,
                                            Attribute inNewVal)
                                     throws MBeanException,
                                            RuntimeOperationsException
從介面 ModelMBeanNotificationBroadcaster 複製的描述
將包含屬性的原有值和新值的 attributeChangeNotification 發送到 ModelMBean 上已註冊的 AttributeChangeNotification 偵聽器。

指定者:
介面 ModelMBeanNotificationBroadcaster 中的 sendAttributeChangeNotification
參數:
inOldVal - 屬性的原始值
inNewVal - 屬性的當前值

  
所建構的 attributeChangeNotification 將為:
型別     "jmx.attribute.change"
源      此 ModelMBean 實例
序列    1
   attributeName oldValue.getName()
   attributeType oldValue's class
   attributeOldValue oldValue.getValue()
   attributeNewValue newValue.getValue()
 
拋出:
MBeanException - 套件裝一個分佈式通信異常。
RuntimeOperationsException - 套件裝一個 IllegalArgumentException:傳入參數中的 Attribute 物件為 null,或參數中兩個 Attribute 物件的名稱不同。

getClassLoaderRepository

protected ClassLoaderRepository getClassLoaderRepository()
返回用於執行類別載入的 Class Loader Repository。子類別可能希望重新定義此方法,以便返回應在此物件中使用的適當 ClassLoaderRepository

返回:
類別載入器存儲資源庫。

preRegister

public ObjectName preRegister(MBeanServer server,
                              ObjectName name)
                       throws Exception
允許 MBean 在註冊到 MBean 伺服器之前執行任何所需要的操作。如果未指定 MBean 名稱,則 MBean 可以提供其註冊的名稱。如果引發任何異常,MBean 將不會註冊到 MBean 伺服器中。

為確保 RequireModelMBean 的運行時語義正確,重新載入或覆寫此方法的任何 RequiredModelMBean 的子類別都應在自己的 preRegister 實作中調用 super.preRegister(server, name)

指定者:
介面 MBeanRegistration 中的 preRegister
參數:
server - 將在其中註冊 MBean 的 MBean 伺服器。
name - MBean 的物件名稱。如果傳遞到 MBeanServer 介面中的 createMBeanregisterMBean 方法的名稱參數為 null,則此名稱為 null。在這種情況下,此方法必須返回新 MBean 的非 null ObjectName。
返回:
MBean 將註冊的名稱。此值必須不為 null。如果 name 參數不為 null,那麼它通常(但並非必要)是返回的值。
拋出:
Exception - 此異常由 MBean 伺服器捕獲,並以 MBeanRegistrationException 的形式重新拋出。

postRegister

public void postRegister(Boolean registrationDone)
允許 MBean 在已註冊到 MBean 伺服器之後或註冊失敗之後執行任何所需要的操作。

為確保 RequireModelMBean 的運行時語義正確,重新載入或覆寫此方法的任何 RequiredModelMBean 的子類別都應在自己的 postRegister 實作中調用 super.postRegister(registrationDone)

指定者:
介面 MBeanRegistration 中的 postRegister
參數:
registrationDone - 指示 MBean 是否已成功註冊到 MBean 伺服器中。值 false 意味著註冊失敗。

preDeregister

public void preDeregister()
                   throws Exception
允許 MBean 在由 MBean 伺服器註銷之前執行任何所需要的操作。

為確保 RequireModelMBean 的運行時語義正確,重新載入或覆寫此方法的任何 RequiredModelMBean 的子類別都應在自己的 preDeregister 實作中調用 super.preDeregister()

指定者:
介面 MBeanRegistration 中的 preDeregister
拋出:
Exception - 此異常由 MBean 伺服器捕獲,並以 MBeanRegistrationException 的形式重新拋出。

postDeregister

public void postDeregister()
允許 MBean 在已從 MBean 伺服器註銷之後執行任何所需要的操作。

為確保 RequireModelMBean 的運行時語義正確,重新載入或覆寫此方法的任何 RequiredModelMBean 的子類別都應在自己的 postDeregister 實作中調用 super.postDeregister()

指定者:
介面 MBeanRegistration 中的 postDeregister

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

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