クラスManagementFactory
ManagementFactoryクラスは、Javaプラットフォームの管理対象Beanを取得するためのファクトリ・クラスです。 このクラスは、Java仮想マシンのコンポーネントの管理インタフェースを表す1つ以上のプラットフォームMXBeanを返すstaticメソッドで構成されます。
プラットフォームMXBean
プラットフォームMXBeanは、JMXインストゥルメンテーション仕様に適合する管理Beanであり、基本データ型のセットだけを使用します。 JMX管理アプリケーションとプラットフォームMBeanServerは、MXBean固有のデータ型のためのクラスを必要とすることなく相互運用できます。 JMXコネクタ・サーバーとコネクタ・クライアントの間で転送されるデータ型は、公開型であり、これによってバージョン間の相互運用が可能です。 詳細は、「MXBean仕様」を参照してください。
各プラットフォームMXBeanは、PlatformManagedObjectであり、プラットフォームMBeanServerでの登録のために、getObjectNameメソッドによって返される一意のObjectNameを持ちます。
アプリケーションは、次の方法でプラットフォームMXBeanにアクセスできます。
1. MXBeanインタフェースへの直接アクセス
getPlatformMXBeanまたはgetPlatformMXBeansメソッドを呼び出してMXBeanインスタンスを取得し、実行中の仮想マシンのMXBeanにローカル・アクセスします。getPlatformMXBean(MBeanServerConnection, Class)またはgetPlatformMXBeans(MBeanServerConnection, Class)メソッドを呼び出すことで、指定されたMBeanServerにメソッド呼出しを転送するMXBeanプロキシ・インスタンスを構築します。newPlatformMXBeanProxyメソッドを使用して、指定されたObjectNameのMXBeanプロキシ・インスタンスを構築することもできます。 プロキシは通常、実行中のほかの仮想マシンのMXBeanにリモート・アクセスするために構築されます。
2. MBeanServerを介したMXBeanインタフェースへの間接アクセス
- プラットフォーム
MBeanServerに移動してローカルでMXBeansにアクセスするか、特定のMBeanServerConnectionにアクセスしてMXBeansにリモートでアクセスします。 MXBeanの属性や操作で使用されるのはJMX公開型だけですが、これには、OpenTypeに定義された基本データ型、CompositeData、およびTabularDataが含まれます。 このマッピングの詳細は、MXBeanの仕様で指定されています。
getPlatformManagementInterfacesメソッドは、Java仮想マシンでサポートされているすべての管理インタフェースを返します。これには、以下の表に示す標準管理インタフェースとともに、JDK実装によって拡張された管理インタフェースも含まれます。
Java仮想マシンは次の管理インタフェースの単一のインスタンスを持ちます。
Java仮想マシンは、次の管理インタフェースのインスタンスを持たないか、単一のインスタンスを持ちます。
| 管理インタフェース | ObjectName |
|---|---|
CompilationMXBean |
java.lang:type=Compilation |
Java仮想マシンは、次の管理インタフェースのインスタンスを1つ以上持つことができます。
| 管理インタフェース | ObjectName |
|---|---|
GarbageCollectorMXBean |
java.lang:type=GarbageCollector,name= 「コレクタの名前」 |
MemoryManagerMXBean |
java.lang:type=MemoryManager,name= 「マネージャの名前」 |
MemoryPoolMXBean |
java.lang:type=MemoryPool,name= 「プールの名前」 |
BufferPoolMXBean |
java.nio:type=BufferPool,name=pool name |
- 導入されたバージョン:
- 1.5
- 関連項目:
-
フィールドのサマリー
フィールド修飾子と型フィールド説明static final StringClassLoadingMXBeanのObjectNameの文字列表現。static final StringCompilationMXBeanのObjectNameの文字列表現。static final StringGarbageCollectorMXBeanのObjectNameのドメイン名およびタイプ・キー・プロパティ。static final StringMemoryManagerMXBeanのObjectNameのドメイン名およびタイプ・キー・プロパティ。static final StringMemoryMXBeanのObjectNameの文字列表現。static final StringMemoryPoolMXBeanのObjectNameのドメイン名およびタイプ・キー・プロパティ。static final StringOperatingSystemMXBeanのObjectNameの文字列表現。static final StringRuntimeMXBeanのObjectNameの文字列表現。static final StringThreadMXBeanのObjectNameの文字列表現。 -
メソッドのサマリー
修飾子と型メソッド説明static ClassLoadingMXBeanJava仮想マシンのクラス・ローディング・システムの管理ビーンを返します。static CompilationMXBeanJava仮想マシンのコンパイル・システムの管理ビーンを返します。static List<GarbageCollectorMXBean> Java仮想マシン内のGarbageCollectorMXBeanオブジェクトのリストを返します。static List<MemoryManagerMXBean> Java仮想マシン内のMemoryManagerMXBeanオブジェクトのリストを返します。static MemoryMXBeanJava仮想マシンのメモリー・システムの管理ビーンを返します。static List<MemoryPoolMXBean> Java仮想マシン内のMemoryPoolMXBeanオブジェクトのリストを返します。static OperatingSystemMXBeanJava仮想マシンを実行しているオペレーティング・システムの管理ビーンを返します。static Set<Class<? extends PlatformManagedObject>> Javaプラットフォームを監視および管理するためのすべての管理インタフェースを表す、Classオブジェクト(PlatformManagedObjectのサブインタフェース)のセットを返します。static MBeanServerプラットフォームMBeanServerを返します。static <T extends PlatformManagedObject>
TgetPlatformMXBean(Class<T> mxbeanInterface) Java仮想マシン内で単一のインスタンスを持つように指定された特定のmxbeanInterfaceを実装したプラットフォームMXBeanを返します。static <T extends PlatformManagedObject>
TgetPlatformMXBean(MBeanServerConnection connection, Class<T> mxbeanInterface) Java仮想マシン内で単一のインスタンスを持つように指定された、mxbeanInterfaceのプラットフォームMXBeanプロキシを返します。このプロキシは、指定されたMBeanServerConnection経由でメソッド呼出しを転送します。static <T extends PlatformManagedObject>
List<T> getPlatformMXBeans(Class<T> mxbeanInterface) Java仮想マシン内の、指定されたmxbeanInterfaceを実装したプラットフォームMXBeanのリストを返します。static <T extends PlatformManagedObject>
List<T> getPlatformMXBeans(MBeanServerConnection connection, Class<T> mxbeanInterface) 指定されたMBeanServerConnection経由でmxbeanInterfaceのメソッド呼出しを転送するためのプラットフォームMXBeanプロキシのリストを返します。static RuntimeMXBeanJava仮想マシンの実行システムの管理ビーンを返します。static ThreadMXBeanJava仮想マシンのスレッド・システムの管理ビーンを返します。static <T> TnewPlatformMXBeanProxy(MBeanServerConnection connection, String mxbeanName, Class<T> mxbeanInterface) 指定された「MXBean名」のプラットフォームMXBeanインタフェースのプロキシを返します。このプロキシは、指定されたMBeanServerConnectionを介してメソッド・コールを転送します。
-
フィールド詳細
-
CLASS_LOADING_MXBEAN_NAME
-
COMPILATION_MXBEAN_NAME
-
MEMORY_MXBEAN_NAME
-
OPERATING_SYSTEM_MXBEAN_NAME
public static final String OPERATING_SYSTEM_MXBEAN_NAMEOperatingSystemMXBeanのObjectNameの文字列表現。- 関連項目:
-
RUNTIME_MXBEAN_NAME
-
THREAD_MXBEAN_NAME
-
GARBAGE_COLLECTOR_MXBEAN_DOMAIN_TYPE
public static final String GARBAGE_COLLECTOR_MXBEAN_DOMAIN_TYPEGarbageCollectorMXBeanのObjectNameのドメイン名およびタイプ・キー・プロパティ。GarbageCollectorMXBeanの一意のObjectNameは、この文字列に,name=「コレクタの名前」を追加することで形成できます。- 関連項目:
-
MEMORY_MANAGER_MXBEAN_DOMAIN_TYPE
public static final String MEMORY_MANAGER_MXBEAN_DOMAIN_TYPEMemoryManagerMXBeanのObjectNameのドメイン名およびタイプ・キー・プロパティ。MemoryManagerMXBeanの一意のObjectNameは、この文字列に,name=「マネージャの名前」を追加することで形成できます。- 関連項目:
-
MEMORY_POOL_MXBEAN_DOMAIN_TYPE
public static final String MEMORY_POOL_MXBEAN_DOMAIN_TYPEMemoryPoolMXBeanのObjectNameのドメイン名およびタイプ・キー・プロパティ。MemoryPoolMXBeanの一意のObjectNameは、この文字列を,name=「プールの名前」とともに追加することで形成できます。- 関連項目:
-
-
メソッドの詳細
-
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内に登録される。 - 関連項目:
-
newPlatformMXBeanProxy
public static <T> T newPlatformMXBeanProxy(MBeanServerConnection connection, String mxbeanName, Class<T> mxbeanInterface) throws IOException 指定された「MXBean名」のプラットフォームMXBeanインタフェースのプロキシを返します。このプロキシは、指定されたMBeanServerConnectionを介してメソッド・コールを転送します。このメソッドは、次と同等です。
Proxy.newProxyInstance(mxbeanInterface.getClassLoader(), new Class[] { mxbeanInterface }, handler)handlerは、MXBeanインタフェースへのメソッド呼出しのディスパッチ先となるInvocationHandlerです。 このhandlerは、入力パラメータをMXBeanデータ型からマップされたオープン・タイプに変換してから、MBeanServerに転送し、MBeanServerを介してMXBeanメソッド・コールからMXBeanインタフェースで宣言された対応する戻り型に戻り値を変換します。MXBeanが通知エミッタ(つまり、
NotificationEmitterを実装)の場合、mxbeanInterfaceとNotificationEmitterの両方がこのプロキシによって実装されます。ノート:
- MXBeanプロキシの使用は、実行中の仮想マシンのプラットフォームMXBeanへのリモート・アクセスに有用である。 MXBeanプロキシへのすべてのメソッド・コールは、
MBeanServerConnectionに転送されます。このIOExceptionは、コネクタ・サーバーで通信の問題が発生したときにスローされます。 スローすると、IOExceptionはUndeclaredThrowableExceptionでラップされます。 プロキシを使用してプラットフォームMXBeansにリモートでアクセスするアプリケーションは、UndeclaredThrowableExceptionを捕捉し、その原因がMBeanServerConnectionインタフェースによってスローされたかのようにそのcauseを処理する準備をする必要があります。 - クライアント・アプリケーションが、それとは異なるバージョンを実行中の仮想マシンのMXBeanにリモート・アクセスするように設計されている場合、MXBeanプロキシがクライアント・アプリケーションでロードされた列挙クラスで見つからない列挙定数の名前を受け取った場合にスローされる
InvalidObjectExceptionをキャッチする用意をする必要がある。 スローすると、InvalidObjectExceptionはUndeclaredThrowableExceptionでラップされます。 MBeanServerInvocationHandlerまたはそのnewProxyInstanceメソッドを使用して、プラットフォームMXBeanのプロキシを作成することはできない。MBeanServerInvocationHandlerによって作成されたプロキシ・オブジェクトは、「クラス指定」で説明されているプラットフォームMXBeansのプロパティを処理しません。
- 型パラメータ:
T-mxbeanInterface型パラメータ- パラメータ:
connection- 転送先となるMBeanServerConnection。mxbeanName- 転送先のconnection内のプラットフォームMXBeanの名前。mxbeanNameはObjectNameの形式である必要があります。mxbeanInterface- プロキシによって実装されるMXBeanインタフェース。- 戻り値:
- 指定された「MXBean名」のプラットフォームMXBeanインタフェースのプロキシ。指定された
MBeanServerConnectionを介してメソッド・コールを転送するか、存在しない場合はnullを転送します。 - スロー:
IllegalArgumentException- 次の場合mxbeanNameが有効なObjectName形式ではないか、またはconnection内の指定されたMXBeanは、プラットフォームによって提供されるMXBeanではありません- 指定されたMXBeanが
MBeanServerConnectionに登録されていないか、または - 指定されたMXBeanは、指定された
mxbeanInterfaceのインスタンスではありません
IOException-MBeanServerConnectionへのアクセス時に通信に関する問題が発生した場合。
- MXBeanプロキシの使用は、実行中の仮想マシンのプラットフォームMXBeanへのリモート・アクセスに有用である。 MXBeanプロキシへのすべてのメソッド・コールは、
-
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 PlatformManagedObject> List<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
- 関連項目:
-
getPlatformMXBeans
public static <T extends PlatformManagedObject> List<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
- 関連項目:
-
getPlatformManagementInterfaces
public static Set<Class<? extends PlatformManagedObject>> getPlatformManagementInterfaces()Javaプラットフォームを監視および管理するためのすべての管理インタフェースを表す、Classオブジェクト(PlatformManagedObjectのサブインタフェース)のセットを返します。- 戻り値:
- Javaプラットフォームを監視および管理するための管理インタフェースを表す、
Classオブジェクト(PlatformManagedObjectのサブインタフェース)のセット。 - 導入されたバージョン:
- 1.7
-