- すべての実装されたインタフェース:
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インタフェース上に表示される必要があります。 それ以外の場合、これらのメソッドの動作は次のようになります。
- toString()はプロキシの文字列表現を返します。
- hashCode()は、2つの同等のプロキシが同じハッシュ・コードを持つように、プロキシのハッシュ・コードを返します。
- equals(Object)は、Object引数がこのプロキシと同じプロキシ・クラスのものである場合にのみtrueを返します。その際、同じMBeanServerConnectionおよびObjectNameを持つMBeanServerInvocationHandlerを使用します。
MBeanServerInvocationHandler
のいずれかがClass
引数を使って構築された場合、equals
がtrueを返すためには、それ以外が同じClass
を使って構築されている必要があります。
- 導入されたバージョン:
- 1.5
-
コンストラクタのサマリー
コンストラクタ説明MBeanServerInvocationHandler
(MBeanServerConnection connection, ObjectName objectName) MBeanサーバーからStandard MBeanにメソッドを渡す呼出しハンドラです。MBeanServerInvocationHandler
(MBeanServerConnection connection, ObjectName objectName, boolean isMXBean) MBeanサーバーからStandard MBeanまたはMXBeanにメソッドを渡すことができる呼出しハンドラです。 -
メソッドのサマリー
修飾子と型メソッド説明MBeanサーバー接続。このハンドラを使用するプロキシのメソッドは、この接続を介して渡されます。メソッドの転送先のMBeanサーバー内のMBeanの名前。プロキシ・インスタンスでメソッド呼出しを処理し、その結果を返します。boolean
isMXBean()
trueの場合、プロキシはMXBean用であり、適切なマッピングがメソッド・パラメータおよび戻り値に適用されます。static <T> T
newProxyInstance
(MBeanServerConnection connection, ObjectName objectName, Class<T> interfaceClass, boolean notificationBroadcaster) 指定されたMBeanサーバーから指定されたMBeanへメソッドを渡すことにより、指定されたインタフェースを実装するプロキシを返します。
-
コンストラクタの詳細
-
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
-
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)
と同等です。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
のその他のメソッドの場合も同様。- 戻り値:
- 新しいプロキシのインスタンス。
- 関連項目:
-
invoke
インタフェースからコピーされた説明: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
がプロキシ・インスタンスでのメソッド呼出しによってスローされることになる。- 関連項目:
-