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

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

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

    • 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(javax.management.NotificationListener, javax.management.NotificationFilter, java.lang.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オブジェクトの宣言クラスは、このメソッドが宣言されたインタフェースです。プロキシ・クラスがメソッドを継承するプロキシ・インタフェースのスーパー・インタフェースのこともある。
      args - プロキシ・インスタンスでのメソッド呼出し時に渡される引数値を格納するオブジェクト配列。インタフェース・メソッドが引数を取らない場合はnull プリミティブ型の引数は、java.lang.Integerjava.lang.Booleanなどの適切なプリミティブ・ラッパー・クラスのインスタンスにラップされる。
      戻り値:
      プロキシ・インスタンスでのメソッド呼出しからの戻り値。 インタフェース・メソッドの宣言された戻り値の型がプリミティブ型の場合、このメソッドの戻り値は対応するプリミティブ・ラッパー・クラスのインスタンスである必要がある。それ以外の場合は、宣言された戻り値の型に割当て可能な型である必要がある。 このメソッドの戻り値がnullで、インタフェース・メソッドの戻り値がプリミティブ型の場合、NullPointerExceptionがプロキシ・インスタンスでのメソッド呼出しによってスローされる。 これ以外のケースで、このメソッドの戻り値と前述のようなインタフェース・メソッドの宣言された戻り値の型との間に互換性がない場合、ClassCastExceptionがプロキシ・インスタンスでのメソッド呼出しによってスローされる。
      例外:
      Throwable - プロキシ・インスタンスでのメソッド呼び出しからスローされる例外。 この例外のタイプは、インタフェース・メソッドのthrows節に宣言される例外タイプか、または、非チェック例外タイプのjava.lang.RuntimeExceptionまたはjava.lang.Errorに割り当てられなければならない。 このメソッドによってスローされるチェック例外が、インタフェース・メソッドのthrows節に宣言された例外タイプに割り当てられない場合、このメソッドがスローした例外を格納するUndeclaredThrowableExceptionがプロキシ・インスタンスでのメソッド呼出しによってスローされることになる。
      関連項目: