JMX エージェントで MBeans としての Java オブジェクトの登録
これは JMX エージェントが選択された場合のみ使用できるコンテキストアクションで、「管理」メニューの下にあります。次のメニューから管理メニューにアクセスできます。
- 最上位メニュー
- プロジェクトのツリーノードを選択して右クリックしたときに表示されるコンテキストメニュー
アクションの適用領域
このアクションは、JMX エージェントが選択されたときに適用します。JMX エージェントクラスは、「JMX エージェント」ウィザードを使用して生成されたクラスです。
JMX エージェントのinit メソッドは、次の項目に必要なコードで更新されます。
- Java オブジェクトのインスタンス化。このインスタンスの作成は任意です。ラップする Java オブジェクトは、コードのいかなる場所でもインスタンス化できます。
- javax.management.StandardMBean JMX クラスインスタンスで Java オブジェクトをラップ。
- 名前 (MBean ObjectName を提供)
- 登録 (MBeanServer register メソッドの呼び出し)
このアクションを繰り返し呼び出すと、複数の Java オブジェクトを登録できます。
ラップ可能な Java クラス
MBeans として自動的にエクスポートできない Java クラスもあります。JMX によって行われる検査もあります。次のクラスがラップ可能です。
- 少なくとも 1 つのインタフェースを実装するクラス。実装されたインタフェースの 1 つは管理インタフェースとしてエクスポートされます。
- JMX 標準 MBean デザインパターンに準拠するクラス。
「MBean をインスタンス化して登録」アクションの使用
- 「管理」メニューから、「MBean をインスタンス化して登録」を選択します。
- ポップアップウィンドウが表示されます。
- 「StandardMBean にラップされた Java オブジェクトを登録」チェックボックスを選択します。
- 「参照...」ボタンをクリックして、現在のプロジェクトから Java クラスを選択できます。テキストフィールドに Java クラス名を直接入力することもできます。
- 有効な Java クラスを入力すると、「オブジェクト名」テキストフィールドがアクティブになります。デフォルトの ObjectName が提供されます。デフォルトの ObjectName の処理は、次のとおりです。
- ドメイン名は MBean のパッケージ名から派生されます。パッケージ名を反転します (例: com.foo.bar ==> bar.foo.com)。パッケージ名がデフォルトのパッケージ名の場合は、JMX のデフォルトのドメインが使用されます。
- 単一キーにより、type の値として、クラス名が指定されます(例: class MyClass ==> type=MyClass)。
- あらゆるキーと値のペアを自由に追加できます。デフォルトの ObjectName の処理は、「単一の」MBeans に名前をつけるのに適しています。同じ種類の Java クラスを 1 つ以上登録する場合は、少なくとも 1 つのキーを追加して名前の衝突を回避する必要があります。
- 「コンストラクタ」ドロップダウンリストから、クラスコンストラクタを選択できます。Java オブジェクトのインスタンスの生成をしない場合は、「オブジェクトのインスタンス化は生成しない」項目を選択します。
- 終了したら、「了解」をクリックします。
- JMX エージェントソースコードはエディタ内にあります。
- edit メソッドに移動し、生成されたコードを表示します。
- 生成されたコードを更新する必要がない場合、つまり、Java クラスコンストラクタに提供するオブジェクト参照やパラメータがない場合は、エージェントで実行中の MBeans をコンパイルし、実行して表示できます。「実行」>「JConsole で主プロジェクトを実行...」をクリックするか、これに関連するツールバーのアイコンをクリックします。コンパイル、実行、および表示は自動的に処理されます。
生成されたコードの更新
エージェントのソースファイルで、init() メソッドに移動します。
- 「オブジェクトのインスタンス化は生成しない」を選択した場合は、独自のクラスインスタンスを提供する必要があります。次は、AnInterfaceI インタフェースを実装する MyClass クラスを StandardMBean でラップする部分の抜粋です。null パラメータを独自のオブジェクト参照に置き換えてください。
getMBeanServer().registerMBean(
//最初のパラメータをユーザーの MyClass オブジェクトに置き換えます。
new javax.management.StandardMBean(null, I.class),
new ObjectName(":type=Test2"));
- 複数のパラメータを必要とするコンストラクタを選択した場合、生成したコードをそれらのパラメータで更新する必要があります。要求されたパラメータを、ラップされた Java クラスコンストラクタに提供します。次は、AnInterfaceI インタフェースを実装する MyClass クラスを StandardMBean でラップする部分の抜粋です。作業中、MyClass コンストラクタには String が必要です。null パラメータを String 実装に置き換えてください。
// MyClass(String) コンストラクタのパラメータを有効な値で更新します。
getMBeanServer().registerMBean(
new javax.management.StandardMBean(
new MyClass(null, AnInterfaceI.class),
new ObjectName(":type=MyClass"));