|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Object javax.management.MBeanServerInvocationHandler
public class MBeanServerInvocationHandler
MBean の管理インタフェース内で、MBean サーバから MBean にメソッドを渡す InvocationHandler
です。
MBeanServerConnection
、その MBean サーバ内の MBean の ObjectName
、および Standard MBean のパターンを使用する MBean の管理インタフェースを記述する Java インタフェース Intf
により、このクラスを使って MBean のプロキシを構築できます。プロキシは、すべてのメソッドが MBean サーバから MBean へ渡されるように、Intf
インタフェースを実装します。
MBean サーバ mbs
に ObjectName
name
を持つ MBean が含まれていて、MBean の管理インタフェースが Java インタフェース Intf
によって記述されている場合は、次のようにして MBean のプロキシを構築できます。
Intf proxy = (Intf)
MBeanServerInvocationHandler.newProxyInstance
(mbs,
name,
Intf.class,
false);
Intf
は、次のようになります。
public interface Intf { public String getSomeAttribute(); public void setSomeAttribute(String value); public void someOperation(String param1, int param2); }
これで、次の内容を実行できます。
proxy.getSomeAttribute()
- mbs.
getAttribute
(name, "SomeAttribute")
を呼び出す
proxy.getSomeAttribute()
- mbs.
getAttribute
(name, "SomeAttribute")
を呼び出す
proxy.someOperation("param1", 2)
- mbs.
invoke
(name, "someOperation", <etc>)
の呼び出しに変換される
newProxyInstance
の最後のパラメータが true
の場合、MBean は NotificationBroadcaster
または NotificationEmitter
と見なされ、NotificationEmitter
を実装するプロキシが返されます。このプロキシ上で NotificationBroadcaster.addNotificationListener(javax.management.NotificationListener, javax.management.NotificationFilter, java.lang.Object)
を呼び出すと、MBeanServerConnection.addNotificationListener(ObjectName, NotificationListener, NotificationFilter, Object)
が呼び出されます。NotificationBroadcaster
および NotificationEmitter
のその他のメソッドの場合も同様です。
この呼び出しハンドラにより、プロキシ上で Object.toString()
、Object.hashCode()
、および Object.equals(Object)
メソッドを呼び出すと、これらは、委任された MBean 上のメソッドとして MBean サーバに渡されます。ただし、このためには、MBean の管理インタフェースにこれらのメソッドが宣言されている必要があります。
コンストラクタの概要 | |
---|---|
MBeanServerInvocationHandler(MBeanServerConnection connection,
ObjectName objectName)
メソッドを MBean サーバから送信する呼び出しハンドラです。 |
メソッドの概要 | |
---|---|
Object |
invoke(Object proxy,
Method method,
Object[] args)
プロキシインスタンスでメソッド呼び出しを処理し、その結果を返します。 |
static Object |
newProxyInstance(MBeanServerConnection connection,
ObjectName objectName,
Class interfaceClass,
boolean notificationBroadcaster)
指定の MBean サーバから MBean へメソッドを渡すことにより、指定されたインタフェースを実装するプロキシを返します。 |
クラス java.lang.Object から継承されたメソッド |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
コンストラクタの詳細 |
---|
public MBeanServerInvocationHandler(MBeanServerConnection connection, ObjectName objectName)
メソッドを MBean サーバから送信する呼び出しハンドラです。このコンストラクタは、たとえば、Proxy.newProxyInstance
へ異なった ClassLoader
を渡したい場合に、newProxyInstance(javax.management.MBeanServerConnection, javax.management.ObjectName, java.lang.Class, boolean)
の代わりに呼び出されます。
connection
- MBean サーバ接続。このハンドラを使用するプロキシのすべてのメソッドは、この接続を介して渡されるobjectName
- MBean サーバ内の MBean の名前。メソッドはこの MBean に渡されるメソッドの詳細 |
---|
public static Object newProxyInstance(MBeanServerConnection connection, ObjectName objectName, Class interfaceClass, boolean notificationBroadcaster)
指定の MBean サーバから MBean へメソッドを渡すことにより、指定されたインタフェースを実装するプロキシを返します。
このメソッドは Proxy.newProxyInstance
(interfaceClass.getClassLoader(), interfaces, handler)
と同等です。handler
は new MBeanServerInvocationHandler(connection, objectName)
の結果です。interfaces
は、notificationBroadcaster
が false である場合に 1 つ要素を持ち、true である場合に 2 つ要素を持つ配列です。interfaces
の最初の要素は interfaceClass
、2 番目の要素は NotificationEmitter.class
(存在する場合) です。
connection
- 送信先の MBean サーバobjectName
- connection
内で渡される MBean の名前interfaceClass
- MBean がエクスポートする管理インタフェース。返されるプロキシも、これを実装するnotificationBroadcaster
- connection
からメソッドを送信することにより、返されるプロキシに NotificationEmitter
を実装させる
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 2 Platform Standard Ed. 5.0 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。