sun.com docs.sun.com My Sun Worldwide Sites

  前の項目 目次 次の項目
第 1 章

Java SE 監視および管理の概要

この章では、Java Platform, Standard Edition (Java SE プラットフォーム) に監視と管理の両サービスを提供する機能およびユーティリティーを説明します。ここで紹介する機能の詳細については、このガイドの次の章を参照してください。

主な監視および管理機能

Java SE プラットフォームには、重要な監視および管理機能が用意されています。これらの機能は、大きく 4 つに分類されます。

  • Java 仮想マシン (Java VM) のインストゥルメンテーション。

  • 監視および管理アプリケーションプログラミングインタフェース (API)。

  • 監視および管理ツール。

  • Java Management Extensions (JMX) テクノロジ。

これらの監視および管理機能の分類についての詳細は、次の節を参照してください。

Java VM インストゥルメンテーション

Java VM は、監視および管理を目的として計測され、ローカルアクセスやリモートアクセスを実現する組み込み型の (または、追加設定不要 (アウトオブボックス) な) 管理機能を有効にします。詳細は、第 2 章「JMX テクノロジを使用する監視と管理」第 5 章「SNMP 監視と管理」を参照してください。

Java VM には、JMX 仕様に準拠した管理アプリケーションで使用されるプラットフォーム MBean サーバーとプラットフォーム MBean が用意されています。これらは、監視および管理 API (次の節に記載) の実装です。プラットフォーム MXBean と MBean サーバーについては、Platform MXBeansPlatform MBean Server を参照してください。

サンプルコードは、JDK_HOME/demo/management ディレクトリに格納されています。ここで JDK_HOME は Java Development Kit (JDK) がインストールされているディレクトリです。

監視および管理 API

java.lang.management パッケージでは、Java VM の監視および管理を行うインタフェースを提供します。この API では、次の種類の情報にアクセスします。

  • ロードされたクラスと実行中のスレッドの数。

  • Java VM の稼働時間、システムプロパティー、VM 入力引数。

  • スレッド状態、スレッド競合統計、ライブスレッドのスタックトレース。

  • メモリー消費。

  • ガベージコレクションの統計。

  • ローメモリの検出。

  • オンデマンドデッドロックの検出。

  • オペレーティングシステム情報。

java.lang.management API に加え、java.util.logging.LoggingMXBean API では、ロギングの監視および管理が可能です。

監視および管理ツール

Java SE プラットフォームには、JConsole と呼ばれる監視用グラフィカルツールが用意されています。JConsole には JMX API が実装されており、パフォーマンスを最大限に発揮させるための情報を提供することにより、Java VM と計測されたアプリケーションのパフォーマンス監視を可能にします。J2SE プラットフォームのバージョン 5.0 に用意されている JConsole は、Java SE プラットフォームのバージョン 6 において公式にサポートされる機能となりました。

この 2 つの Java SE プラットフォームのリリース間で JConsole に追加された拡張機能の一部は、次のとおりです。

  • JConsole プラグインサポート: アプリケーションの MBean にアクセスする際に必要なカスタムタブを追加するなど、JConsole で実行される独自のプラグイン構築が可能となります。

  • 動的接続機能: Java SE プラットフォームのバージョン 6 に追加された Attach API をサポートするアプリケーションに JConsole が接続可能となります。

  • 強化されたユーザーインタフェース: データアクセスをさらに簡単にします。

  • 新しい「概要」タブおよび「VM の概要」タブ: 使用中の Java VM に関する全体情報をよりわかりやすく表示します。

  • HotSpot 診断 MBean: 実行時にヒープダンプを要求し、また一部の VM オプションの設定変更を行う API が用意されています。

  • 強化された MBean プレゼンテーション: MBean の処理や属性に対するアクセスを簡単にします。

JConsole の全般については、第 3 章「JConsole の使用」を参照してください。

他のコマンド行ツールは、Java SE プラットフォームでも使用することができます。詳細は、JDK 開発ツールのドキュメント内にある監視ツールの節を参照してください。

