public class MBeanServerInvocationHandler extends Object implements InvocationHandler
MBean の管理インタフェースに含まれるメソッドを MBean サーバー経由で MBean に転送する InvocationHandler
です。
MBeanServerConnection
、その MBean サーバー内の MBean の ObjectName
、および Standard MBean や MXBean のパターンを使用する MBean の管理インタフェースを記述する Java インタフェース Intf
により、このクラスを使って MBean のプロキシを構築できます。プロキシは、すべてのメソッドが MBean サーバーから MBean へ渡されるように、Intf
インタフェースを実装します。
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 上のメソッドとして MBean サーバーに渡されます。JMX.newMBeanProxy
または JMX.newMXBeanProxy
を使用して作成されたプロキシの場合、メソッドは Standard MBean または MXBean インタフェース上に表示される必要があります。それ以外の場合、これらのメソッドの動作は次のようになります。
MBeanServerInvocationHandler
のいずれかが Class
引数を使って構築された場合、equals
が true を返すためには、それ以外が同じ 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 の名前。
|
Object |
invoke(Object proxy, Method method, Object[] args)
プロキシインスタンスでメソッド呼び出しを処理し、その結果を返します。
|
boolean |
isMXBean()
true の場合、プロキシは MXBean 用であり、適切なマッピングがメソッドパラメータおよび戻り値に適用されます。
|
static <T> T |
newProxyInstance(MBeanServerConnection connection, ObjectName objectName, Class<T> interfaceClass, boolean notificationBroadcaster)
指定された MBean サーバーから指定された MBean へメソッドを渡すことにより、指定されたインタフェースを実装するプロキシを返します。
|
public MBeanServerInvocationHandler(MBeanServerConnection connection, ObjectName objectName)
MBean サーバーから Standard MBean にメソッドを渡す呼び出しハンドラです。このコンストラクタは、たとえば、Proxy.newProxyInstance
へ異なった ClassLoader
を渡す場合に、JMX.newMBeanProxy
の代わりに呼び出されます。
このコンストラクタは、MXBean には適していません。MXBean には MBeanServerInvocationHandler(MBeanServerConnection, ObjectName, boolean)
を使用してください。このコンストラクタは new MBeanServerInvocationHandler(connection, objectName, false)
と同等です。
connection
- MBean サーバー接続。これを介して、このハンドラを使用するプロキシのメソッドがすべて渡される。objectName
- メソッドが渡される MBean サーバー内部の MBean の名前。public MBeanServerInvocationHandler(MBeanServerConnection connection, ObjectName objectName, boolean isMXBean)
MBean サーバーから Standard MBean または MXBean にメソッドを渡すことができる呼び出しハンドラです。このコンストラクタは、たとえば、Proxy.newProxyInstance
へ異なった ClassLoader
を渡す場合に、JMX.newMXBeanProxy
の代わりに呼び出されます。
connection
- MBean サーバー接続。これを介して、このハンドラを使用するプロキシのメソッドがすべて渡される。objectName
- メソッドが渡される MBean サーバー内部の MBean の名前。isMXBean
- true の場合、プロキシは MXBean
用であり、適切なマッピングがメソッドパラメータと戻り値に適用される。public MBeanServerConnection getMBeanServerConnection()
MBean サーバー接続。このハンドラを使用するプロキシのメソッドは、この接続を介して渡されます。
public ObjectName getObjectName()
メソッドの転送先の MBean サーバー内の MBean の名前。
public boolean isMXBean()
true の場合、プロキシは MXBean 用であり、適切なマッピングがメソッドパラメータおよび戻り値に適用されます。
public static <T> T newProxyInstance(MBeanServerConnection connection, ObjectName objectName, Class<T> interfaceClass, boolean notificationBroadcaster)
指定された MBean サーバーから指定された MBean へメソッドを渡すことにより、指定されたインタフェースを実装するプロキシを返します。JDK Version 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 である場合に 1 つ要素を持ち、true である場合に 2 つ要素を持つ配列です。interfaces
の最初の要素は interfaceClass
、2 番目の要素は NotificationEmitter.class
(存在する場合) です。
T
- たとえば、interfaceClass
パラメータが MyMBean.class
であれば、戻り値の型は MyMBean
になることをコンパイラに知らせる。connection
- 送信先の MBean サーバー。objectName
- connection
内で渡される 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
invoke
、インタフェース: InvocationHandler
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
バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.