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

クラスManagementFactory


  • public class ManagementFactory
    extends Object
    ManagementFactoryクラスは、Javaプラットフォームの管理対象Beanを取得するためのファクトリ・クラスです。 このクラスは、Java仮想マシンのコンポーネントの管理インタフェースを表す1つ以上のプラットフォームMXBeanを返すstaticメソッドで構成されます。

    プラットフォームMXBean

    プラットフォームMXBeanは、JMXインストゥルメンテーション仕様に適合する管理Beanであり、基本データ型のセットだけを使用します。 JMX管理アプリケーションとプラットフォームMBeanServerは、MXBean固有のデータ型のためのクラスを必要とすることなく相互運用できます。 JMXコネクタ・サーバーとコネクタ・クライアントの間で転送されるデータ型は、公開型であり、これによってバージョン間の相互運用が可能です。 詳細は、MXBean仕様を参照してください。

    各プラットフォームMXBeanは、PlatformManagedObjectであり、プラットフォームMBeanServerでの登録のために、getObjectNameメソッドによって返される一意のObjectNameを持ちます。

    アプリケーションは、次の方法でプラットフォームMXBeanにアクセスできます。

    1. Direct access to an MXBean interface

    2. Indirect access to an MXBean interface via MBeanServer

    • プラットフォームMBeanServerでMXBeanにローカル・アクセスするか、または特定のMBeanServerConnectionでMXBeanにリモート・アクセスします。 MXBeanの属性や操作で使用されるのはJMX公開型だけですが、これには、OpenTypeに定義された基本データ型、CompositeData、およびTabularDataが含まれます。 このマッピングの詳細は、MXBeanの仕様で指定されています。

    getPlatformManagementInterfacesメソッドは、Java仮想マシンでサポートされているすべての管理インタフェースを返します。これには、以下の表に示す標準管理インタフェースとともに、JDK実装によって拡張された管理インタフェースも含まれます。

    Java仮想マシンは次の管理インタフェースの単一のインスタンスを持ちます。

    管理インタフェースおよびそれらの単一のインスタンスのリスト
    管理インタフェース オブジェクト名
    ClassLoadingMXBean java.lang:type=ClassLoading
    MemoryMXBean java.lang:type=Memory
    ThreadMXBean java.lang:type=Threading
    RuntimeMXBean java.lang:type=Runtime
    OperatingSystemMXBean java.lang:type=OperatingSystem
    PlatformLoggingMXBean java.util.logging:type=Logging

    Java仮想マシンは、次の管理インタフェースのインスタンスを持たないか、単一のインスタンスを持ちます。

    管理インタフェースおよびそれらの単一のインスタンスのリスト
    管理インタフェース オブジェクト名
    CompilationMXBean java.lang:type=Compilation

    Java仮想マシンは、次の管理インタフェースのインスタンスを1つ以上持つことができます。

    管理インタフェースおよびそれらの単一のインスタンスのリスト
    管理インタフェース オブジェクト名
    GarbageCollectorMXBean java.lang:type=GarbageCollector,name=collector's name
    MemoryManagerMXBean java.lang:type=MemoryManager,name=manager's name
    MemoryPoolMXBean java.lang:type=MemoryPool,name=pool's name
    BufferPoolMXBean java.nio:type=BufferPool,name=pool name

    導入されたバージョン:
    1.5
    関連項目:
    JMX仕様, 管理メトリックにアクセスする方法, MXBean
    • メソッドの詳細

      • getClassLoadingMXBean

        public static ClassLoadingMXBean getClassLoadingMXBean()
        Java仮想マシンのクラス・ローディング・システムの管理ビーンを返します。
        戻り値:
        Java仮想マシンのClassLoadingMXBeanオブジェクト。
      • getMemoryMXBean

        public static MemoryMXBean getMemoryMXBean()
        Java仮想マシンのメモリー・システムの管理ビーンを返します。
        戻り値:
        Java仮想マシンのMemoryMXBeanオブジェクト。
      • getThreadMXBean

        public static ThreadMXBean getThreadMXBean()
        Java仮想マシンのスレッド・システムの管理ビーンを返します。
        戻り値:
        Java仮想マシンのThreadMXBeanオブジェクト。
      • getRuntimeMXBean

        public static RuntimeMXBean getRuntimeMXBean()
        Java仮想マシンの実行システムの管理ビーンを返します。
        戻り値:
        Java仮想マシンのRuntimeMXBeanオブジェクト。
      • getCompilationMXBean

        public static CompilationMXBean getCompilationMXBean()
        Java仮想マシンのコンパイル・システムの管理ビーンを返します。 Java仮想マシンがコンパイル・システムを持たない場合、このメソッドはnullを返します。
        戻り値:
        Java仮想マシンのCompilationMXBeanオブジェクト。Java仮想マシンがコンパイル・システムを持たない場合はnull
      • getOperatingSystemMXBean

        public static OperatingSystemMXBean getOperatingSystemMXBean()
        Java仮想マシンを実行しているオペレーティング・システムの管理ビーンを返します。
        戻り値:
        Java仮想マシンのOperatingSystemMXBeanオブジェクト。
      • getMemoryPoolMXBeans

        public static List<MemoryPoolMXBean> getMemoryPoolMXBeans()
        Java仮想マシン内のMemoryPoolMXBeanオブジェクトのリストを返します。 Java仮想マシンは、1つ以上のメモリー・プールを保有できます。 実行中にメモリー・プールを追加または削除できます。
        戻り値:
        MemoryPoolMXBeanオブジェクトのリスト。
      • getMemoryManagerMXBeans

        public static List<MemoryManagerMXBean> getMemoryManagerMXBeans()
        Java仮想マシン内のMemoryManagerMXBeanオブジェクトのリストを返します。 Java仮想マシンは、1つ以上のメモリー・マネージャを持つことができます。 実行中にメモリー・マネージャを追加または削除できます。
        戻り値:
        MemoryManagerMXBeanオブジェクトのリスト。
      • getGarbageCollectorMXBeans

        public static List<GarbageCollectorMXBean> getGarbageCollectorMXBeans()
        Java仮想マシン内のGarbageCollectorMXBeanオブジェクトのリストを返します。 Java仮想マシンは、1つ以上のGarbageCollectorMXBeanオブジェクトを持つことができます。 また、実行中にGarbageCollectorMXBeanを追加または削除できます。
        戻り値:
        GarbageCollectorMXBeanオブジェクトのリスト。
      • getPlatformMBeanServer

        public static MBeanServer getPlatformMBeanServer()
        プラットフォームMBeanServerを返します。 このメソッドの最初の呼出しで、メソッドは、まずMBeanServerFactory.createMBeanServerメソッドを呼び出してプラットフォームMBeanServerを作成し、そのObjectNameを使ってこのプラットフォームMBeanServerに各プラットフォームMXBeanを登録します。 以降の呼出しでは、このメソッドは、初期に作成されたプラットフォームMBeanServerを返します。

        MXBeanは動的に作成され、破棄されます。たとえば、メモリーpoolsおよびmanagersは、プラットフォームMBeanServerに自動的に登録および登録解除されます。

        システム・プロパティjavax.management.builder.initialが設定されていると、プラットフォームMBeanServerの作成は、指定されたMBeanServerBuilderにより実行されます。

        プラットフォームMXBeanに加えて、ほかのアプリケーションの管理ビーンの登録にも、このプラットフォームMBeanServerを使うことをお薦めします。 これにより、すべてのMBeanは同じMBeanServerを通じて発行され、特にネットワーク・パブリッシングと検出が容易になります。 プラットフォームMXBeanとの名前の重複を避ける必要があります。

        戻り値:
        プラットフォームMBeanServer。プラットフォームMXBeanは、このメソッドがはじめて呼び出されたときにプラットフォームMBeanServer内に登録される。
        例外:
        SecurityException - セキュリティ・マネージャが存在する場合で、呼出し元がMBeanServerFactory.createMBeanServer()で必要なアクセス権を持たない場合。
        関連項目:
        MBeanServerFactory, MBeanServerFactory.createMBeanServer()
      • newPlatformMXBeanProxy

        public static <T> T newPlatformMXBeanProxy​(MBeanServerConnection connection,
                                                   String mxbeanName,
                                                   Class<T> mxbeanInterface)
                                            throws IOException
        指定されたMBeanServerConnectionを介してメソッド呼出しを転送する、指定されたMXBean名のプラットフォームMXBeanインタフェースのプロキシを返します。

        このメソッドは、次と同等です。

        Proxy.newProxyInstance(mxbeanInterface.getClassLoader(), new Class[] { mxbeanInterface }, handler)
        ここで、handlerはMXBeanインタフェースへのメソッド呼出しのディスパッチ先のInvocationHandlerです。 このhandlerはMXBeanデータ型の入力パラメータをマッピングされた公開型に変換してから、MBeanServerに転送し、MBeanServerを介してMXBeanメソッド呼び出しからの戻り値を公開型からMXBeanインタフェースで宣言された対応する戻り値の型に変換します。

        MXBeanが通知を発行する(NotificationEmitterを実装する)場合、mxbeanInterfaceNotificationEmitterの両方がこのプロキシによって実装されます。

        注:

        1. MXBeanプロキシの使用は、実行中の仮想マシンのプラットフォームMXBeanへのリモート・アクセスに有用である。 MXBeanプロキシへのすべてのメソッド呼出しは、MBeanServerConnectionに転送される。コネクタ・サーバーに通信に関する問題が発生すると、IOExceptionがスローされる。 スローされた場合、IOExceptionUndeclaredThrowableExceptionでラップされます。 プロキシを使用してプラットフォームのMXBeansにリモート・アクセスするアプリケーションは、UndeclaredThrowableExceptionをキャッチし、その原因がMBeanServerConnectionインタフェースによってスローされたかのようにcauseを処理する準備をしておく必要があります。
        2. クライアント・アプリケーションが、それとは異なるバージョンを実行中の仮想マシンのMXBeanにリモート・アクセスするように設計されている場合、MXBeanプロキシがクライアント・アプリケーションでロードされた列挙クラスで見つからない列挙定数の名前を受け取った場合にスローされるInvalidObjectExceptionをキャッチする用意をする必要がある。 スローされた場合、InvalidObjectExceptionUndeclaredThrowableExceptionでラップされます。
        3. MBeanServerInvocationHandlerまたはそのnewProxyInstanceメソッドを使用して、プラットフォームMXBeanのプロキシを作成することはできない。 MBeanServerInvocationHandlerによって作成されたプロキシ・オブジェクトは、クラス仕様で記述されたプラットフォームMXBeanのプロパティを処理しない。

        型パラメータ:
        T - mxbeanInterface 型パラメータ
        パラメータ:
        connection - 転送先となるMBeanServerConnection
        mxbeanName - 転送先のconnection内のプラットフォームMXBean名。mxbeanNameObjectNameの形式でなければならない。
        mxbeanInterface - プロキシによって実装されるMXBeanインタフェース。
        戻り値:
        指定されたMBeanServerConnectionを介してメソッド呼出しを転送する、指定されたMXBean名のプラットフォームMXBeanインタフェースのプロキシ。存在しない場合はnull
        例外:
        IllegalArgumentException - 次の場合
        • mxbeanNameが有効なObjectNameの形式でない、または
        • connection内で指定されたMXBeanが、プラットフォームで提供されるMXBeanでない、または
        • 指定されたMXBeanがMBeanServerConnectionに登録されていない、または
        • 指定されたMXBeanが指定されたmxbeanInterfaceのインスタンスでない
        IOException - MBeanServerConnectionへのアクセス時に通信に関する問題が発生した場合。
      • getPlatformMXBean

        public static <T extends PlatformManagedObject> T getPlatformMXBean​(Class<T> mxbeanInterface)
        Java仮想マシン内で単一のインスタンスを持つように指定された特定のmxbeanInterfaceを実装したプラットフォームMXBeanを返します。 Java仮想マシン内に管理インタフェースが実装されていない場合(たとえば、コンパイル・システムを持たないJava仮想マシンにはCompilationMXBeanが実装されていません)、このメソッドはnullを返します。それ以外の場合は、次を呼び出すのと同等です。
            getPlatformMXBeans(mxbeanInterface).get(0);
         
        型パラメータ:
        T - mxbeanInterface 型パラメータ
        パラメータ:
        mxbeanInterface - Java仮想マシン内で単一のインスタンスを持つプラットフォームMXBeanの管理インタフェース(実装されている場合)。
        戻り値:
        mxbeanInterfaceを実装するプラットフォームMXBean。存在しない場合はnull
        例外:
        IllegalArgumentException - mxbeanInterfaceがプラットフォーム管理インタフェースでないか、シングルトンのプラットフォームMXBeanでない場合。
        導入されたバージョン:
        1.7
      • getPlatformMXBeans

        public static <T extends PlatformManagedObjectList<T> getPlatformMXBeans​(Class<T> mxbeanInterface)
        Java仮想マシン内の、指定されたmxbeanInterfaceを実装したプラットフォームMXBeanのリストを返します。 返されたリストには、ゼロ個以上のインスタンスが含まれる可能性があります。 返されるリスト内のインスタンス数は、指定された管理インタフェースの仕様で定義されています。 順序は未定義であり、返されるリストが以前の呼出し時と同じ順序になっているという保証はありません。
        型パラメータ:
        T - mxbeanInterface 型パラメータ
        パラメータ:
        mxbeanInterface - プラットフォームMXBeanの管理インタフェース
        戻り値:
        mxbeanInterfaceを実装するプラットフォームMXBeanのリスト。
        例外:
        IllegalArgumentException - mxbeanInterfaceがプラットフォーム管理インタフェースでない場合。
        導入されたバージョン:
        1.7
      • getPlatformMXBean

        public static <T extends PlatformManagedObject> T getPlatformMXBean​(MBeanServerConnection connection,
                                                                            Class<T> mxbeanInterface)
                                                                     throws IOException
        Java仮想マシン内で単一のインスタンスを持つように指定された、mxbeanInterfaceのプラットフォームMXBeanプロキシを返します。このプロキシは、指定されたMBeanServerConnection経由でメソッド呼出しを転送します。 モニターされているJava仮想マシン内に管理インタフェースが実装されていない場合(たとえば、コンパイル・システムを持たないJava仮想マシンにはCompilationMXBeanが実装されていません)、このメソッドはnullを返します。それ以外の場合は、次を呼び出すのと同等です。
             getPlatformMXBeans(connection, mxbeanInterface).get(0);
         
        型パラメータ:
        T - mxbeanInterface 型パラメータ
        パラメータ:
        connection - 転送先となるMBeanServerConnection
        mxbeanInterface - 監視されているJava仮想マシン内で単一のインスタンスを持つプラットフォームMXBeanの管理インタフェース(実装されている場合)。
        戻り値:
        指定されたMBeanServerConnection経由でmxbeanInterfaceのメソッド呼出しを転送するためのプラットフォームMXBeanプロキシ。存在しない場合はnull
        例外:
        IllegalArgumentException - mxbeanInterfaceがプラットフォーム管理インタフェースでないか、シングルトンのプラットフォームMXBeanでない場合。
        IOException - MBeanServerConnectionへのアクセス時に通信に関する問題が発生した場合。
        導入されたバージョン:
        1.7
        関連項目:
        newPlatformMXBeanProxy(javax.management.MBeanServerConnection, java.lang.String, java.lang.Class<T>)
      • getPlatformMXBeans

        public static <T extends PlatformManagedObjectList<T> getPlatformMXBeans​(MBeanServerConnection connection,
                                                                                   Class<T> mxbeanInterface)
                                                                            throws IOException
        指定されたMBeanServerConnection経由でmxbeanInterfaceのメソッド呼出しを転送するためのプラットフォームMXBeanプロキシのリストを返します。 返されたリストには、ゼロ個以上のインスタンスが含まれる可能性があります。 返されるリスト内のインスタンス数は、指定された管理インタフェースの仕様で定義されています。 順序は未定義であり、返されるリストが以前の呼出し時と同じ順序になっているという保証はありません。
        型パラメータ:
        T - mxbeanInterface 型パラメータ
        パラメータ:
        connection - 転送先となるMBeanServerConnection
        mxbeanInterface - プラットフォームMXBeanの管理インタフェース
        戻り値:
        指定されたMBeanServerConnection経由でmxbeanInterfaceのメソッド呼出しを転送するためのプラットフォームMXBeanプロキシのリスト。
        例外:
        IllegalArgumentException - mxbeanInterfaceがプラットフォーム管理インタフェースでない場合。
        IOException - MBeanServerConnectionへのアクセス時に通信に関する問題が発生した場合。
        導入されたバージョン:
        1.7
        関連項目:
        newPlatformMXBeanProxy(javax.management.MBeanServerConnection, java.lang.String, java.lang.Class<T>)
      • getPlatformManagementInterfaces

        public static Set<Class<? extends PlatformManagedObject>> getPlatformManagementInterfaces()
        Javaプラットフォームを監視および管理するためのすべての管理インタフェースを表す、Classオブジェクト(PlatformManagedObjectのサブインタフェース)のセットを返します。
        戻り値:
        Javaプラットフォームを監視および管理するための管理インタフェースを表す、Classオブジェクト(PlatformManagedObjectのサブインタフェース)のセット。
        導入されたバージョン:
        1.7