1前書き

  • Java Management Extensions(JMX)フレームワーク** は、Java 1.5で導入され、その開始以来、Java開発者コミュニティで広く受け入れられています。

これは、ローカルまたはリモートでJavaアプリケーションを管理するための、構成が簡単で、スケーラブルで、信頼性が高く、多少なりとも親切なインフラストラクチャを提供します。このフレームワークは、アプリケーションのリアルタイム管理のためのMBeanの概念を紹介しています。

この記事は、基本的なMBeanを作成および設定し、それをJConsoleで管理するための初心者向けのステップバイステップガイドです。


2 JMXアーキテクチャ

JMXアーキテクチャーは3層のアプローチに従います。


  1. Instrumentation layer:

    MBeanはJMXエージェントに登録されています

どのリソースが管理されているか


JMXエージェント層:

維持するコアコンポーネント(MbeanServer)

管理対象MBeanのレジストリと、それらにアクセスするためのインタフェースを提供します。


リモート管理層:

通常JConsoleのようなクライアントサイドツール


3.


MBeanクラスの作成

MBeanを作成する際には、準拠しなければならない特定のデザインパターンがあります。モデルMBeanクラスは、次の名前のインタフェースを実装しなければなりません:


“モデルクラス名”とMBean

.

それでは、MBeanインターフェースとそれを実装するクラスを定義しましょう。

public interface GameMBean {

    public void playFootball(String clubName);

    public String getPlayerName();

    public void setPlayerName(String playerName);

}
public class Game implements GameMBean {

    private String playerName;

    @Override
    public void playFootball(String clubName) {
        System.out.println(
          this.playerName + " playing football for " + clubName);
    }

    @Override
    public String getPlayerName() {
        System.out.println("Return playerName " + this.playerName);
        return playerName;
    }

    @Override
    public void setPlayerName(String playerName) {
        System.out.println("Set playerName to value " + playerName);
        this.playerName = playerName;
    }
}


Game

クラスは、親インタフェースのメソッド

playFootball()

をオーバーライドします。これとは別に、クラスはメンバ変数

playerName

とそれに対するgetter/setterを持ちます。

getter/setterも親インターフェースで宣言されていることに注意してください。


4 JMXエージェントを使ったインスツルメント

JMXエージェントは、ローカルまたはリモートで実行されているエンティティで、登録されているMBeanへの管理アクセスを提供します。

JMXエージェントのコアコンポーネントである

PlatformMbeanServer

を使用し、それに

Game

MBeanを登録しましょう。


Game

クラスのインスタンスを

PlatformMbeanServer

に登録するには、別のエンティティ(

__ObjectNam

__e)を使用します。これは2つの部分からなるStringです。


  • domain

    :任意の文字列にすることができますが、MBeanの命名に従います。

慣習上、Javaパッケージ名を使用する必要があります(名前の競合を避けます)。


key:** カンマで区切られた“

key = value

”のペアのリスト

この例では、これが

ObjectName

です。


“ com.baledung.tutorial:type = basic、name = game”

ファクトリクラス

java.lang.management.ManagementFactory

から

MBeanServer

を取得します。

MBeanServer server = ManagementFactory.getPlatformMBeanServer();

そして、そのカスタム

ObjectName

を使用してモデルMBeanクラスを登録します。

ObjectName objectName = null;
try {
    objectName = new ObjectName("com.baeldung.tutorial:type=basic,name=game");
} catch (MalformedObjectNameException e) {
    e.printStackTrace();
}

最後に、テストできるようにするために、JConsoleを通じてMBeanにアクセスする前にアプリケーションが終了しないように

while

ループを追加します。

while (true) {
}


5 MBeanへのアクセス


5.1. クライアント側からの接続

  1. Eclipseでアプリケーションを起動します

  2. Jconsoleを起動します(JDKインストールのbinフォルダにあります).

あなたのマシンのディレクトリ)
。[接続] – >[新しい接続] – >このローカルJavaプロセスを選択します。

チュートリアル – >接続 – >安全でないSSl接続の警告 – >続行
安全でない接続
。接続が確立したら、右上の[MBean]タブをクリックします。

ビューペイン
。登録済みMBeanのリストが左側の列に表示されます。

  1. com.baeldung.tutorial – >基本 – >ゲームをクリックしてください.

  2. ゲーム中では、属性と属性にそれぞれ1行ずつ、2行あります

オペレーション

プロセスのJConsole部分を簡単に見てみましょう。

リンク:/uploads/edited

jmx

tutorial-768×431.gif%20768w[]


5.2. MBeanの管理

MBean管理の基本は簡単です。

  • 属性は読み書き可能

  • メソッドを呼び出すことができ、引数をそれらに渡すことができますまたは値

彼らから戻った

実際に

Game

MBeanにとってそれが何を意味するのか見てみましょう。



  • attribute

    :

    属性

    playerName

    に新しい値を入力します – for

例 “Messi”をクリックして** 更新ボタン+

次のログがEclipseコンソールに表示されます。


playerNameを値Messi

に設定します



  • operations

    :

    methodのString引数に値を入力する


playFootBall()

– 例えば“ Barcelona”と入力し、メソッドボタンをクリックしてください。

呼び出しが成功したことを知らせる

ウィンドウアラートが表示されます。

次のログがEclipseのコンソールに表示されます。


Messiはバルセロナのサッカーをしています


6. 結論

このチュートリアルでは、MBeanを使用してJMX対応アプリケーションを設定するための基本について説明しました。また、計測されたMBeanを管理するためのJConsoleのような典型的なクライアントサイドツールの使用についても説明しました。

JMXテクノロジの領域は、その範囲と範囲が非常に広いです。このチュートリアルは、それに向けた初心者向けのステップと考えることができます。

このチュートリアルのソースコードはhttps://github.com/eugenp/tutorials/tree/master/core-java/src/main/java/com/baeldung/jmx[over on Github]にあります。