Java Management Extensions (JMX)マネージャの開発およびリモートJMXエージェントへの接続

予想される所要時間: 30分

NetBeans JMXウィザード・モジュールは、NetBeans IDEでJMXテクノロジとワークフローを統合します。このモジュールを使用すると、管理アプリケーションの迅速な開発、既存アプリケーションへの管理の追加、マネージャ・アプリケーションの開発、仮想マシンの状態のモニターが可能になります。

このチュートリアルでは、次の処理を行う方法を示します。

  1. JMXエージェントを起動し、リモートのJMXマネージャからアクセスできるようにします。
  2. JMXマネージャを作成します。
  3. マネージャを実行します。
  4. マネージャを更新し、独自の管理ロジックを追加します。

チュートリアルの課題

このページの内容は、NetBeans IDE 7.2、7.3、7.4および8.0に適用されます

前提条件

このチュートリアルは、次のテクノロジについて基本的な知識またはプログラミング経験を持つ読者を想定して書かれています。

Javaプラットフォームのモニタリングおよび管理の内容が参考になる場合もあります。

チュートリアルに必要なソフトウェア

このチュートリアルでは、コンピュータに次のソフトウェアをインストールしておく必要があります。

ソフトウェアまたはリソース 必須バージョン
NetBeans IDE 7.2、7.3、7.4、8.0、Javaバージョン
Java Development Kit (JDK) バージョン7または8
JMXプラグイン NetBeans更新センターから入手可能
JConsoleプラグイン NetBeans更新センターから入手可能

JMXおよびJConsoleのプラグインをインストールするには、「ツール」>「プラグイン」を選択し、NetBeansアップデート・センターからモジュールをダウンロードします。

リソース

  • Netbeansヘルプ・コンテンツ(「ヘルプ」>「ヘルプの目次」>「JMX」)。このヘルプはウィザードからも利用できます。

管理サンプルAnagramプロジェクトの作成

この課題の目標は、マネージャ・アプリケーションが接続できるJMXエージェントを作成することです。JMXプラグインには、JMXエージェント・サンプルJavaプロジェクトが含まれています。この課題では、JMXエージェントを一から記述するのではなく、このサンプル・プロジェクトを作成します。

  1. 「ファイル」>「新規プロジェクト」を選択します。
  2. 「サンプル」でJMXカテゴリを選択します。
  3. JMXで管理されたアナグラム・ゲーム・プロジェクトを選択します。
    新規プロジェクト・ウィザードのJMXで管理されたアナグラム・ゲーム・プロジェクトのスクリーンショット
  4. 「次」をクリックします。既存のデフォルトのプロジェクト名と場所の値を変更する必要はありません。「メイン・プロジェクトとして設定」が選択されていることを確認し、「終了」をクリックします。

エージェントの実行

この課題の目標は、JMXリモート管理を有効にしてJavaアプリケーションを起動することです。リモート管理では、クライアント・アプリケーション(JMXマネージャ)からアプリケーション(JMXエージェント)に接続し、管理およびモニタリング情報を視覚化できます。

注意:JDK 1.5、JDK 1.6またはJDK 1.7に基づいて実行されているアプリケーションは、リモート管理を有効にできるJMXエージェントです。

  1. JMXAnagramGameプロジェクトが選択され、メイン・プロジェクトとして設定されていることを確認します。
  2. JMXAnagramGameプロジェクトを右クリックし、「プロパティ」を選択します。
  3. プロジェクトの「プロパティ」ダイアログでモニタリングおよび管理カテゴリを選択します。
  4. 「JConsoleをプロジェクトにアタッチ」を選択解除します。
  5. 「RMIリモート・アクセスの有効化」を選択します。「OK」をクリックします。
    エージェントの構成

    エージェントが受信JMXリクエストを待機するポートを指定できます。このチュートリアルでは、デフォルト・ポート(1099)のままにします。別のポート番号を指定する場合は、このチュートリアルの各部分で適切な変更を行う必要があります。また、このチュートリアルでは、プロパティ・ファイルも指定しません。(独自のアプリケーションの場合、管理プロパティ・ファイルの作成に役立つウィザードが提供されます。)

  6. メイン・メニューから「デバッグ」>「モニタリングと管理付きでメイン・プロジェクトを実行」を選択し、Anagram Gameアプリケーションを起動します。

    あるいは、ツールバーの「モニタリングと管理付きでメイン・プロジェクトを実行」ボタン(ツールバー内の、モニタリングおよび管理によるメイン・プロジェクトの実行のボタン)をクリックします。

    アプリケーションを実行すると、「Anagram Game」ウィンドウが開きます。JVMは、ローカル・ホスト・ポート1099でRMIアクセスをリスニングしています。JMXエージェントが実行され、マネージャから管理リクエストが送信されるのを待機しています。

    アナグラム・ゲーム

    「Anagrams」ウィンドウを最小化できますが、アプリケーションを終了しないでください。

