JavaTM Platform
Standard Ed. 6

javax.management
クラス MBeanServerInvocationHandler

java.lang.Object
  上位を拡張 javax.management.MBeanServerInvocationHandler
すべての実装されたインタフェース:
InvocationHandler

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) の呼び出しにより someListList<String> から String[] に変換され、MBean オペレーション reverse が呼び出されると、返される String[]List<String> に変換されます。

Object.toString()、Object.hashCode()、または Object.equals(Object) メソッドが、この呼び出しハンドラを使ってプロキシ上で呼び出されると、そのメソッドがプロキシのインタフェースのいずれかに表示される場合のみ、プロキシ対象の MBean 上のメソッドとして MBean サーバーに渡されます。JMX.newMBeanProxy または JMX.newMXBeanProxy を使用して作成されたプロキシの場合、メソッドは Standard MBean または MXBean インタフェース上に表示される必要があります。それ以外の場合、これらのメソッドの動作は次のようになります。

導入されたバージョン:
1.5

コンストラクタの概要
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 サーバーから MBean へメソッドを渡すことにより、指定されたインタフェースを実装するプロキシを返します。
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

MBeanServerInvocationHandler

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 の名前

MBeanServerInvocationHandler

public MBeanServerInvocationHandler(MBeanServerConnection connection,
                                    ObjectName objectName,
                                    boolean isMXBean)

MBean サーバーから Standard MBean または MXBean にメソッドを渡すことができる呼び出しハンドラです。このコンストラクタは、たとえば、Proxy.newProxyInstance へ異なった ClassLoader を渡す場合に、JMX.newMXBeanProxy の代わりに呼び出されます。

パラメータ:
connection - MBean サーバー接続。これを介して、 このハンドラを使用するプロキシのメソッドがすべて渡される
objectName - メソッドが渡される MBean サーバー内部の MBean の名前
isMXBeantrue - の場合、プロキシは MXBean 用であり、適切なマッピングがメソッドパラメータと戻り値に適用される。
導入されたバージョン:
1.6
メソッドの詳細

getMBeanServerConnection

public MBeanServerConnection getMBeanServerConnection()

MBean サーバー接続。このハンドラを使用するプロキシのメソッドは、この接続を介して渡されます。<返された/p>

戻り値:
MBean サーバー接続
導入されたバージョン:
1.6

getObjectName

public ObjectName getObjectName()

メソッドの転送先の MBean サーバー内の MBean の名前。

戻り値:
オブジェクト名
導入されたバージョン:
1.6

isMXBean

public boolean isMXBean()

true の場合、プロキシは MXBean 用であり、適切なマッピングがメソッドパラメータおよび戻り値に適用されます。

戻り値:
プロキシが MXBean 用かどうか
導入されたバージョン:
1.6

newProxyInstance

public static <T> T newProxyInstance(MBeanServerConnection connection,
                                     ObjectName objectName,
                                     Class<T> interfaceClass,
                                     boolean notificationBroadcaster)

メソッドはこの MBean に渡される 指定の MBean サーバーから MBean へメソッドを渡すことにより、指定されたインタフェースを実装するプロキシを返します。1.6 では、JMX.newMBeanProxy(MBeanServerConnection, ObjectName, Class) および JMX.newMBeanProxy(MBeanServerConnection, ObjectName, Class, boolean) メソッドが、このメソッドよりも優先されます。

このメソッドは Proxy.newProxyInstance(interfaceClass.getClassLoader(), interfaces, handler) と同等です。handlernew MBeanServerInvocationHandler(connection, objectName) の結果です。interfaces は、notificationBroadcaster が false である場合に 1 つ要素を持ち、true である場合に 2 つ要素を持つ配列です。interfaces の最初の要素は interfaceClass、2 番目の要素は NotificationEmitter.class (存在する場合) です。

型パラメータ:
T - interfaceClass パラメータが MyMXBean.class であるかどうかをコンパイラに知らせる。 このパラメータが 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)

invoke

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 Platform
Standard Ed. 6

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。