|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
java.lang.Object javax.management.MBeanServerInvocationHandler
public class MBeanServerInvocationHandler
通過 MBean 伺服器將 MBean 的管理介面中的方法轉發到 MBean 的 InvocationHandler
。
在給出 MBeanServerConnection
、MBean 伺服器中某個 MBean 的 ObjectName
,以及一個 Java 介面 Intf
(它使用用於 Standard MBean 或 MXBean 的網要描述 MBean 的管理介面)的情況下,可以使用此類別建構 MBean 的代理。該代理實作了介面 Intf
,這樣就可以通過 MBean 伺服器向 MBean 轉發其所有方法。
如果將 InvocationHandler
用於 MXBean,那麼方法的參數會從 MXBean 介面中宣告的型別轉換為相應的映射型別,並將返回值從映射型別轉換為宣告的型別。例如,在使用了方法
public List<String> reverse(List<String> list);
並且已經知道 List<String>
的映射型別為 String[]
的情況下,調用 proxy.reverse(someList)
會將 someList
從 List<String>
轉換為 String[]
,調用 MBean 操作 reverse
,然後將返回的 String[]
轉換為 List<String>
。
當使用此調用處理程序對代理調用方法 Object.toString()、Object.hashCode() 和 Object.equals(Object) 時,僅當這些方法出現在一個代理介面中時,才將它們轉發到 MBean 伺服器。對於使用 JMX.newMBeanProxy
或 JMX.newMXBeanProxy
創建的代理而言,這意味著這些方法必須出現在 Standard MBean 或 MXBean 介面中。否則,這些方法具有以下行為:
MBeanServerInvocationHandler
是使用 Class
參數建構的,則要 equals
返回 true,另一個 MBeanServerInvocationHandler
必須是使用相同的 Class
參數建構的。
建構子摘要 | |
---|---|
MBeanServerInvocationHandler(MBeanServerConnection connection,
ObjectName objectName)
通過 MBean 伺服器將方法轉發給 Standard MBean 的調用處理程序。 |
|
MBeanServerInvocationHandler(MBeanServerConnection connection,
ObjectName objectName,
boolean isMXBean)
可以通過 MBean 伺服器將方法轉發給 Standard MBean 或 MXBean 的調用處理程序。 |
方法摘要 | ||
---|---|---|
MBeanServerConnection |
getMBeanServerConnection()
MBean 伺服器連接,使用此處理程序的代理的方法是通過此連接轉發的。 |
|
ObjectName |
getObjectName()
MBean 伺服器中 MBean 的名稱,一些方法將轉發到該 MBean。 |
|
Object |
invoke(Object proxy,
Method method,
Object[] args)
在代理實例上處理方法調用並返回結果。 |
|
boolean |
isMXBean()
如果為 true,則該代理適用於 MXBean,並將適當映射應用於方法參數和返回值。 |
|
static
|
newProxyInstance(MBeanServerConnection connection,
ObjectName objectName,
Class<T> interfaceClass,
boolean notificationBroadcaster)
返回一個代理,該代理通過將其方法從給定 MBean 伺服器轉發到指定 MBean 來實作給定的介面。 |
從類別 java.lang.Object 繼承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
建構子詳細資訊 |
---|
public MBeanServerInvocationHandler(MBeanServerConnection connection, ObjectName objectName)
通過 MBean 伺服器將方法轉發給 Standard MBean 的調用處理程序。此建構子可能被調用,而不是依賴於 JMX.newMBeanProxy
,例如在需要為 Proxy.newProxyInstance
提供一個不同的 ClassLoader
的情況下。
此建構子不適合 MXBean。為此請使用 MBeanServerInvocationHandler(MBeanServerConnection, ObjectName, boolean)
。此建構子等效於 new MBeanServerInvocationHandler(connection, objectName, false)
。
connection
- MBean 伺服器連接,通過此連接轉發所有使用此處理程序的代理方法。objectName
- MBean 伺服器中的 MBean 名稱,一些方法將轉發到該 MBean。public MBeanServerInvocationHandler(MBeanServerConnection connection, ObjectName objectName, boolean isMXBean)
可以通過 MBean 伺服器將方法轉發給 Standard MBean 或 MXBean 的調用處理程序。此建構子可能被調用,而不是依賴於 JMX.newMXBeanProxy
,例如在需要為 Proxy.newProxyInstance
提供一個不同的 ClassLoader
的情況下。
connection
- MBean 伺服器連接,通過此連接轉發所有使用此處理程序的代理方法。objectName
- MBean 伺服器中的 MBean 的名稱,一些方法將轉發到該 MBean。isMXBean
- 如果為 true,則代理適用於 MXBean
,並且將適當映射應用於方法參數和返回值。方法詳細資訊 |
---|
public MBeanServerConnection getMBeanServerConnection()
MBean 伺服器連接,使用此處理程序的代理的方法是通過此連接轉發的。
public ObjectName getObjectName()
MBean 伺服器中 MBean 的名稱,一些方法將轉發到該 MBean。
public boolean isMXBean()
如果為 true,則該代理適用於 MXBean,並將適當映射應用於方法參數和返回值。
public static <T> T newProxyInstance(MBeanServerConnection connection, ObjectName objectName, Class<T> interfaceClass, boolean notificationBroadcaster)
返回一個代理,該代理通過將其方法從給定 MBean 伺服器轉發到指定 MBean 來實作給定的介面。從 1.6 版本開始,方法 JMX.newMBeanProxy(MBeanServerConnection, ObjectName, Class)
和 JMX.newMBeanProxy(MBeanServerConnection, ObjectName, Class, boolean)
優先於此方法。
此方法等效於 Proxy.newProxyInstance
(interfaceClass.getClassLoader(), interfaces, handler)
。其中 handler
是 new MBeanServerInvocationHandler(connection, objectName)
的結果,而 interfaces
是一個陣列,如果 notificationBroadcaster
為 false,則該陣列有一個元素,如果為 true,則該陣列有兩個元素。interfaces
的第一個元素是 interfaceClass
,第二個(如果存在)是 NotificationEmitter.class
。
T
- 允許編譯器知道如果 interfaceClass
參數為 MyMBean.class
則返回型別為 MyMBean
。connection
- 要轉發到的目標 MBean 伺服器。objectName
- connection
中的 MBean 的名稱,各個方法將轉發到該 MBean。interfaceClass
- MBean 輸出的管理介面,也由返回的代理來實作。notificationBroadcaster
- 通過 connection
轉發所返回代理的方法,使該代理實作 NotificationEmitter
。在該代理上調用 NotificationBroadcaster.addNotificationListener(javax.management.NotificationListener, javax.management.NotificationFilter, java.lang.Object)
將導致對 MBeanServerConnection.addNotificationListener(ObjectName, NotificationListener, NotificationFilter, Object)
的調用,對於 NotificationBroadcaster
和 NotificationEmitter
的其他方法也是如此。
JMX.newMBeanProxy(MBeanServerConnection, ObjectName, Class)
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable
InvocationHandler
複製的描述
InvocationHandler
中的 invoke
proxy
- 在其上調用方法的代理實例method
- 對應於在代理實例上調用的介面方法的 Method
實例。Method
物件的宣告類別將是在其中宣告方法的介面,該介面可以是代理類別賴以繼承方法的代理介面的父級介面。args
- 套件含傳入代理實例上方法調用的參數值的物件陣列,如果介面方法不使用參數,則為 null
。基本型別的參數被包裹在適當基本外覆器類別(如 java.lang.Integer
或 java.lang.Boolean
)的實例中。
null
並且介面方法的返回型別是基本型別,則代理實例上的方法調用將拋出 NullPointerException
。否則,如果此方法返回的值與上述介面方法的宣告返回型別不相容,則代理實例上的方法調用將拋出 ClassCastException
。
Throwable
- 從代理實例上的方法調用拋出的異常。該異常的型別必須可以分派到在介面方法的 throws
子句中宣告的任一異常型別或未經檢查的異常型別 java.lang.RuntimeException
或 java.lang.Error
。如果此方法拋出經過檢查的異常,該異常不可分派到在介面方法的 throws
子句中宣告的任一異常型別,代理實例的方法調用將拋出包含此方法曾拋出的異常的 UndeclaredThrowableException
。UndeclaredThrowableException
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。