public class StandardMBean extends Object implements DynamicMBean, MBeanRegistration
Javaインタフェースのリフレクションによって管理インタフェースを決定するMBeanです。
このクラスは、Standard MBeanの使用における管理インタフェースの概念の柔軟性を向上させます。JMX仕様に説明されているStandard MBeanのパターンの単純な使用方法には、MBeanの実装クラスと管理インタフェース間に固定した関係があると説明されています(つまり、実装クラスがThingの場合、管理インタフェースはThingMBeanでなければならない)。このクラスは、実装クラスとインタフェース・クラス間の名前の関連性を必要とせず、Javaインタフェースによる管理インタフェースの指定に役立ちます。
MBeanからDynamicMBeanを作成することにより、このクラスは、MBeanが実装する任意のインタフェースを管理インタフェースとして選択できます。ただし、JMXパターンに準拠するインタフェースである必要があります(取得メソッドまたは設定メソッドによって定義された属性など)。
このクラスは、DynamicMBeanインタフェースから返されるMBeanInfo
にカスタムの記述と名前を割り当てることができるフックも提供します。
このクラスを使って、任意の実装クラス名Implと、任意のインタフェースIntfで定義された管理インタフェース(現在のStandard MBean用)を指定してMBeanを作成できます。一般に、次のいずれかの作成方法を選択します。
StandardMBean(impl,interface)
を使用
MBeanServer mbs; ... Impl impl = new Impl(...); StandardMBean mbean = new StandardMBean(impl, Intf.class, false); mbs.registerMBean(mbean, objectName);
public class Impl extends StandardMBean implements Intf { public Impl() { super(Intf.class, false); } // implement methods of Intf } [...] MBeanServer mbs; .... Impl impl = new Impl(); mbs.registerMBean(impl, objectName);
いずれの場合も、ImplクラスはインタフェースIntfを実装する必要があります。
実装クラスとインタフェース・クラス間の名前の関連性に基づいたStandard MBeanも、引き続き使用可能です。
このクラスは、MXBeanの構築にも使用できます。使用法は、上の例のコンストラクタに渡されるfalse
パラメータまたはsuper(...)
の呼出しが代わりにtrue
になることを除き、Standard MBeanとまったく同じです。
修飾子 | コンストラクタと説明 |
---|---|
protected |
StandardMBean(Class<?> mbeanInterface)
指定されたmbeanInterfaceクラスを使って、DynamicMBeanをthisから作成します。
|
protected |
StandardMBean(Class<?> mbeanInterface, boolean isMXBean)
指定されたmbeanInterfaceクラスを使用し、結果のMBeanをMXBeanにするかどうかを選択して、DynamicMBeanをthisから作成します。
|
|
StandardMBean(T implementation, Class<T> mbeanInterface)
指定されたmbeanInterfaceクラスを使って、DynamicMBeanをオブジェクトimplementationから作成します。
|
|
StandardMBean(T implementation, Class<T> mbeanInterface, boolean isMXBean)
指定されたmbeanInterfaceクラスを使用し、結果のMBeanをMXBeanにするかどうかを選択して、DynamicMBeanをオブジェクトimplementationから作成します。
|
修飾子と型 | メソッドと説明 |
---|---|
protected void |
cacheMBeanInfo(MBeanInfo info)
カスタマイズ・フック: このオブジェクト用に構築されたMBeanInfoをキャッシュに入れます。
|
Object |
getAttribute(String attribute)
Dynamic MBeanの特定の属性の値を取得します。
|
AttributeList |
getAttributes(String[] attributes)
Dynamic MBeanの複数の属性の値を取得します。
|
protected MBeanInfo |
getCachedMBeanInfo()
カスタマイズ・フック: このオブジェクト用にキャッシュされたMBeanInfoを返します。
|
protected String |
getClassName(MBeanInfo info)
カスタマイズ・フック: このMBeanから返されるMBeanInfoで使用されるclassNameを取得します。
|
protected MBeanConstructorInfo[] |
getConstructors(MBeanConstructorInfo[] ctors, Object impl)
カスタマイズ・フック: このMBeanから返されるMBeanInfoで使用されるMBeanConstructorInfo[]を取得します。
|
protected String |
getDescription(MBeanAttributeInfo info)
カスタマイズ・フック: このMBeanから返されるMBeanAttributeInfoで使用される説明を取得します。
|
protected String |
getDescription(MBeanConstructorInfo info)
カスタマイズ・フック: このMBeanから返されるMBeanConstructorInfoで使用される説明を取得します。
|
protected String |
getDescription(MBeanConstructorInfo ctor, MBeanParameterInfo param, int sequence)
カスタマイズ・フック: このMBeanから返されるMBeanConstructorInfoのsequence MBeanParameterInfoに使用される説明を取得します。
|
protected String |
getDescription(MBeanFeatureInfo info)
カスタマイズ・フック: このMBeanから返されるMBeanFeatureInfoで使用される説明を取得します。
|
protected String |
getDescription(MBeanInfo info)
カスタマイズ・フック: このMBeanから返されるMBeanInfoで使用される説明を取得します。
|
protected String |
getDescription(MBeanOperationInfo info)
カスタマイズ・フック: このMBeanから返されるMBeanOperationInfoで使用される説明を取得します。
|
protected String |
getDescription(MBeanOperationInfo op, MBeanParameterInfo param, int sequence)
カスタマイズ・フック: このMBeanから返されるMBeanOperationInfoのsequence MBeanParameterInfoに使用される説明を取得します。
|
protected int |
getImpact(MBeanOperationInfo info)
カスタマイズ・フック: このMBeanから返されるMBeanOperationInfoで使用されるオペレーションのimpactフラグを取得します。
|
Object |
getImplementation()
このStandard MBean (またはMXBean)の実装を取得します。
|
Class<?> |
getImplementationClass()
このStandard MBean (またはMXBean)の実装のクラスを取得します。
|
MBeanInfo |
getMBeanInfo()
このMBeanの
MBeanInfo を取得します。 |
Class<?> |
getMBeanInterface()
このStandard MBean (またはMXBean)の管理インタフェースを取得します。
|
protected String |
getParameterName(MBeanConstructorInfo ctor, MBeanParameterInfo param, int sequence)
カスタマイズ・フック: このMBeanから返されるMBeanConstructorInfoのsequence MBeanParameterInfoに使用される名前を取得します。
|
protected String |
getParameterName(MBeanOperationInfo op, MBeanParameterInfo param, int sequence)
カスタマイズ・フック: このMBeanから返されるMBeanOperationInfoのsequence MBeanParameterInfoに使用される名前を取得します。
|
Object |
invoke(String actionName, Object[] params, String[] signature)
Dynamic MBean上でのアクションの呼出しを許可します。
|
void |
postDeregister()
MBeanサーバーから登録解除したあと、MBeanが必要なオペレーションを実行できるようにします。
|
void |
postRegister(Boolean registrationDone)
MBeanサーバーへの登録が成功または失敗したあと、MBeanが必要なオペレーションを実行できるようにします。
|
void |
preDeregister()
MBeanサーバーから登録解除する前に、MBeanが必要なオペレーションを実行できるようにします。
|
ObjectName |
preRegister(MBeanServer server, ObjectName name)
MBeanサーバーに登録する前に、MBeanが必要なオペレーションを実行できるようにします。
|
void |
setAttribute(Attribute attribute)
Dynamic MBeanの特定の属性の値を設定します。
|
AttributeList |
setAttributes(AttributeList attributes)
Dynamic MBeanの複数の属性の値を設定します。
|
void |
setImplementation(Object implementation)
このオブジェクト内のラップされた実装オブジェクトを置換します。
|
public StandardMBean(T implementation, Class<T> mbeanInterface) throws NotCompliantMBeanException
指定されたmbeanInterfaceクラスを使って、DynamicMBeanをオブジェクトimplementationから作成します。
T
- mbeanInterface
で記述されたクラスをimplementation
が実際に実装しているかチェックすることをコンパイラに許可する。コンパイラがこのチェックを実行できるのは、mbeanInterface
がMyMBean.class
などのクラス・リテラルである場合のみ。implementation
- このMBeanの実装。mbeanInterface
- このMBeanの実装によってエクスポートされる管理インタフェース。null
の場合、このオブジェクトは標準JMX設計パターンを使って、指定された実装に関連付けられた管理インタフェースを特定する。IllegalArgumentException
- 指定されたimplementationがnullの場合。NotCompliantMBeanException
- mbeanInterfaceが管理インタフェースのJMX設計パターンに従っていない場合、またはimplementationが指定されたインタフェースを実装していない場合。protected StandardMBean(Class<?> mbeanInterface) throws NotCompliantMBeanException
指定されたmbeanInterfaceクラスを使って、DynamicMBeanをthisから作成します。
this(this,mbeanInterface)
を呼び出します。このコンストラクタはサブクラス用として予約されています。
mbeanInterface
- このMBeanによってエクスポートされる管理インタフェース。NotCompliantMBeanException
- mbeanInterfaceが管理インタフェースのJMX設計パターンに従っていない場合、またはthisが指定されたインタフェースを実装していない場合。public StandardMBean(T implementation, Class<T> mbeanInterface, boolean isMXBean)
指定されたmbeanInterfaceクラスを使用し、結果のMBeanをMXBeanにするかどうかを選択して、DynamicMBeanをオブジェクトimplementationから作成します。このコンストラクタは、Standard MBeanまたはMXBeanの作成に使用できます。StandardMBean(Object, Class)
コンストラクタとは異なり、これはNotCompliantMBeanExceptionをスローしません。
T
- mbeanInterface
で記述されたクラスをimplementation
が実際に実装しているかチェックすることをコンパイラに許可する。コンパイラがこのチェックを実行できるのは、mbeanInterface
がMyMBean.class
などのクラス・リテラルである場合のみ。implementation
- このMBeanの実装。mbeanInterface
- このMBeanの実装によってエクスポートされる管理インタフェース。null
の場合、このオブジェクトは標準JMX設計パターンを使って、指定された実装に関連付けられた管理インタフェースを特定する。isMXBean
- trueの場合、mbeanInterface
パラメータによりMXBeanインタフェースが指定され、結果のMBeanはMXBeanになる。IllegalArgumentException
- 指定されたimplementationがnullの場合、mbeanInterfaceが管理インタフェースのJMX設計パターンに従っていない場合、または指定されたimplementationが指定されたインタフェースを実装していない場合。protected StandardMBean(Class<?> mbeanInterface, boolean isMXBean)
指定されたmbeanInterfaceクラスを使用し、結果のMBeanをMXBeanにするかどうかを選択して、DynamicMBeanをthisから作成します。このコンストラクタは、Standard MBeanまたはMXBeanの作成に使用できます。StandardMBean(Object, Class)
コンストラクタとは異なり、これはNotCompliantMBeanExceptionをスローしません。
this(this, mbeanInterface, isMXBean)
を呼び出します。このコンストラクタはサブクラス用として予約されています。
mbeanInterface
- このMBeanによってエクスポートされる管理インタフェース。isMXBean
- trueの場合、mbeanInterface
パラメータによりMXBeanインタフェースが指定され、結果のMBeanはMXBeanになる。IllegalArgumentException
- mbeanInterfaceが管理インタフェースのJMX設計パターンに従っていない場合、またはthisが指定されたインタフェースを実装していない場合。public void setImplementation(Object implementation) throws NotCompliantMBeanException
このオブジェクト内のラップされた実装オブジェクトを置換します。
implementation
- このStandard MBean (またはMXBean)の新しい実装。implementation
オブジェクトは、StandardMBean
の構築時に提供されたStandard MBean (またはMXBean)インタフェースを実装する必要がある。IllegalArgumentException
- 指定されたimplementationがnullの場合。NotCompliantMBeanException
- 指定されたimplementationが構築時に提供されたStandard MBean (またはMXBean)インタフェースを実装していない場合。getImplementation()
public Object getImplementation()
setImplementation(java.lang.Object)
public final Class<?> getMBeanInterface()
public Class<?> getImplementationClass()
public Object getAttribute(String attribute) throws AttributeNotFoundException, MBeanException, ReflectionException
DynamicMBean
getAttribute
、インタフェース: DynamicMBean
attribute
- 取得される属性の名前AttributeNotFoundException
MBeanException
- MBeanのgetterによってスローされるjava.lang.Exception
をラップする場合。ReflectionException
- getterの呼出し時にスローされるjava.lang.Exception
をラップする場合。DynamicMBean.setAttribute(javax.management.Attribute)
public void setAttribute(Attribute attribute) throws AttributeNotFoundException, InvalidAttributeValueException, MBeanException, ReflectionException
DynamicMBean
setAttribute
、インタフェース: DynamicMBean
attribute
- 設定される属性のIDと設定される値。AttributeNotFoundException
InvalidAttributeValueException
MBeanException
- MBeanのsetterによってスローされるjava.lang.Exception
をラップする場合。ReflectionException
- MBeanのsetterの呼出し時にスローされるjava.lang.Exception
をラップする場合DynamicMBean.getAttribute(java.lang.String)
public AttributeList getAttributes(String[] attributes)
DynamicMBean
getAttributes
、インタフェース: DynamicMBean
attributes
- 取得される属性のリスト。DynamicMBean.setAttributes(javax.management.AttributeList)
public AttributeList setAttributes(AttributeList attributes)
DynamicMBean
setAttributes
、インタフェース: DynamicMBean
attributes
- 属性のリスト。属性のリスト(設定される属性のIDと設定される値)。DynamicMBean.getAttributes(java.lang.String[])
public Object invoke(String actionName, Object[] params, String[] signature) throws MBeanException, ReflectionException
DynamicMBean
invoke
、インタフェース: DynamicMBean
actionName
- 呼び出されるアクションの名前。params
- アクションの呼出し時に設定されるパラメータを含む配列。signature
- アクションのシグニチャを含む配列。クラス・オブジェクトのロードには、アクションを呼び出すMBeanをロードするときと同じクラス・ローダーが使用される。MBeanException
- MBeanの呼出しメソッドによってスローされるjava.lang.Exception
をラップする場合。ReflectionException
- メソッドの呼出し時にスローされるjava.lang.Exception
をラップする場合。public MBeanInfo getMBeanInfo()
MBeanInfo
を取得します。
このメソッドはDynamicMBean.getMBeanInfo()
を実装します。
このメソッドは、このMBeanのためにキャッシュされているMBeanInfoを取得するため、最初にgetCachedMBeanInfo()
を呼び出します。getCachedMBeanInfo()
によって返されるMBeanInfoがnullでない場合、それが返されます。
それ以外の場合、このメソッドは、このMBeanの指定の管理インタフェースを使って、このMBeanのデフォルトのMBeanInfoを構築します。
このメソッドは、MBeanInfoの構築時に、サブクラスがカスタムの記述、パラメータ名などを提供できるようにカスタマイズ・フックを呼び出します。
最終的には、新しいMBeanInfoをキャッシュするため、cacheMBeanInfo()
を呼び出します。
getMBeanInfo
、インタフェース: DynamicMBean
protected String getClassName(MBeanInfo info)
info.getClassName()
を返します。info
- リフレクションによって派生したデフォルトのMBeanInfo。protected String getDescription(MBeanInfo info)
info.getDescription()
を返します。info
- リフレクションによって派生したデフォルトのMBeanInfo。protected String getDescription(MBeanFeatureInfo info)
カスタマイズ・フック: このMBeanから返されるMBeanFeatureInfoで使用される説明を取得します。
サブクラスは、カスタムの説明を提供するため、このメソッドを再定義できます。デフォルトの実装ではinfo.getDescription()
を返します。
このメソッドはgetDescription(MBeanAttributeInfo)
、getDescription(MBeanOperationInfo)
、getDescription(MBeanConstructorInfo)
により呼び出されます。
info
- リフレクションによって派生したデフォルトのMBeanFeatureInfo。protected String getDescription(MBeanAttributeInfo info)
サブクラスは、カスタムの説明を提供するため、このメソッドを再定義できます。デフォルトの実装ではgetDescription((MBeanFeatureInfo) info)
を返します。
info
- リフレクションによって派生したデフォルトのMBeanAttributeInfo。protected String getDescription(MBeanConstructorInfo info)
getDescription((MBeanFeatureInfo) info)
を返します。info
- リフレクションによって派生したデフォルトのMBeanConstructorInfo。protected String getDescription(MBeanConstructorInfo ctor, MBeanParameterInfo param, int sequence)
param.getDescription()
を返します。ctor
- リフレクションによって派生したデフォルトのMBeanConstructorInfo。param
- リフレクションによって派生したデフォルトのMBeanParameterInfo。sequence
- パラメータのシーケンス番号。0は最初のパラメータ、1は2番目のパラメータ(以下同様)。protected String getParameterName(MBeanConstructorInfo ctor, MBeanParameterInfo param, int sequence)
param.getName()
を返します。ctor
- リフレクションによって派生したデフォルトのMBeanConstructorInfo。param
- リフレクションによって派生したデフォルトのMBeanParameterInfo。sequence
- パラメータのシーケンス番号。0は最初のパラメータ、1は2番目のパラメータ(以下同様)。protected String getDescription(MBeanOperationInfo info)
getDescription((MBeanFeatureInfo) info)
を返します。info
- リフレクションによって派生したデフォルトのMBeanOperationInfo。protected int getImpact(MBeanOperationInfo info)
info.getImpact()
を返します。info
- リフレクションによって派生したデフォルトのMBeanOperationInfo。protected String getParameterName(MBeanOperationInfo op, MBeanParameterInfo param, int sequence)
param.getName()
を返します。op
- リフレクションによって派生したデフォルトのMBeanOperationInfo。param
- リフレクションによって派生したデフォルトのMBeanParameterInfo。sequence
- パラメータのシーケンス番号。0は最初のパラメータ、1は2番目のパラメータ(以下同様)。protected String getDescription(MBeanOperationInfo op, MBeanParameterInfo param, int sequence)
param.getDescription()
を返します。op
- リフレクションによって派生したデフォルトのMBeanOperationInfo。param
- リフレクションによって派生したデフォルトのMBeanParameterInfo。sequence
- パラメータのシーケンス番号。0は最初のパラメータ、1は2番目のパラメータ(以下同様)。protected MBeanConstructorInfo[] getConstructors(MBeanConstructorInfo[] ctors, Object impl)
null
を返します。ラップされた実装がこのオブジェクト自体でない場合、MBeanServer.createMBean(...)
を通して実装コンストラクタを呼び出しても、ラップされた実装を作成し直すことはできません。ctors
- リフレクションによって派生したデフォルトのMBeanConstructorInfo[]。impl
- ラップされた実装。null
が渡されると、ラップされた実装は無視され、ctorsが返される。protected MBeanInfo getCachedMBeanInfo()
サブクラスは、固有のキャッシング・ポリシーを実装するため、このメソッドを再定義できます。デフォルトの実装は、インスタンスごとにMBeanInfo
オブジェクトを1つずつ格納します。
cacheMBeanInfo(MBeanInfo)
protected void cacheMBeanInfo(MBeanInfo info)
サブクラスは、固有のキャッシング・ポリシーを実装するため、このメソッドを再定義できます。デフォルトの実装は、このインスタンスにinfo
を格納します。サブクラスは、その他のポリシーも定義できます。たとえば、getMBeanInfo()
の呼出しのたびに再構築されるようにinfo
を保存しないポリシーや、複数のStandardMBean
インスタンスが同等のMBeanInfo
値を持つ場合に単一のMBeanInfo
オブジェクトを共有するポリシーなどを定義できます。
info
- キャッシュする新しいMBeanInfo
。以前にキャッシュされた値はすべて破棄される。新しくキャッシュされた値がない場合、このパラメータはnull。public ObjectName preRegister(MBeanServer server, ObjectName name) throws Exception
MBeanサーバーに登録する前に、MBeanが必要なオペレーションを実行できるようにします。MBeanの名前を指定しないと、MBeanにより、登録用の名前が提供されます。例外がスローされた場合、MBeanはMBeanサーバーに登録されません。
このメソッドのデフォルト実装はname
パラメータを返します。Standard MBeanの場合、他に何も行いません。MXBeanの場合、MBeanServer
およびObjectName
パラメータが記録されます。これらは、MXBean間の参照変換に使用できます。
このメソッドをオーバーライドするサブクラスは、オーバーライドされたメソッドをsuper.preRegister(...)
を介して呼び出すことをお勧めします。このオブジェクトが、ほかのMXBeanの属性またはオペレーションにより参照されるMXBeanである場合、これは必須の方法です。
preRegister
、インタフェース: MBeanRegistration
server
- MBeanサーバー。MBeanはここに登録される。name
- MBeanのオブジェクト名。MBeanServer
インタフェース内のcreateMBean
またはregisterMBean
メソッドのnameパラメータがnullの場合、この名前もnullになる。この場合、このメソッドは、新しいMBean用にnull以外のObjectNameを必ず返す。name
パラメータがnull以外の場合、通常は値が返されるが、これは必須ではない。IllegalArgumentException
- これがMXBeanで、name
がnullの場合。InstanceAlreadyExistsException
- これがMXBeanで、このMBeanサーバーまたは別のMBeanサーバーに、別の名前で登録済みの場合。Exception
- このメソッドによりほかのチェック例外がスローされることはないが、サブクラスがこのメソッドをオーバーライドして独自の例外をスローできるように、Exception
が宣言される。public void postRegister(Boolean registrationDone)
MBeanサーバーへの登録が成功または失敗したあと、MBeanが必要なオペレーションを実行できるようにします。
このメソッドのデフォルト実装では、Standard MBeanに対して何の処理も行われません。MXBeanでは、登録が失敗すると、preRegister
により実行された処理がすべて取り消されます。
このメソッドをオーバーライドするサブクラスは、オーバーライドされたメソッドをsuper.postRegister(...)
を介して呼び出すことをお勧めします。このオブジェクトが、ほかのMXBeanの属性またはオペレーションにより参照されるMXBeanである場合、これは必須の方法です。
postRegister
、インタフェース: MBeanRegistration
registrationDone
- MBeanがMBeanサーバーに正常に登録されたかどうかを示す。登録に失敗した場合の値はfalse。public void preDeregister() throws Exception
MBeanサーバーから登録解除する前に、MBeanが必要なオペレーションを実行できるようにします。
このメソッドのデフォルト実装では何の処理も行われません。
このメソッドをオーバーライドするサブクラスは、オーバーライドされたメソッドをsuper.preDeregister(...)
を介して呼び出すことをお勧めします。
preDeregister
、インタフェース: MBeanRegistration
Exception
- このメソッドによりチェック例外はスローされないが、サブクラスがこのメソッドをオーバーライドして独自の例外をスローできるように、Exception
が宣言される。public void postDeregister()
MBeanサーバーから登録解除したあと、MBeanが必要なオペレーションを実行できるようにします。
このメソッドのデフォルト実装では、Standard MBeanに対して何の処理も行われません。MXBeanでは、preRegister
メソッドにより記録された情報がすべて削除されます。
このメソッドをオーバーライドするサブクラスは、オーバーライドされたメソッドをsuper.postRegister(...)
を介して呼び出すことをお勧めします。このオブジェクトが、ほかのMXBeanの属性またはオペレーションにより参照されるMXBeanである場合、これは必須の方法です。
postDeregister
、インタフェース: MBeanRegistration
バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.