マネージャ・プロジェクトの作成

この課題では、JMXAnagramManagerという名前のJavaアプリケーション・プロジェクトを作成し、ウィザードを使用して実行可能なマネージャ・クラスを作成します。

プロジェクトの作成

  1. 「ファイル」>「新規プロジェクト」([Ctrl]-[Shift]-[N])を選択します。
  2. 「Java」カテゴリで「Javaアプリケーション」を選択します。「次」をクリックします。
    新規Javaプロジェクト・ウィザードのスクリーンショット
  3. プロジェクト名として「JMXAnagramManager」と入力します。
  4. 「メイン・プロジェクトとして設定」を選択し(選択されていない場合)、「メイン・クラスの作成」を選択解除します。「終了」をクリックします。

    注意:次の課題で、JMXマネージャ・ウィザードを使用してメインの実行可能クラスを生成します。

「終了」をクリックすると、新しいプロジェクトが「プロジェクト」ツリーに追加されます。JMXマネージャ・プロジェクトは他のJavaアプリケーション・プロジェクトと変わらないことに注意してください。

実行可能マネージャ・クラスの作成

この課題では、JMXマネージャ・ウィザードを使用して実行可能マネージャ・クラスを作成する方法を学習します。

  1. JMXAnagramManagerプロジェクトがメイン・プロジェクトとして設定されていることを確認します。
  2. 「ファイル」>「新規ファイル」([Ctrl]-[N]、Macの場合は[⌘]-N)を選択し、「JMX」カテゴリで「JMXマネージャ」を選択します。「次」をクリックします。
    新規ファイル・ウィザードのJMXマネージャ・テンプレートのスクリーンショット
  3. クラス名として「AnagramsManager」と入力します。
  4. パッケージ名として「com.toys.anagrams.manager」と入力します。
  5. 「mainメソッドを生成」、「プロジェクトのメイン・クラスとして設定」および「サンプルMBean検出コードの生成」が選択されていることを確認します。「次」をクリックします。
  6. 「編集」をクリックして、接続するJMXエージェントURLを入力します。
  7. RMI JMXエージェントURLダイアログ・ボックスでデフォルト値を受け入れます。「OK」をクリックします。

    RMI JMXエージェントURLダイアログ・ボックスは、プロトコル、ホスト、ポートおよびURLパスで構成される有効なJMX URLの入力に有用です。

    RMI JMXエージェントURLダイアログ・ボックスのスクリーンショット

    「プロトコル」ドロップダウン・リストには1つの要素が表示されています。「プロトコル」フィールドは書込み可能で、独自のプロトコルを入力できます。デフォルト・プロトコルであるRMI JVMエージェントは、JDK JMXエージェントへの接続に使用されるRMIプロトコルです。このチュートリアルでこれより前に起動したエージェントは、この種のエージェントです。

    エージェントはlocalhost:1099でリスニングしているため、デフォルトのホストとポートの値を使用します。URLパス・フィールドは読取り専用で、RMI JVMエージェントのパスの構成が表示されます。URLパスは、ホストとポートの値で自動的に更新されます。

    「OK」をクリックすると、RMI JMXエージェントURLダイアログ・ボックスで指定された詳細に基づいた完全なURLでJMXエージェントURLフィールドが更新されます。

  8. 「認証された接続」および「認証された接続に対するサンプル・コードの生成」が選択されていることを確認します。「終了」をクリックします。
    JMXエージェントURLパネルを表示した新規JMXマネージャ・ウィザードのスクリーンショット

    エージェントの起動時に認証構成を指定しなかったため、エージェントへの接続は認証されません。

