MBean の生成
MBean は管理された Java オブジェクトで、JavaBean[tm] に似ており、JMX 仕様の計測レベルで詳しく説明されたデザインパターンに従います。MBean は、デバイス、アプリケーション、または管理に必要な任意のリソースを表すことができます。MBeans は、管理インタフェース、または読み取り可能または書き込み可能、あるいはその両方の属性のセット、および起動可能な操作のセットを自己記述とともに公開します。管理インタフェースは、MBean のインスタンスの生存を通じて変更されることはありません。また、MBeans は、ある定義されたイベントが発生したときに、通知の発行もできます。
JMX の仕様では、標準 MBeans、動的 MBeans、公開 MBeans、およびモデル MBeans の 4 種類の MBean を定義しています。この章の例では、もっとも簡単な MBean、すなわち標準 MBeans について説明します。
標準 MBeans
標準 MBean は、インタフェースを計測する SomethingMBean と呼ばれる Java インタフェースと、Something と呼ばれる Java クラス を作成することによって定義されます。インタフェースのそれぞれのメソッドは、MBean での属性または操作を定義します。デフォルトでは、それぞれのメソッドは操作を定義します。属性と操作は、任意のデザインパターンに従う単純なメソッドです。標準 MBean は、すべての公開された属性と操作用のメソッドを一覧表示する MBean インタフェースと、このインタフェースを実装し、計測されたリソースの機能を提供するクラスで構成されています。
「MBean」ウィザードを使用した標準 MBean の生成
この節では、標準 MBean を例をあげて詳しく説明します。「MBean」ウィザードはクラスの生成に使用されます。
- 「ファイル」>「新規ファイル」を選択します。
- 「管理」カテゴリを選択します。「ファイルの種類」から「JMX MBean」を選択します。
- 「名前」、「パッケージ」、および「説明」を入力します。
- 「次へ」をクリックします。
- MBean の種類を選択します。デフォルトで、標準 MBean が作成されます。さらに動的で、独自にドキュメント化された MBean にする場合は、動的 MBean を選択します。この種類の MBean を実装するのはさらに複雑ですが、いくつかのドキュメント化された メタデータが提供されています。StandardMBean を拡張 は、標準 MBean と同様に実装が簡単で、動的 MBean の汎用性を持っています。 この種類の MBean は、既存のクラスに管理を追加するのにたいへん適しています。
- MBean クラスをドキュメント化するための説明を入力できます。このウィザードから入力したすべてのドキュメントは、次のものとして生成されます。
- 標準 MBeans の Javadoc。
- MBeanInfo へ追加され、動的、または拡張 MBeans の実行時に MBean についてのドキュメントを提供。
- MBean に MBeanRegistration インタフェースを実装する場合は、「MBeanRegistration インタフェースを実装」チェックボックスを選択します。MBeanRegistration インタフェースは、MBean がライフサイクルを追跡できる便利なインタフェースです。 特定のイベントは MBean の登録 (pre/post register/unregister コールバック) に関連しています。
- 「preRegister メソッドパラメータの非公開フィールドを生成」をチェックできます。このオプションを選択すると、ウィザードがいくつかの非公開フィールドを生成し、preRegister コールバックに渡されたパラメータの参照を保持します。一般に、提供された ObjectName と MBeanServer の参照を保持することは重要です。
- 以降、いつでも「完了」をクリックできます。
- 「次へ」をクリックします。
- MBean に属性を持たせる場合は、「属性を追加」をクリックします。
- 「属性」表の最初の行に、次のように入力します。
- 「名前」列に、属性名 (例: Status) を入力します
- 「型」列で、Java の種類 (例: String) を選択します
- 「アクセス権」列で、アクセスの種類 (例: 読み取り / 書き込み) を選択します
- 「説明」列にこの属性が何を示しているか (例: この MBean の現在のステータス) を入力します
- 「次へ」をクリックします。
- MBean に属性を持たせる場合は、「操作を追加」をクリックします。
- 「操作」表の最初の行に、次のように入力します。
- 「名前」列の操作名 (例: リセット) を入力します
- 「戻り値の型」列で、Java の種類 (例: void) を選択します
- 入力パラメータを追加する場合は、「パラメータ」列で、「編集」ボタンをクリックします
- 「パラメータを追加」をクリックします
- 「パラメータ名」列で、デフォルトのパラメータ名を変更できます
- 「パラメータ型」列で、Java の種類 (例: String) を選択します
- 「パラメータ説明」列に、このパラメータが何を示しているかを入力します
- 「説明」列にこの操作が何を示しているか (例: 現在のステータスをリセット) を入力します
- 「次へ」をクリックします。
- MBean で通知を送信したい場合は、「NotificationEmitter インタフェースを実装」インタフェースを選択します。ウィザードでは、この NotificationBroadcasterSupport 委託に基づいたインタフェースの実装を生成できます。通知シーケンスナンバーを処理するいくつかのコードも生成できます。関連するチェックボックスを選択して、このコードを生成します。
- MBean で通知を定義する場合は、「通知を追加」をクリックします。
- 「通知」表の最初の列に、次のように入力します。
- 「通知クラス」列で、標準 JMX 通知クラスを選択するか、または独自の通知クラスを入力します。AttributeChangeNotification クラスを選択した場合は、通知の種類は自動的に「AttributeChangeNotification.ATTRIBUTE_CHANGE」に設定されます。
- 「説明」列で、通知の説明 (例: ステータス属性が変更されたときに通知を送信) を入力します
- 通知の種類の列で、「編集」ボタンをクリックします
- 「種類を追加」をクリックします
- 「通知」列で、デフォルトの種類を独自の種類 (例: com.foo.event.BIRTHDAY) に変更します
- 「次へ」をクリックします。
- JUnit テストを生成する場合は、「JUnit テストを作成」チェックボックスを選択します。
- 「完了」をクリックします。
- MBean 実装クラスがエディタで開かれます。標準 MBean を選択した場合、<MBean Name>MBean と呼ばれるMBean インタフェース、<MBean Name> と呼ばれる実装クラス、および JUnit テストは、選択した src パッケージまたは test パッケージで生成されます。
- これで、独自のロジックを生成されたコードに追加して、JUnit テストを実行することができます。