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 以外の場合、それが返されます。
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, 2013, Oracle and/or its affiliates. All rights reserved.