Java Management Extensions (JMX) テクノロジ

Java SE プラットフォームのバージョン 6 では、JMX 仕様のバージョンが 1.4 となります。JMX API では、監視および管理を行うアプリケーションを計測することができます。RMI コネクタでは、JConsole などからこの計測へのリモートアクセスが可能となります。

詳細は、Java SE プラットフォームの JMX テクノロジドキュメント を参照してください。JMX API の主なコンポーネントの概要については、次の節を参照してください。

MBean とは

JMX テクノロジの MBean は、「管理対象 Bean」、すなわち管理されるリソースを表す Java オブジェクトです。MBean には「管理インタフェース」が設けられており、このインタフェースは次の要素で構成されます。

  • 読み出しや書き込み可能な名前付きおよび型付き属性。

  • 呼び出し可能な名前付きおよび型付き操作。

  • MBean が送出可能な型付き通知。

たとえば、アプリケーションの構成を表す MBean には、キャッシュサイズなどのさまざまな構成パラメータを表す属性が用意されています。CacheSize 属性を読み込むことにより、現在のキャッシュサイズが返されます。CacheSize への書き込みを行うと、このキャッシュサイズが更新され、アプリケーションの実行中の処理を変更できる可能性があります。save などのオペレーションでは、現在の設定を持続的に保存することができます。設定の変更を行う場合は、MBean で ConfigurationChangedNotification などの通知が送られます。

MBean は、標準または動的なものとなります。標準 MBean は、JavaBeans コンポーネントモデルに由来する、設計パターンに準拠した Java オブジェクトです。動的 MBean では、実行時にその管理インタフェースを定義します。最近では、MXBean と呼ばれる新たな形式の MBean も Java プラットフォームに追加されています。

  • 標準 MBean では、その属性と操作を通じて直接管理を行うリソースが公開されます。属性は、「getter」メソッドや「setter」メソッドを通じて公開されます。操作は、クラスのその他のメソッドのうち、管理側で利用可能なメソッドです。これらのメソッドはすべて MBean インタフェースに静的に定義されており、JMX エージェントでは、イントロスペクションを通じてこれらのメソッドを確認できます。これが新しいリソースを管理可能にする一番わかりやすい方法です。

  • 「動的 MBean」は、その管理インタフェースを実行時に定義する MBean です。たとえば構成 MBean は、XML ファイルを解析することで、公開する属性の名前と型を決定します。

  • 「MXBean」は新しいタイプの MBean です。定義済みの型セットだけを参照する MBean のコーディングが簡単にできます。この方法なら、リモートクライアントを含むクライアントは、MBean の型を示すモデル固有のクラスにアクセスしなくても、MBean を利用できます。次に説明するプラットフォーム MBean は、すべて MXBean です。

MBean サーバー

有効にするには、MBean を MBean サーバーに登録する必要があります。MBean サーバーは、MBean のリポジトリです。各 MBean は、MBean サーバー内の一意の名前を使用して登録されます。MBean には、通常 MBean サーバーを経由してのみアクセスします。すなわち、コードでは MBean に直接アクセスするのではなく、名前を使用することにより、MBean サーバー経由で MBean にアクセスします。

Java SE プラットフォームには、組み込み型のプラットフォーム MBean サーバーが含まれています。詳細は、第 4 章「プラットフォーム MBean サーバーとプラットフォーム MXBean の使用」を参照してください。

MBean の作成および登録

MBean の作成には 2 とおりの方法が用意されています。1 つ目の方法は、MBean である Java オブジェクトを作成し、registerMBean メソッドでそのオブジェクトを MBean サーバーに登録します。もう 1 つの方法では、createMBean メソッドの 1 つを使用して単一オペレーションで MBean の作成および登録を行います。

