クラス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インタフェース上に表示される必要があります。 それ以外の場合、これらのメソッドの動作は次のようになります。

  • toString()はプロキシの文字列表現を返します。
  • hashCode()は、2つの同等のプロキシが同じハッシュ・コードを持つように、プロキシのハッシュ・コードを返します。
  • equals(Object)は、Object引数がこのプロキシと同じプロキシ・クラスのものである場合にのみtrueを返します。その際、同じMBeanServerConnectionおよびObjectNameを持つMBeanServerInvocationHandlerを使用します。MBeanServerInvocationHandlerのいずれかがClass引数を使って構築された場合、equalsがtrueを返すためには、それ以外が同じClassを使って構築されている必要があります。

導入されたバージョン:
1.5
  • コンストラクタのサマリー

    コンストラクタ
    コンストラクタ
    説明
    MBeanサーバーからStandard MBeanにメソッドを渡す呼出しハンドラです。
    MBeanServerInvocationHandler(MBeanServerConnection connection, ObjectName objectName, boolean isMXBean)
    MBeanサーバーからStandard MBeanまたはMXBeanにメソッドを渡すことができる呼出しハンドラです。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    MBeanサーバー接続。このハンドラを使用するプロキシのメソッドは、この接続を介して渡されます。
    メソッドの転送先のMBeanサーバー内のMBeanの名前。
    invoke(Object proxy, Method method, Object[] args)
    プロキシ・インスタンスでメソッド呼出しを処理し、その結果を返します。
    boolean
    trueの場合、プロキシはMXBean用であり、適切なマッピングがメソッド・パラメータおよび戻り値に適用されます。
    static <T> T
    newProxyInstance(MBeanServerConnection connection, ObjectName objectName, Class<T> interfaceClass, boolean notificationBroadcaster)
    指定されたMBeanサーバーから指定されたMBeanへメソッドを渡すことにより、指定されたインタフェースを実装するプロキシを返します。

    クラスオブジェクトで宣言されたメソッド

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    修飾子と型
    メソッド
    説明
    protected Object
    このオブジェクトのコピーを作成して、返します。
    boolean
    このオブジェクトと他のオブジェクトが等しいかどうかを示します。
    protected void
    削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。
    最終決定は非推奨であり、将来のリリースで削除される可能性があります。
    final Class<?>
    このObjectの実行時クラスを返します。
    int
    このオブジェクトに対するハッシュ・コード値を返します。
    final void
    このオブジェクトのモニターで待機中のスレッドを1つ再開します。
    final void
    このオブジェクトのモニターで待機中のすべてのスレッドを再開します。
    オブジェクトの文字列表現を返します。
    final void
    現在のスレッドが目覚めるまで待機します。通常、notifiedまたはinterruptedです。
    final void
    wait(long timeoutMillis)
    現在のスレッドは、通常、notifiedまたはinterruptedであるか、一定のリアルタイムが経過するまで、目覚めるまで待機します。
    final void
    wait(long timeoutMillis, int nanos)
    現在のスレッドは、通常、notifiedまたはinterruptedであるか、一定のリアルタイムが経過するまで、目覚めるまで待機します。
  • コンストラクタの詳細

    • MBeanServerInvocationHandler

      public MBeanServerInvocationHandler(MBeanServerConnection connection, ObjectName objectName)

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

      このコンストラクタは、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の名前。
      isMXBean - trueの場合、プロキシはMXBean用であり、適切なマッピングがメソッド・パラメータと戻り値に適用される。
      導入されたバージョン:
      1.6
  • メソッドの詳細

    • getMBeanServerConnection

      public MBeanServerConnection getMBeanServerConnection()

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

      戻り値:
      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へメソッドを渡すことにより、指定されたインタフェースを実装するプロキシを返します。 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パラメータがMyMBean.classの場合(たとえば、戻り型がMyMBeanの場合)に、コンパイラが認識できるようにします。
      パラメータ:
      connection - 送信先のMBeanサーバー。
      objectName - connection内で渡されるMBeanの名前。
      interfaceClass - MBeanがエクスポートする管理インタフェース。これも返されるプロキシにより実装される。
      notificationBroadcaster - connection経由でメソッドを渡すことにより、返されたプロキシにNotificationEmitterを実装させる。 プロキシでNotificationBroadcaster.addNotificationListener(NotificationListener, NotificationFilter, Object)をコールすると、MBeanServerConnection.addNotificationListener(ObjectName, NotificationListener, NotificationFilter, Object)がコールされ、同様にNotificationBroadcasterおよびNotificationEmitterの他のメソッドもコールされます。
      戻り値:
      新しいプロキシのインスタンス。
      関連項目:
    • invoke

      public Object invoke(Object proxy, Method method, Object[] args) throws Throwable
      インタフェースからコピーされた説明: InvocationHandler
      プロキシ・インスタンスでメソッド呼出しを処理し、その結果を返します。 関連したプロキシ・インスタンスでメソッドが呼び出されると、このメソッドは呼出しハンドラで呼び出されます。
      定義:
      invoke、インタフェースInvocationHandler
      パラメータ:
      proxy - メソッドが呼び出されるプロキシ・インスタンス
      method - プロキシ・インスタンスで呼び出されるメソッドに対応するMethodインスタンス。Methodオブジェクトの宣言クラスは、プロキシ・インタフェース、そのスーパーインタフェースの1つ、またはObjectクラスです。
      args - プロキシ・インスタンスでのメソッド呼出しで渡された引数の値を含むオブジェクトの配列。または、呼び出されたメソッドが引数をとらない場合はnull プリミティブ型の引数は、java.lang.Integerjava.lang.Booleanなどの適切なプリミティブ・ラッパー・クラスのインスタンスにラップされる。
      戻り値:
      プロキシ・インスタンスでのメソッド呼出しからの戻り値。 起動されたメソッドの宣言された戻り型がプリミティブ型の場合、このメソッドによって返される値は、対応するプリミティブ・ラッパー・クラスのインスタンスである必要があります。そうでない場合は、宣言された戻り型に割り当てることができる型である必要があります。 このメソッドによって戻される値がnullで、呼び出されたメソッドの戻り型がプリミティブである場合、プロキシ・インスタンスでのメソッド呼出しによってNullPointerExceptionがスローされます。 このメソッドから戻された値に、前述のように呼び出されたメソッドの宣言された戻り型との互換性がない場合、プロキシ・インスタンスでのメソッド呼出しによってClassCastExceptionがスローされます。
      スロー:
      Throwable - プロキシ・インスタンスでのメソッド呼び出しからスローされる例外。 例外のタイプは、呼び出されたメソッドのthrows句で宣言された例外タイプ、またはチェックされていない例外タイプjava.lang.RuntimeExceptionまたはjava.lang.Errorのいずれかに割当て可能である必要があります。 呼び出されたメソッドのthrows句で宣言された例外タイプに割り当てられない例外がこのメソッドによってスローされた場合、このメソッドによってスローされた例外を含むUndeclaredThrowableExceptionは、プロキシ・インスタンスでのメソッド呼出しによってスローされます。
      関連項目: