JMXの基本的な紹介
1前書き
-
Java Management Extensions(JMX)フレームワーク** は、Java 1.5で導入され、その開始以来、Java開発者コミュニティで広く受け入れられています。
これは、ローカルまたはリモートでJavaアプリケーションを管理するための、構成が簡単で、スケーラブルで、信頼性が高く、多少なりとも親切なインフラストラクチャを提供します。このフレームワークは、アプリケーションのリアルタイム管理のためのMBeanの概念を紹介しています。
この記事は、基本的なMBeanを作成および設定し、それをJConsoleで管理するための初心者向けのステップバイステップガイドです。
2 JMXアーキテクチャ
JMXアーキテクチャーは3層のアプローチに従います。
-
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. クライアント側からの接続
-
Eclipseでアプリケーションを起動します
-
Jconsoleを起動します(JDKインストールのbinフォルダにあります).
あなたのマシンのディレクトリ)
。[接続] – >[新しい接続] – >このローカルJavaプロセスを選択します。
チュートリアル – >接続 – >安全でないSSl接続の警告 – >続行
安全でない接続
。接続が確立したら、右上の[MBean]タブをクリックします。
ビューペイン
。登録済みMBeanのリストが左側の列に表示されます。
-
com.baeldung.tutorial – >基本 – >ゲームをクリックしてください.
-
ゲーム中では、属性と属性にそれぞれ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]にあります。