|
JavaTM Platform Standard Ed. 6 |
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
java.lang.Objectjavax.management.MBeanServerInvocationHandler
public class MBeanServerInvocationHandler
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
|
newProxyInstance(MBeanServerConnection connection,
ObjectName objectName,
Class<T> interfaceClass,
boolean notificationBroadcaster)
メソッドはこの MBean に渡される 指定の 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 にメソッドを渡す呼び出しハンドラです。このコンストラクタは、たとえば、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 - の場合、プロキシは 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 サーバーから MBean へメソッドを渡すことにより、指定されたインタフェースを実装するプロキシを返します。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 の記述:
InvocationHandler 内の invokeproxy - メソッドが呼び出されるプロキシインスタンス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 Platform Standard Ed. 6 |
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
Copyright 2009 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。