モジュール java.management
パッケージ javax.management

クラスStandardMBean

  • すべての実装されたインタフェース:
    DynamicMBean, MBeanRegistration
    直系の既知のサブクラス:
    StandardEmitterMBean

    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を作成できます。一般に、次のいずれかの作成方法を選択します。

    • publicコンストラクタStandardMBean(impl,interface)を使用
           MBeanServer mbs;
           ...
           Impl impl = new Impl(...);
           StandardMBean mbean = new StandardMBean(impl, Intf.class, false);
           mbs.registerMBean(mbean, objectName);
           
    • StandardMBeanのサブクラス化
           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とまったく同じです。

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

      コンストラクタ 
      修飾子 コンストラクタ 説明
      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から作成します。
    • コンストラクタの詳細

      • StandardMBean

        public StandardMBean​(T implementation,
                             Class<T> mbeanInterface)
                      throws NotCompliantMBeanException

        指定されたmbeanInterfaceクラスを使って、DynamicMBeanをオブジェクトimplementationから作成します。

        型パラメータ:
        T - mbeanInterfaceで記述されたクラスをimplementationが実際に実装しているかチェックすることをコンパイラに許可する。 コンパイラがこのチェックを実行できるのは、mbeanInterfaceMyMBean.classなどのクラス・リテラルである場合のみ。
        パラメータ:
        implementation - このMBeanの実装。
        mbeanInterface - このMBeanの実装によってエクスポートされる管理インタフェース。 nullの場合、このオブジェクトは標準JMX設計パターンを使って、指定された実装に関連付けられた管理インタフェースを特定する。
        例外:
        IllegalArgumentException - 指定されたimplementationがnullの場合。
        NotCompliantMBeanException - mbeanInterfaceが管理インタフェースのJMX設計パターンに従っていない場合、またはimplementationが指定されたインタフェースを実装していない場合。
      • StandardMBean

        protected StandardMBean​(Class<?> mbeanInterface)
                         throws NotCompliantMBeanException

        指定されたmbeanInterfaceクラスを使って、DynamicMBeanをthisから作成します。

        this(this,mbeanInterface)を呼び出します。 このコンストラクタはサブクラス用として予約されています。

        パラメータ:
        mbeanInterface - このMBeanによってエクスポートされる管理インタフェース。
        例外:
        NotCompliantMBeanException - mbeanInterfaceが管理インタフェースのJMX設計パターンに従っていない場合、またはthisが指定されたインタフェースを実装していない場合。
      • StandardMBean

        public StandardMBean​(T implementation,
                             Class<T> mbeanInterface,
                             boolean isMXBean)

        指定されたmbeanInterfaceクラスを使用し、結果のMBeanをMXBeanにするかどうかを選択して、DynamicMBeanをオブジェクトimplementationから作成します。 このコンストラクタは、Standard MBeanまたはMXBeanの作成に使用できます。 StandardMBean(Object, Class)コンストラクタとは異なり、これはNotCompliantMBeanExceptionをスローしません。

        型パラメータ:
        T - mbeanInterfaceで記述されたクラスをimplementationが実際に実装しているかチェックすることをコンパイラに許可する。 コンパイラがこのチェックを実行できるのは、mbeanInterfaceMyMBean.classなどのクラス・リテラルである場合のみ。
        パラメータ:
        implementation - このMBeanの実装。
        mbeanInterface - このMBeanの実装によってエクスポートされる管理インタフェース。 nullの場合、このオブジェクトは標準JMX設計パターンを使って、指定された実装に関連付けられた管理インタフェースを特定する。
        isMXBean - trueの場合、mbeanInterfaceパラメータによりMXBeanインタフェースが指定され、結果のMBeanはMXBeanになる。
        例外:
        IllegalArgumentException - 指定されたimplementationがnullの場合、mbeanInterfaceが管理インタフェースのJMX設計パターンに従っていない場合、または指定されたimplementationが指定されたインタフェースを実装していない場合。
        導入されたバージョン:
        1.6
      • StandardMBean

        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が指定されたインタフェースを実装していない場合。
        導入されたバージョン:
        1.6
    • メソッドの詳細

      • setImplementation

        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()
      • getImplementation

        public Object getImplementation()
        このStandard MBean (またはMXBean)の実装を取得します。
        戻り値:
        このStandard MBean (またはMXBean)の実装。
        関連項目:
        setImplementation(java.lang.Object)
      • getMBeanInterface

        public final Class<?> getMBeanInterface()
        このStandard MBean (またはMXBean)の管理インタフェースを取得します。
        戻り値:
        このStandard MBean (またはMXBean)の管理インタフェース。
      • getImplementationClass

        public Class<?> getImplementationClass()
        このStandard MBean (またはMXBean)の実装のクラスを取得します。
        戻り値:
        このStandard MBean (またはMXBean)の実装のクラス。
      • getMBeanInfo

        public MBeanInfo getMBeanInfo()
        このMBeanのMBeanInfoを取得します。

        このメソッドはDynamicMBean.getMBeanInfo()を実装します。

        このメソッドは、このMBeanのためにキャッシュされているMBeanInfoを取得するため、最初にgetCachedMBeanInfo()を呼び出します。 getCachedMBeanInfo()によって返されるMBeanInfoがnullでない場合、それが返されます。
        それ以外の場合、このメソッドは、このMBeanの指定の管理インタフェースを使って、このMBeanのデフォルトのMBeanInfoを構築します。

        このメソッドは、MBeanInfoの構築時に、サブクラスがカスタムの記述、パラメータ名などを提供できるようにカスタマイズ・フックを呼び出します。
        最終的には、新しいMBeanInfoをキャッシュするため、cacheMBeanInfo()を呼び出します。

        定義:
        getMBeanInfo、インタフェースDynamicMBean
        戻り値:
        nullでない場合、キャッシュされているそのMBeanのMBeanInfo。何もキャッシュされていない場合、新しく構築されたMBeanInfo。
      • getClassName

        protected String getClassName​(MBeanInfo info)
        カスタマイズ・フック: このMBeanから返されるMBeanInfoで使用されるclassNameを取得します。
        サブクラスは、カスタム・クラス名を提供するため、このメソッドを再定義できます。
        デフォルトの実装ではinfo.getClassName()を返します。
        パラメータ:
        info - リフレクションによって派生したデフォルトのMBeanInfo。
        戻り値:
        新しいMBeanInfoのクラス名。
      • getDescription

        protected String getDescription​(MBeanInfo info)
        カスタマイズ・フック: このMBeanから返されるMBeanInfoで使用される説明を取得します。
        サブクラスは、カスタムのMBeanの説明を提供するため、このメソッドを再定義できます。
        デフォルトの実装ではinfo.getDescription()を返します。
        パラメータ:
        info - リフレクションによって派生したデフォルトのMBeanInfo。
        戻り値:
        新しいMBeanInfoの説明。
      • getDescription

        protected String getDescription​(MBeanAttributeInfo info)
        カスタマイズ・フック: このMBeanから返されるMBeanAttributeInfoで使用される説明を取得します。

        サブクラスは、カスタムの説明を提供するため、このメソッドを再定義できます。 デフォルトの実装ではgetDescription((MBeanFeatureInfo) info)を返します。

        パラメータ:
        info - リフレクションによって派生したデフォルトのMBeanAttributeInfo。
        戻り値:
        指定されたMBeanAttributeInfoの説明
      • getDescription

        protected String getDescription​(MBeanConstructorInfo info)
        カスタマイズ・フック: このMBeanから返されるMBeanConstructorInfoで使用される説明を取得します。
        サブクラスは、カスタムの説明を提供するため、このメソッドを再定義できます。
        デフォルトの実装ではgetDescription((MBeanFeatureInfo) info)を返します。
        パラメータ:
        info - リフレクションによって派生したデフォルトのMBeanConstructorInfo。
        戻り値:
        指定されたMBeanConstructorInfoの説明
      • getDescription

        protected String getDescription​(MBeanConstructorInfo ctor,
                                        MBeanParameterInfo param,
                                        int sequence)
        カスタマイズ・フック: このMBeanから返されるMBeanConstructorInfoのsequence MBeanParameterInfoに使用される説明を取得します。
        サブクラスは、カスタムの説明を提供するため、このメソッドを再定義できます。
        デフォルトの実装ではparam.getDescription()を返します。
        パラメータ:
        ctor - リフレクションによって派生したデフォルトのMBeanConstructorInfo。
        param - リフレクションによって派生したデフォルトのMBeanParameterInfo。
        sequence - パラメータのシーケンス番号。0は最初のパラメータ、1は2番目のパラメータ(以下同様)。
        戻り値:
        指定されたMBeanParameterInfoの説明。
      • getParameterName

        protected String getParameterName​(MBeanConstructorInfo ctor,
                                          MBeanParameterInfo param,
                                          int sequence)
        カスタマイズ・フック: このMBeanから返されるMBeanConstructorInfoのsequence MBeanParameterInfoに使用される名前を取得します。
        サブクラスは、カスタムのパラメータ名を提供するため、このメソッドを再定義できます。
        デフォルトの実装ではparam.getName()を返します。
        パラメータ:
        ctor - リフレクションによって派生したデフォルトのMBeanConstructorInfo。
        param - リフレクションによって派生したデフォルトのMBeanParameterInfo。
        sequence - パラメータのシーケンス番号。0は最初のパラメータ、1は2番目のパラメータ(以下同様)。
        戻り値:
        指定されたMBeanParameterInfoの名前。
      • getDescription

        protected String getDescription​(MBeanOperationInfo info)
        カスタマイズ・フック: このMBeanから返されるMBeanOperationInfoで使用される説明を取得します。
        サブクラスは、カスタムの説明を提供するため、このメソッドを再定義できます。
        デフォルトの実装ではgetDescription((MBeanFeatureInfo) info)を返します。
        パラメータ:
        info - リフレクションによって派生したデフォルトのMBeanOperationInfo。
        戻り値:
        指定されたMBeanOperationInfoの説明。
      • getImpact

        protected int getImpact​(MBeanOperationInfo info)
        カスタマイズ・フック: このMBeanから返されるMBeanOperationInfoで使用されるオペレーションのimpactフラグを取得します。
        サブクラスは、カスタムのimpactフラグを提供するため、このメソッドを再定義できます。
        デフォルトの実装ではinfo.getImpact()を返します。
        パラメータ:
        info - リフレクションによって派生したデフォルトのMBeanOperationInfo。
        戻り値:
        指定されたMBeanOperationInfoのimpactフラグ。
      • getParameterName

        protected String getParameterName​(MBeanOperationInfo op,
                                          MBeanParameterInfo param,
                                          int sequence)
        カスタマイズ・フック: このMBeanから返されるMBeanOperationInfoのsequence MBeanParameterInfoに使用される名前を取得します。
        サブクラスは、カスタムのパラメータ名を提供するため、このメソッドを再定義できます。
        デフォルトの実装ではparam.getName()を返します。
        パラメータ:
        op - リフレクションによって派生したデフォルトのMBeanOperationInfo。
        param - リフレクションによって派生したデフォルトのMBeanParameterInfo。
        sequence - パラメータのシーケンス番号。0は最初のパラメータ、1は2番目のパラメータ(以下同様)。
        戻り値:
        指定されたMBeanParameterInfoに使用する名前。
      • getDescription

        protected String getDescription​(MBeanOperationInfo op,
                                        MBeanParameterInfo param,
                                        int sequence)
        カスタマイズ・フック: このMBeanから返されるMBeanOperationInfoのsequence MBeanParameterInfoに使用される説明を取得します。
        サブクラスは、カスタムの説明を提供するため、このメソッドを再定義できます。
        デフォルトの実装ではparam.getDescription()を返します。
        パラメータ:
        op - リフレクションによって派生したデフォルトのMBeanOperationInfo。
        param - リフレクションによって派生したデフォルトのMBeanParameterInfo。
        sequence - パラメータのシーケンス番号。0は最初のパラメータ、1は2番目のパラメータ(以下同様)。
        戻り値:
        指定されたMBeanParameterInfoの説明。
      • getConstructors

        protected MBeanConstructorInfo[] getConstructors​(MBeanConstructorInfo[] ctors,
                                                         Object impl)
        カスタマイズ・フック: このMBeanから返されるMBeanInfoで使用されるMBeanConstructorInfo[]を取得します。
        デフォルトでは、このメソッドは、ラップされた実装がthisでない場合、nullを返します。
        ラップされた実装がこのオブジェクト自体でない場合、MBeanServer.createMBean(...)を通して実装コンストラクタを呼び出しても、ラップされた実装を作成し直すことはできません。
        ラップされた実装がthisの場合、ctorsが返されます。

        サブクラスは、この動作を必要に応じて変更するため、このメソッドを再定義できます。
        パラメータ:
        ctors - リフレクションによって派生したデフォルトのMBeanConstructorInfo[]。
        impl - ラップされた実装。 nullが渡されると、ラップされた実装は無視され、ctorsが返される。
        戻り値:
        新しいMBeanInfoのMBeanConstructorInfo[].
      • getCachedMBeanInfo

        protected MBeanInfo getCachedMBeanInfo()
        カスタマイズ・フック: このオブジェクト用にキャッシュされたMBeanInfoを返します。

        サブクラスは、固有のキャッシング・ポリシーを実装するため、このメソッドを再定義できます。 デフォルトの実装は、インスタンスごとにMBeanInfoオブジェクトを1つずつ格納します。

        戻り値:
        キャッシュされたMBeanInfo。MBeanInfoがキャッシュされていない場合はnull。
        関連項目:
        cacheMBeanInfo(MBeanInfo)
      • cacheMBeanInfo

        protected void cacheMBeanInfo​(MBeanInfo info)
        カスタマイズ・フック: このオブジェクト用に構築されたMBeanInfoをキャッシュに入れます。

        サブクラスは、固有のキャッシング・ポリシーを実装するため、このメソッドを再定義できます。 デフォルトの実装は、このインスタンスにinfoを格納します。 サブクラスは、その他のポリシーも定義できます。たとえば、getMBeanInfo()の呼出しのたびに再構築されるようにinfoを保存しないポリシーや、複数のStandardMBeanインスタンスが同等のMBeanInfo値を持つ場合に単一のMBeanInfoオブジェクトを共有するポリシーなどを定義できます。

        パラメータ:
        info - キャッシュする新しいMBeanInfo 以前にキャッシュされた値はすべて破棄される。 新しくキャッシュされた値がない場合、このパラメータはnull。
      • preRegister

        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を必ず返す。
        戻り値:
        MBeanの登録名。 nullは指定できない。 nameパラメータがnull以外の場合、通常は値が返されるが、これは必須ではない。
        例外:
        IllegalArgumentException - これがMXBeanで、nameがnullの場合。
        InstanceAlreadyExistsException - これがMXBeanで、このMBeanサーバーまたは別のMBeanサーバーに、別の名前で登録済みの場合。
        Exception - このメソッドによりほかのチェック例外がスローされることはないが、サブクラスがこのメソッドをオーバーライドして独自の例外をスローできるように、Exceptionが宣言される。
        導入されたバージョン:
        1.6
      • postRegister

        public void postRegister​(Boolean registrationDone)

        MBeanサーバーへの登録が成功または失敗したあと、MBeanが必要なオペレーションを実行できるようにします。

        このメソッドのデフォルト実装では、Standard MBeanに対して何の処理も行われません。 MXBeanでは、登録が失敗すると、preRegisterにより実行された処理がすべて取り消されます。

        このメソッドをオーバーライドするサブクラスは、オーバーライドされたメソッドをsuper.postRegister(...)を介して呼び出すことをお勧めします。 このオブジェクトが、ほかのMXBeanの属性またはオペレーションにより参照されるMXBeanである場合、これは必須の方法です。

        定義:
        postRegister、インタフェースMBeanRegistration
        パラメータ:
        registrationDone - MBeanがMBeanサーバーに正常に登録されたかどうかを示す。 登録に失敗した場合の値はfalse。
        導入されたバージョン:
        1.6
      • preDeregister

        public void preDeregister()
                           throws Exception

        MBeanサーバーから登録解除する前に、MBeanが必要なオペレーションを実行できるようにします。

        このメソッドのデフォルト実装では何の処理も行われません。

        このメソッドをオーバーライドするサブクラスは、オーバーライドされたメソッドをsuper.preDeregister(...)を介して呼び出すことをお勧めします。

        定義:
        preDeregister、インタフェースMBeanRegistration
        例外:
        Exception - このメソッドによりチェック例外はスローされないが、サブクラスがこのメソッドをオーバーライドして独自の例外をスローできるように、Exceptionが宣言される。
        導入されたバージョン:
        1.6
      • postDeregister

        public void postDeregister()

        MBeanサーバーから登録解除したあと、MBeanが必要なオペレーションを実行できるようにします。

        このメソッドのデフォルト実装では、Standard MBeanに対して何の処理も行われません。 MXBeanでは、preRegisterメソッドにより記録された情報がすべて削除されます。

        このメソッドをオーバーライドするサブクラスは、オーバーライドされたメソッドをsuper.postRegister(...)を介して呼び出すことをお勧めします。 このオブジェクトが、ほかのMXBeanの属性またはオペレーションにより参照されるMXBeanである場合、これは必須の方法です。

        定義:
        postDeregister、インタフェースMBeanRegistration
        導入されたバージョン:
        1.6