「終了」をクリックすると、IDEでマネージャ・クラスが作成され、エディタでファイルが開きます。認証された接続を生成できるようにするサンプル・コードが生成されたことを確認できます。

マネージャの実行

この課題では、マネージャを実行し、MBeanを検出する方法を学習します。

  1. AnagramsManager.javaファイルで、メイン・メソッドにあるMBean検出コードのコメントを解除します。次のようなコードになります。
        public static void main(String[] args) throws Exception {
            
            //Manager instantiation and connection to the remote agent
            AnagramsManager manager = AnagramsManager.getDefault();
    
            // SAMPLE MBEAN NAME DISCOVERY. Uncomment following code:
              Set resultSet =
              manager.getMBeanServerConnection().queryNames(null, null);
              for(Iterator i = resultSet.iterator(); i.hasNext();) {
              System.out.println("MBean name: " + i.next());
              } 
    
            // Close connection
            manager.close();
            System.out.println("Connection closed.");
        }
          
  2. エディタで右クリックして「インポートを修正」([Alt]-[Shift]-[I]、Macの場合は[⌘]-[Shift]-[I])を選択し、必要なインポート文(java.util.Setおよびjava.util.Iterator)を生成します。変更を保存します。
  3. メイン・メニューから「実行」>「メイン・プロジェクトの実行」を選択します。

    または、「プロジェクト」ウィンドウでJMXAnagramManagerプロジェクト・ノードを右クリックし、「実行」を選択します。

    「実行」を選択すると、JMXAnagramManagerアプリケーションが起動してリモート・エージェントに接続します。「出力」ウィンドウに検出されたMBean名を表示して、接続を閉じます。

    プロジェクトがコンパイルされ、マネージャが起動されます。検出されたObejctNamesが「出力」ウィンドウに表示されます。AnagramsStats MBeanとJava VM MBeanが認められます。すべてのJava VM標準MBeanは、java.lang JMXドメイン下にあります。

    JMXAnagramManagerの実行のNetBeansの「出力」ウィンドウは次のような表示になります。

    init:
    deps-jar:
    compile:
    run:
    MBean name: java.lang:type=MemoryManager,name=CodeCacheManager
    MBean name: java.lang:type=Compilation
    MBean name: java.lang:type=MemoryPool,name=PS Perm Gen
    MBean name: com.sun.management:type=HotSpotDiagnostic
    MBean name: java.lang:type=Runtime
    MBean name: com.toy.anagrams.mbeans:type=AnagramsStats
    MBean name: java.lang:type=ClassLoading
    MBean name: java.lang:type=Threading
    MBean name: java.lang:type=MemoryPool,name=PS Survivor Space
    MBean name: java.util.logging:type=Logging
    MBean name: java.lang:type=OperatingSystem
    MBean name: java.lang:type=Memory
    MBean name: java.lang:type=MemoryPool,name=Code Cache
    MBean name: java.lang:type=GarbageCollector,name=PS Scavenge
    MBean name: java.lang:type=MemoryPool,name=PS Eden Space
    MBean name: JMImplementation:type=MBeanServerDelegate
    MBean name: java.lang:type=GarbageCollector,name=PS MarkSweep
    MBean name: java.lang:type=MemoryPool,name=PS Old Gen
    Connection closed.
    BUILD SUCCESSFUL (total time: 1 second)
    

これで終了です。よくできました。
このチュートリアルが、JMXによってエクスポートされた情報にアクセスするためのマネージャ・アプリケーションの開発方法の理解に役立っていれば幸いです。


関連項目

詳細は、次を参照してください:

get support for the NetBeans

Support


By use of this website, you agree to the NetBeans Policies and Terms of Use. © 2013, Oracle Corporation and/or its affiliates. Sponsored by Oracle logo