|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
java.lang.Object javax.management.StandardMBean
public class StandardMBean
一個管理介面由 Java 介面上的反射確定的 MBean。
在 Standard MBean 的使用中,此類別為“管理介面”這一概念提供了更多靈活性。直接使用 JMX 規範中介紹的 Standard MBean 網要意味著在 MBean 的實作類別與其管理介面之間存在著固定的關係(即如果實作類別是 Thing,則管理介面必須是 ThingMBean)。此類別能夠保留指定帶有 Java 介面的管理介面這一便捷性,同時無需在實作與介面類別之間存在任何命名關係。
通過從 MBean 中產生 DynamicMBean,此類別能夠選擇任何由 MBean 實作的介面作為其管理介面,但前提是它必須遵守 JMX 網要(即由獲取方法/設置方法等定義的屬性)。
此類別還提供了一些鉤子,從而能夠為由 DynamicMBean 介面返回的 MBeanInfo
提供自定義描述和名稱。
通過使用此類別,可以使用以下兩種常規方法之一創建 MBean,使用任何實作類別名 Impl、由任何介面 Intf 定義的管理介面(就當前 Standard MBean 而言)作為參數:
StandardMBean(impl、interface)
:
MBeanServer mbs; ... Impl impl = new Impl(...); StandardMBean mbean = new StandardMBean(impl, Intf.class, false); mbs.registerMBean(mbean, objectName);
public class Impl extends StandardMBean implements Intf { public Impl() { super(Intf.class, false); } // implement methods of Intf } [...] MBeanServer mbs; .... Impl impl = new Impl(); mbs.registerMBean(impl, objectName);
在任何一種情況下,類別 Impl 都必須實作介面 Intf。
當然,基於實作和介面類別之間的命名關係的 Standard MBean 仍然可用。
此類別也可以用來建構 MXBean。用法與建構 Standard MBean 完全相同,唯一的不同之處在於,上例中的建構子或 super(...)
調用使用的是 false
參數,而不是 true
參數。
建構子摘要 | |
---|---|
protected |
StandardMBean(Class<?> mbeanInterface)
使用指定的 mbeanInterface 類別從 this 中產生 DynamicMBean。 |
protected |
StandardMBean(Class<?> mbeanInterface,
boolean isMXBean)
使用指定的 mbeanInterface 類別從 this 中產生 DynamicMBean。 |
|
StandardMBean(T implementation,
Class<T> mbeanInterface)
使用指定的 mbeanInterface 類別從物件 implementation 中產生 DynamicMBean。 |
|
StandardMBean(T implementation,
Class<T> mbeanInterface,
boolean isMXBean)
使用指定的 mbeanInterface 類別從物件 implementation 中產生 DynamicMBean。 |
方法摘要 | |
---|---|
protected void |
cacheMBeanInfo(MBeanInfo info)
自定義鉤子:快取記憶體為此物件建構的 MBeanInfo。 |
Object |
getAttribute(String attribute)
獲得 Dynamic MBean 的特定屬性的值。 |
AttributeList |
getAttributes(String[] attributes)
獲得 Dynamic MBean 多個屬性的值。 |
protected MBeanInfo |
getCachedMBeanInfo()
自定義鉤子:返回為此物件快取記憶體的 MBeanInfo。 |
protected String |
getClassName(MBeanInfo info)
自定義鉤子:獲取將在由此 MBean 返回的 MBeanInfo 中使用的 className。 |
protected MBeanConstructorInfo[] |
getConstructors(MBeanConstructorInfo[] ctors,
Object impl)
自定義鉤子:獲取將在由此 MBean 返回的 MBeanInfo 中使用的 MBeanConstructorInfo[]。 |
protected String |
getDescription(MBeanAttributeInfo info)
自定義鉤子:獲取將在由此 MBean 返回的 MBeanAttributeInfo 中使用的描述。 |
protected String |
getDescription(MBeanConstructorInfo info)
自定義鉤子:獲取將在由此 MBean 返回的 MBeanConstructorInfo 中使用的描述。 |
protected String |
getDescription(MBeanConstructorInfo ctor,
MBeanParameterInfo param,
int sequence)
自定義鉤子:獲取將用於由此 MBean 返回的 MBeanConstructorInfo 的第 sequence 個 BeanParameterInfo 的描述。 |
protected String |
getDescription(MBeanFeatureInfo info)
自定義鉤子:獲取將在由此 MBean 返回的 MBeanFeatureInfo 中使用的描述。 |
protected String |
getDescription(MBeanInfo info)
自定義鉤子:獲取將在由此 MBean 返回的 MBeanInfo 中使用的描述。 |
protected String |
getDescription(MBeanOperationInfo info)
自定義鉤子:獲取將在由此 MBean 返回的 MBeanOperationInfo 中使用的描述。 |
protected String |
getDescription(MBeanOperationInfo op,
MBeanParameterInfo param,
int sequence)
自定義鉤子:獲取將用於由此 MBean 返回的 MBeanOperationInfo 的第 sequence 個 MBeanParameterInfo 的描述。 |
protected int |
getImpact(MBeanOperationInfo info)
自定義鉤子:獲取將在由此 MBean 返回的 MBeanOperationInfo 中使用的操作的 impact 標誌。 |
Object |
getImplementation()
獲取此 Standard MBean(或 MXBean)的實作。 |
Class<?> |
getImplementationClass()
獲取此 Standard MBean(或 MXBean)的實作類別。 |
MBeanInfo |
getMBeanInfo()
獲取此 MBean 的 MBeanInfo 。 |
Class<?> |
getMBeanInterface()
獲取此 Standard MBean(或 MXBean)的管理介面。 |
protected String |
getParameterName(MBeanConstructorInfo ctor,
MBeanParameterInfo param,
int sequence)
自定義鉤子:獲取將用於由此 MBean 返回的 MBeanConstructorInfo 的第 sequence 個 BeanParameterInfo 的名稱。 |
protected String |
getParameterName(MBeanOperationInfo op,
MBeanParameterInfo param,
int sequence)
自定義鉤子:獲取將用於由此 MBean 返回的 MBeanOperationInfo 的第 sequence 個 MBeanParameterInfo 的名稱。 |
Object |
invoke(String actionName,
Object[] params,
String[] signature)
允許在 Dynamic MBean 上調用某個操作。 |
void |
postDeregister()
允許 MBean 在 MBean 伺服器中取消註冊後執行任何它所需要的操作。 |
void |
postRegister(Boolean registrationDone)
允許 MBean 在已註冊到 MBean 伺服器之後或註冊已失敗之後執行任何它所需要的操作。 |
void |
preDeregister()
允許 MBean 由 MBean 伺服器取消註冊前執行任何它所需要的操作。 |
ObjectName |
preRegister(MBeanServer server,
ObjectName name)
允許 MBean 在 MBean 伺服器中註冊之前執行任何它所需要的操作。 |
void |
setAttribute(Attribute attribute)
設置 Dynamic MBean 的特定屬性的值。 |
AttributeList |
setAttributes(AttributeList attributes)
設置 Dynamic MBean 多個屬性的值。 |
void |
setImplementation(Object implementation)
替換包裹在此物件中的實作物件。 |
從類別 java.lang.Object 繼承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
建構子詳細資訊 |
---|
public StandardMBean(T implementation, Class<T> mbeanInterface) throws NotCompliantMBeanException
使用指定的 mbeanInterface 類別從物件 implementation 中產生 DynamicMBean。
T
- 允許編譯器檢查 implementation
是否確實實作了 mbeanInterface
描述的類別。編譯器只在 mbeanInterface
是 MyMBean.class
之類別的類別文字值時才能進行檢查。implementation
- 此 MBean 的實作。mbeanInterface
- 由此 MBean 實作導出的管理介面。如果為 null
,則此物件將使用標準 JMX 設計網要來確定與指定實作關聯的管理介面。
IllegalArgumentException
- 如果給定的 implementation 為 null
NotCompliantMBeanException
- 如果 mbeanInterface 不遵守管理介面的 JMX 設計網要,或者給定的 implementation 沒有實作指定的介面。protected StandardMBean(Class<?> mbeanInterface) throws NotCompliantMBeanException
使用指定的 mbeanInterface 類別從 this 中產生 DynamicMBean。
調用 this(this、mbeanInterface)
。此建構子是為子類別保留的。
mbeanInterface
- 由此 MBean 導出的管理介面。
NotCompliantMBeanException
- 如果 mbeanInterface 不遵從管理介面的 JMX 設計網要,或者 this 沒有實作指定的介面。public StandardMBean(T implementation, Class<T> mbeanInterface, boolean isMXBean)
使用指定的 mbeanInterface 類別從物件 implementation 中產生 DynamicMBean。此建構子可以用來產生 Standard MBean 或 MXBean。與建構子 StandardMBean(Object, Class)
不同,它不拋出 NotCompliantMBeanException。
T
- 允許編譯器查看 implementation
是否確實實作了 mbeanInterface
描述的類別。編譯器只在 mbeanInterface
是 MyMBean.class
之類別的類別文字值時才能進行檢查。implementation
- 此 MBean 的實作。mbeanInterface
- 由此 MBean 實作導出的管理介面。如果為 null
,則此物件將使用標準 JMX 設計網要來確定與指定實作關聯的管理介面。isMXBean
- 如果為 true,則 mbeanInterface
參數表示 MXBean 介面,得到的 MBean 是一個 MXBean。
IllegalArgumentException
- 如果給定的 implementation 為 null;或者 mbeanInterface 不遵守管理介面的 JMX 設計網要;或者給定的 implementation 沒有實作指定的介面。protected StandardMBean(Class<?> mbeanInterface, boolean isMXBean)
使用指定的 mbeanInterface 類別從 this 中產生 DynamicMBean。此建構子可以用來產生 Standard MBean 或 MXBean。與建構子 StandardMBean(Object, Class)
不同,它不拋出 NotCompliantMBeanException。
調用 this(this, mbeanInterface, isMXBean)
。此建構子是為子類別保留的。
mbeanInterface
- 由此 MBean 導出的管理介面。isMXBean
- 如果為 true,則 mbeanInterface
參數表示 MXBean 介面,得到的 MBean 是一個 MXBean。
IllegalArgumentException
- 如果 mbeanInterface 不遵從管理介面的 JMX 設計網要,或者 this 沒有實作指定的介面。方法詳細資訊 |
---|
public void setImplementation(Object implementation) throws NotCompliantMBeanException
替換包裹在此物件中的實作物件。
implementation
- 此 Standard MBean(或 MXBean)的新實作。implementation
物件必須實作建構此 StandardMBean
時提供的 Standard MBean(或 MXBean)介面。
IllegalArgumentException
- 如果給定的 implementation 為 null
NotCompliantMBeanException
- 如果給定的 implementation 沒有實作建構時提供的 Standard MBean(或 MXBean)介面。getImplementation()
public Object getImplementation()
setImplementation(java.lang.Object)
public final Class<?> getMBeanInterface()
public Class<?> getImplementationClass()
public Object getAttribute(String attribute) throws AttributeNotFoundException, MBeanException, ReflectionException
DynamicMBean
複製的描述
DynamicMBean
中的 getAttribute
attribute
- 要檢索的屬性名
AttributeNotFoundException
MBeanException
- 套件裝由 MBean 的獲取方法所拋出的 java.lang.Exception
。
ReflectionException
- 套件裝試圖調用獲取方法時所拋出的 java.lang.Exception
。DynamicMBean.setAttribute(javax.management.Attribute)
public void setAttribute(Attribute attribute) throws AttributeNotFoundException, InvalidAttributeValueException, MBeanException, ReflectionException
DynamicMBean
複製的描述
DynamicMBean
中的 setAttribute
attribute
- 要設置的屬性的標識及其要設置成的值。
AttributeNotFoundException
InvalidAttributeValueException
MBeanException
- 套件裝由 MBean 的設置方法所拋出的 java.lang.Exception
。
ReflectionException
- 套件裝試圖調用設置方法時所拋出的 java.lang.Exception
。DynamicMBean.getAttribute(java.lang.String)
public AttributeList getAttributes(String[] attributes)
DynamicMBean
複製的描述
DynamicMBean
中的 getAttributes
attributes
- 要檢索的屬性列表。
DynamicMBean.setAttributes(javax.management.AttributeList)
public AttributeList setAttributes(AttributeList attributes)
DynamicMBean
複製的描述
DynamicMBean
中的 setAttributes
attributes
- 屬性列表:要設置的屬性的標識及其要設置成的值。
DynamicMBean.getAttributes(java.lang.String[])
public Object invoke(String actionName, Object[] params, String[] signature) throws MBeanException, ReflectionException
DynamicMBean
複製的描述
DynamicMBean
中的 invoke
actionName
- 要調用的操作的名稱。params
- 一個陣列,包含調用該操作時所要設置的參數。signature
- 套件含操作簽章的陣列。載入類別物件時,使用的類別載入器與載入在其上調用操作的 MBean 所用的類別載入器相同。
MBeanException
- 套件裝由 MBean 上所調用的方法拋出的 java.lang.Exception
。
ReflectionException
- 套件裝試圖調用該方法時所拋出的 java.lang.Exception
。public MBeanInfo getMBeanInfo()
MBeanInfo
。
此方法實作了 DynamicMBean.getMBeanInfo()
。
此方法首先調用 getCachedMBeanInfo()
,以便檢索此 MBean 的快取記憶體 MBeanInfo(如果有)。如果由 getCachedMBeanInfo()
返回的 MBeanInfo 不為 null,則將其返回。
否則,此方法將使用為此 MBean 指定的管理介面建構此 MBean 的預設 MBeanInfo。
在建構 MBeanInfo 時,此方法將調用一些自定義鉤子,這些鉤子使子類別能夠提供其自定義描述、參數名稱等。
最後,它將調用 cacheMBeanInfo()
,以便快取記憶體新的 MBeanInfo。
DynamicMBean
中的 getMBeanInfo
protected String getClassName(MBeanInfo info)
info.getClassName()
。
info
- 通過反射派生的預設 MBeanInfo。
protected String getDescription(MBeanInfo info)
info.getDescription()
。
info
- 通過反射派生的預設 MBeanInfo。
protected String getDescription(MBeanFeatureInfo info)
自定義鉤子:獲取將在由此 MBean 返回的 MBeanFeatureInfo 中使用的描述。
子類別可以重定義此方法來提供其自定義描述。預設實作返回 info.getDescription()
。
此方法將由 getDescription(MBeanAttributeInfo)
、getDescription(MBeanOperationInfo)
、getDescription(MBeanConstructorInfo)
調用。
info
- 通過反射派生的預設 MBeanFeatureInfo。
protected String getDescription(MBeanAttributeInfo info)
子類別可以重定義此方法來提供其自定義描述。預設實作返回 getDescription((MBeanFeatureInfo) info)
。
info
- 通過反射派生的預設 MBeanAttributeInfo。
protected String getDescription(MBeanConstructorInfo info)
getDescription((MBeanFeatureInfo) info)
。
info
- 通過反射派生的預設 MBeanConstructorInfo。
protected String getDescription(MBeanConstructorInfo ctor, MBeanParameterInfo param, int sequence)
param.getDescription()
。
ctor
- 通過反射派生的預設 MBeanConstructorInfo。param
- 通過反射派生的預設 MBeanParameterInfo。sequence
- 要考慮的參數序列號("0" 是第一個參數,"1" 是第二個參數,依此類別推)。
protected String getParameterName(MBeanConstructorInfo ctor, MBeanParameterInfo param, int sequence)
param.getName()
。
ctor
- 通過反射派生的預設 MBeanConstructorInfo。param
- 通過反射派生的預設 MBeanParameterInfo。sequence
- 要考慮的參數序列號("0" 是第一個參數,"1" 是第二個參數,依此類別推)。
protected String getDescription(MBeanOperationInfo info)
getDescription((MBeanFeatureInfo) info)
。
info
- 通過反射派生的預設 MBeanOperationInfo。
protected int getImpact(MBeanOperationInfo info)
info.getImpact()
。
info
- 通過反射派生的預設 MBeanOperationInfo。
protected String getParameterName(MBeanOperationInfo op, MBeanParameterInfo param, int sequence)
param.getName()
。
op
- 通過反射派生的預設 MBeanOperationInfo。param
- 通過反射派生的預設 MBeanParameterInfo。sequence
- 要考慮的參數序列號("0" 是第一個參數,"1" 是第二個參數,依此類別推)。
protected String getDescription(MBeanOperationInfo op, MBeanParameterInfo param, int sequence)
param.getDescription()
。
op
- 通過反射派生的預設 MBeanOperationInfo。param
- 通過反射派生的預設 MBeanParameterInfo。sequence
- 要考慮的參數序列號("0" 是第一個參數,"1" 是第二個參數,依此類別推)。
protected MBeanConstructorInfo[] getConstructors(MBeanConstructorInfo[] ctors, Object impl)
null
。實際上,如果包裹實作不是此物件自身,則不可能通過 MBeanServer.createMBean(...)
調用實作建構子來重新創建一個套件裝實作。
ctors
- 通過反射派生的預設 MBeanConstructorInfo[]。impl
- 套件裝實作。如果傳遞了 null
,則包裹實作將被忽略,並且返回 ctors。
protected MBeanInfo getCachedMBeanInfo()
子類別可以重定義此方法來實作自己的快取記憶體策略。預設實作為每個實例存儲一個 MBeanInfo
物件。
cacheMBeanInfo(MBeanInfo)
protected void cacheMBeanInfo(MBeanInfo info)
子類別可以重定義此方法來實作自己的快取記憶體策略。預設實作將 info
存儲在此實例中。子類別可以定義其他策略,如不保存 info
(從而每次調用 getMBeanInfo()
時都將重新建構它)或者當幾個 StandardMBean
實例具有相等的 MBeanInfo
值時共享唯一的 MBeanInfo
物件。
info
- 要快取記憶體的新 MBeanInfo
。丟棄任何以前快取記憶體的值。此參數可以為 null,在此情況下,沒有任何新的快取記憶體值。public ObjectName preRegister(MBeanServer server, ObjectName name) throws Exception
允許 MBean 在 MBean 伺服器中註冊之前執行任何它所需要的操作。如果未指定 MBean 的名稱,則該 MBean 可以提供一個註冊名稱。如果引發任何異常,則該 MBean 不會被註冊到 MBean 伺服器中。
此方法的預設實作返回預設 name
參數。對於 Standard MBean,它不再執行其他操作。對於 MXBean,它記錄 MBeanServer
和 ObjectName
參數,以供轉換內部 MXBean 參考時使用。
對於子類別,一個很好的做法是覆寫此方法,從而通過 super.preRegister(...)
調用覆寫的方法。如果此物件是其他 MXBean 中的屬性或操作所參考的 MXBean,則此操作是必需的。
MBeanRegistration
中的 preRegister
server
- 將在其中註冊該 MBean 的 MBean 伺服器。name
- MBean 的物件名。如果 MBeanServer
介面中的某個 createMBean
方法或 registerMBean
方法的 name 參數為 null,則此 name 也為 null。在這種情況下,此方法必須為新 MBean 返回非 null 的 ObjectName。
name
參數不為 null,則它通常(但並非一定)為返回值。
IllegalArgumentException
- 如果此物件為 MXBean 且 name
為 null。
InstanceAlreadyExistsException
- 如果此物件為 MXBean,且已經用(此 MBean Server 或其他 MBean Server 中的)另一個名稱註冊。
Exception
- 此方法不拋出其他經過檢查的異常,在這裡宣告 Exception
是為了供子類別覆寫該方法並拋出它們的異常。public void postRegister(Boolean registrationDone)
允許 MBean 在已註冊到 MBean 伺服器之後或註冊已失敗之後執行任何它所需要的操作。
對於 Standard MBean,此方法的預設實作不再執行任何操作。對於 MXBean,如果註冊失敗,它取消所有 preRegister
已完成的操作。
對於子類別,一個很好的做法是覆寫此方法,從而通過 super.postRegister(...)
調用覆寫的方法。
如果此物件是其他 MXBean 中的屬性或操作所參考的 MXBean,則此操作是必需的。
MBeanRegistration
中的 postRegister
registrationDone
- 指示該 MBean 是否已在 MBean 伺服器中成功註冊。false 值意味著註冊階段已失敗。public void preDeregister() throws Exception
允許 MBean 由 MBean 伺服器取消註冊前執行任何它所需要的操作。
此方法的預設實作不執行任何操作。
對於子類別,一個很好的做法是覆寫此方法,從而通過 super.preDeegister(...)
調用覆寫的方法。
MBeanRegistration
中的 preDeregister
Exception
- 此方法不拋出經過檢查的異常,這裡宣告 Exception
是為了供子類別覆寫該方法並拋出它們的異常。public void postDeregister()
允許 MBean 在 MBean 伺服器中取消註冊後執行任何它所需要的操作。
對於 Standard MBean,此方法的預設實作不再執行任何操作。對於 MXBean,它移除 preRegister
方法記錄的所有資訊。
對於子類別,一個很好的做法是覆寫此方法,從而通過 super.postRegister(...)
調用覆寫的方法。如果此物件是其他 MXBean 中的屬性或操作所參考的 MXBean,則此操作是必需的。
MBeanRegistration
中的 postDeregister
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。