registerMBean メソッドは、ローカルでの使用を目的とした単純な構造となっていますが、リモートで使用することはできません。createMBean メソッドは、リモートで使用することができますが、場合によってクラスローディングに注意を払う必要があります。MBean サーバーで MBeanRegistration インタフェースを導入している状態で MBean をその MBean サーバーに登録またはそのサーバーから登録解除する場合、その MBean でアクションを実行することができます。

アプリケーションの計測

JMX API で管理用アプリケーションを計測する一般的な手順については、他のマニュアルを参照してください。詳細は、Java Management Extensions (JMX) テクノロジ を参照してください。.

プラットフォーム MXBean

プラットフォーム MXBean は、Java Runtime Environment (JRE) の Java VM とその他のコンポーネントを監視および管理する MBean です。各 MXBean では、クラスローディングシステム、Just In Time (JIT) コンパイルシステム、ガベージコレクタなどの VM 機能の一部をカプセル化します。

表 1-1 では、すべてのプラットフォーム MXBean とそれぞれのプラットフォーム MXBean で管理する VM の状態を一覧で示します。各プラットフォーム MXBean には、プラットフォーム MBean サーバーの登録に必要な一意の javax.management.ObjectName があります。Java VM では、それぞれの MXBean のインスタンスの数が、表に示すように MXBean の機能に応じて 0、1、またはそれ以上となります。

表 1-1 プラットフォーム MXBean

インタフェース

管理下にある VM の区分

オブジェクト名

VM ごとのインスタンス数

ClassLoadingMXBean

クラスローディングシステム

java.lang:type= ClassLoading

1

CompilationMXBean

コンパイルシステム

java.lang:type= Compilation

0 または 1

GarbageCollectorMXBean

ガベージコレクタ

java.lang:type= GarbageCollector、name=collectorName

1 個以上

LoggingMXBean

ロギングシステム

java.util.logging:type =Logging

1

MemoryManagerMXBean (GarbageCollectorMXBean のサブインタフェース)

メモリープール

java.lang:typeMemoryManager、name=managerName

1 個以上

MemoryPoolMXBean

メモリー

java.lang:type= MemoryPool、name=poolName

1 個以上

MemoryMXBean

メモリーシステム

java.lang:type= Memory

1

OperatingSystemMXBean

基盤となるオペレーティングシステム

java.lang:type= OperatingSystem

1

RuntimeMXBean

ランタイムシステム

java.lang:type= Runtime

1

ThreadMXBean

スレッドシステム

java.lang:type= Threading

1

プラットフォーム MXBean (LoggingMXBean は除く) の詳細については、java.lang.management パッケージの API リファレンスに記載されているパッケージの解説を参照してください。LoggingMXBean の詳細については、java.util.logging の API リファレンスを参照してください。

プラットフォーム MBean サーバー

「プラットフォーム MBean サーバー」は、同一の Java VM で実行する、個々に管理されたコンポーネントにより共有することができます。プラットフォーム MBean サーバーには、ManagementFactory.getPlatformMBeanServer() メソッドを使用してアクセスすることができます。このメソッドに対する 1 回目の呼び出しにより、プラットフォーム MBean サーバーが作成され、次にこのサーバーの一意のオブジェクト名を使用してプラットフォーム MXBean の登録が行われます。その後、このメソッドは、最初に作成したプラットフォーム MBeanServer のインスタンスを返します。

動的に作成/破棄された MXBean (たとえば、メモリープールやマネージャー) は、プラットフォーム MBean サーバーで自動的に登録や登録解除が行われます。システムプロパティー javax.management.builder.initial の設定が行われている場合、プラットフォーム MBean サーバーは、指定の MBeanServerBuilder を使用して作成されます。

プラットフォーム MBean サーバーを使用してプラットフォーム MXBean の横にある他の MBean の登録を行うことができます。これにより、MBean はすべて同一の MBean サーバーを介して公開され、ネットワークはより簡単に公開したり、検出することができるようになります。

前の項目 目次 次の項目
会社情報 連絡先 利用規約 プライバシー Copyright 1994-2006 Sun Microsystems, Inc.