4 JMXエージェントの使用

Java Management Extensions (JMX)エージェントは、Java仮想マシン(JVM)内で実行される管理エンティティです。管理対象Bean (MBean)と管理アプリケーションとのパイプ役として機能します。次のセクションでは、JMXエージェントの様々なコンポーネントについて説明します。

MBeanサーバー

MBeanサーバーは、JMXエージェントのコア・コンポーネントです。管理操作に公開されているJMXエージェント内のオブジェクトのレジストリです。MBeanサーバーに登録されているオブジェクトが、管理アプリケーションに公開されます。MBeanサーバーはMBeanの管理インタフェースのみを公開し、オブジェクトの直接参照は公開しません。

エージェントのJVMの外部から管理するリソースは、MBeanとしてサーバーに登録する必要があります。MBeanサーバーには同じJVM内でMBeanにアクセスするための標準化されたインタフェースがあり、ローカル・オブジェクトにとって管理可能なリソースを操作できるという利点があります。MBeanは次によってインスタンス化され登録されます。

  • 別のMBean
  • エージェント自身
  • リモート管理アプリケーション

MBeanを登録する場合は、一意のオブジェクト名を割り当てる必要があります。管理アプリケーションではオブジェクト名を使用して、管理操作を実行する対象となるオブジェクトを特定します。MBeanで利用可能な操作には、次の操作があります。

  • MBeanの管理インタフェースの検出
  • 属性値の読み書き
  • MBeanによって定義された操作の実行
  • MBeanによって送られた通知の取得
  • オブジェクト名または属性値を使用したMBeanのクエリー

エージェント・サービス

エージェント・サービスとは、MBeanサーバーに登録されたMBeanの管理操作を実行できるオブジェクトのことです。エージェントに管理機能を持たせることで、JMXを使用すればより強力な管理ソリューションを構築できます。エージェント・サービスはMBeanとなる可能性もあり、このときはエージェント・サービスとその機能をMBeanサーバーから制御できます。JMX仕様では、次のエージェント・サービスを定義しています。

  • 管理アプレット(m-let)サービスを介した動的クラス・ローディングにより、ネットワークから動的にダウンロードされた新しいクラスとネイティブ・ライブラリを取得し、インスタンス化する。
  • MBean属性の数値または文字列値をモニターし、各種の変更を他のオブジェクトに通知できる。
  • タイマーにより、スケジューリング・メカニズムを提供し、事前に定義した間隔で通知を送信できる。
  • 関係サービスではMBean間の関係を定義し、その関係の一貫性を維持する。

プロトコル・アダプタとコネクタ

プロトコル・アダプタとコネクタを使用すると、リモート管理アプリケーションからエージェントにアクセスできます。MBeanサーバーでインスタンス化され登録された、すべてのMBeanに特有のプロトコルを使用してビューを提供します。JVMの外部の管理アプリケーションでは、次のことが可能になります。

  • 既存のMBeanの属性の取得または設定
  • 既存のMBean上で操作の実行
  • 新しいMBeanのインスタンス化と登録
  • MBeanが送る通知の登録と受信

したがってJMXエージェントを管理するには、少なくとも1つはプロトコル・アダプタやコネクタを含まなければなりません。Java SEプラットフォームには、標準Remote Method Invocation (RMI)コネクタが含まれています。エージェントは1つ以上のプロトコル・アダプタやコネクタを含めることができ、様々なプロトコルによって同時にリモートで管理およびモニターできます。

プロトコル・アダプタ

プロトコルアダプタは、指定されたプロトコルを介したJMXエージェントの管理ビューを提供します。MBeanの操作およびMBeanサーバーを指定されたプロトコルの形式に変換します。また、SNMPのような別の情報モデルへの変換も行います。Java SEプラットフォームは、プロトコルアダプタを標準装備していません。

プロトコル・アダプタに接続する管理アプリケーションは、通常、指定されたプロトコル専用です。これは、特定の管理プロトコルに依存した従来の管理ソリューションの典型的なケースです。管理アプリケーションはJMXエージェントに対して、MBeanサーバーのリモート形式でアクセスするのではなく、MBeanサーバーの操作にマップされた操作でアクセスします。

コネクタ

コネクタは、エージェントとリモート管理アプリケーションを接続するために使用されます。この場合のリモート管理アプリケーションは、JMXテクノロジに対応し、つまり、JMX仕様の分散サービスを使用して開発された管理アプリケーションのことです。この種の通信は、エージェント内のコネクタ・サーバーや、マネージャ内のコネクタ・クライアントが行います。

これらのコンポーネントは、特定のプロトコルを使用してポイントツーポイントで管理操作を透過的に伝送します。JMXリモートAPIはMBeanサーバーに対するリモート・インタフェースを提供し、管理アプリケーションはこのインタフェースを通じて操作を実行します。コネクタは指定されたプロトコル専用ですが、あらゆるコネクタは同じリモート・インタフェースを備えているため、管理アプリケーションではどのコネクタも同じように使用できます。

標準JMXコネクタの詳細は、JMXコネクタを使用したリソースのリモート管理を参照してください。