[JMX一歩]1、JMXのハローワールド
一、JMX紹介
JMXって何?「JMX(Java Management Extensions)はアプリケーションに管理機能を植え込むフレームワークです.JMXは標準的なエージェントとサービスですが、実際にはユーザーはどんなJavaアプリケーションでもこれらのエージェントとサービスを使って管理することができます」という言葉は、私は今見ても何が起こっているのか分かりません.
私たちはやはりJMXが私たちにどんなメリットを提供してくれるかから理解しましょう.アプリケーションの例を挙げると、サービスのIPアドレス、ポート番号など、システムにはよくいくつかの構成情報がありますが、これらのコードをどのように書くのでしょうか.プログラムの初兄は一般的にプログラムの中で死んで、変更する時までプログラムを変更して、それからコンパイルして発表します; プログラムの熟練者は一般的にこれらの情報を1つのプロファイルに書きます(JAVAは一般的に*.propertiesファイルです)、変更する時までプロファイルを変更するだけで、しかしやはりシステムを再起動して、プロファイルの中の新しい値を読み取るためです; プログラムの上手な人はセグメントコードを書いて、配置値をキャッシュして、システムは値を読む時、まず配置ファイルが更に動いているかどうかを見ます.変更があれば再読み込み、そうでなければキャッシュから値 を読み出す.プログラムの達人は物を取るのが私のために使うことを知っていて、JMXを使います!コンフィギュレーション属性を1つのクラスに集中し、MBeanという東東を書いて、コンフィギュレーションすれば簡単にできます.JMXは、これらの構成情報を変更するためにWEBページを自動的に提供します.
二、準備
JMXは規範であり、SUNはこの規範に基づいてJDK(1.3、1.4、5.0)にJMXインタフェースを提供した.このインタフェースによる実装には,WeblogicのJMX実装,MX 4 J,JBossのJMX実装など多くの種類がある.SUN自身も1部実現したが、JDK 1では1.4の前に、このJMX実装(いくつかのJARパッケージ)はオプションで、そのサイトにダウンロードしなければなりません.JDK5.0は埋め込み、JDK 5をインストールする.0でJMXベースのコードを開発できます.
しかしJDK 5.0はすべてのSUNのJMXに関するコードを含んでいるわけではありません.いくつかのツールクラスはJDK 5に除外されています.0以外です.使用するJDKバージョンの状況に応じて、開発環境の準備についてお話しします.
1、JDK1.3、1.4
SUNのウェブサイトに行ってSUNのJMXをダウンロードして実現して、共に2つのZIPファイル、ウェブサイトをダウンロードします:http://java.sun.com/products/JavaManagement/download.html.
(1)jmx-1_2_1-ri.zip
解凍後のlibディレクトリにはjmxri.jar、jmxtools.jar
(2)jmx_remote-1_0_1_03-ri.zip
解凍後のlibディレクトリにはjmxremote.jar、jmxremote_optional.jar、rmissl.jar
DOSでコマンドラインで開発された場合,この5つのJARパケットをclasspathシステム変数に組み込む.Eclipseで開発する場合は、JARパッケージをプロジェクト属性のLibratries(ライブラリ)リファレンスに追加します.
2、JDK5.0
JDK5.0のjre/lib/rt.jarにはjmxriが含まれています.jar、jmxremote.jar、rmissl.JAr 3つのパッケージのコード.jmxtoolsを使うならjar、jmxremote_optional.JArのクラスは、classpathまたはEclipseのプロジェクトライブラリリファレンスに2つのクラスを追加する必要があります.
3、私が使っている開発環境:JDK 5.0 + Eclipse3.2.
注意:jmxtoolsが使用されるためです.JArのHtmlAdaptorServerクラスのため、このパッケージをプロジェクトライブラリリファレンスに追加します.jmxremote_optional.JArはしばらく行かなくてもいいです.
三、HelloWorldの例
1、Helloは管理する必要があるクラス(普通のクラス)
2、Helloを管理するには、次のように対応するMBeanを作成する必要があります.
説明:MBeanに含まれるメソッドはすべて管理できます.MBeanの命名には規範があり、元のクラス名にMBeanの文字を付けたものです.
3、Agentクラスを作成する
説明: MBeanServerを作成し、MBeanのコンテナ を作成しました. HelloというクラスをMBeanServerに注入します.注入にはObjectNameクラス を作成する必要があります.は、MBeanの管理インタフェースを決定するAdaptorServerを作成します.ここでは、最も一般的なHtml型インタフェースを使用します.AdaptorServerも実はMBeanです. chengang:name=HelloWorldの名前には一定のルールがあり、フォーマットは「ドメイン名:name=MBean名」で、ドメイン名とMBean名は任意に取ることができます.
4、HelloAgentを実行し、Webページを開きます.http://localhost:8082/をクリックし、「name=HelloWorld」リンクをクリックして
五、まとめ
実際のシステムではnameを決定数ライブラリリンクプールの変数に変えることができ、システムの実行パラメータの監視と構成(管理)を実現することができます.また、printHelloなどのいくつかの方法をリモートで呼び出すこともできます.
予告:次編ではJMXについていくつか紹介し、本編のHelloWorldの例を借りていくつかの概念を注入する.
JMXって何?「JMX(Java Management Extensions)はアプリケーションに管理機能を植え込むフレームワークです.JMXは標準的なエージェントとサービスですが、実際にはユーザーはどんなJavaアプリケーションでもこれらのエージェントとサービスを使って管理することができます」という言葉は、私は今見ても何が起こっているのか分かりません.
私たちはやはりJMXが私たちにどんなメリットを提供してくれるかから理解しましょう.アプリケーションの例を挙げると、サービスのIPアドレス、ポート番号など、システムにはよくいくつかの構成情報がありますが、これらのコードをどのように書くのでしょうか.
二、準備
JMXは規範であり、SUNはこの規範に基づいてJDK(1.3、1.4、5.0)にJMXインタフェースを提供した.このインタフェースによる実装には,WeblogicのJMX実装,MX 4 J,JBossのJMX実装など多くの種類がある.SUN自身も1部実現したが、JDK 1では1.4の前に、このJMX実装(いくつかのJARパッケージ)はオプションで、そのサイトにダウンロードしなければなりません.JDK5.0は埋め込み、JDK 5をインストールする.0でJMXベースのコードを開発できます.
しかしJDK 5.0はすべてのSUNのJMXに関するコードを含んでいるわけではありません.いくつかのツールクラスはJDK 5に除外されています.0以外です.使用するJDKバージョンの状況に応じて、開発環境の準備についてお話しします.
1、JDK1.3、1.4
SUNのウェブサイトに行ってSUNのJMXをダウンロードして実現して、共に2つのZIPファイル、ウェブサイトをダウンロードします:http://java.sun.com/products/JavaManagement/download.html.
(1)jmx-1_2_1-ri.zip
解凍後のlibディレクトリにはjmxri.jar、jmxtools.jar
(2)jmx_remote-1_0_1_03-ri.zip
解凍後のlibディレクトリにはjmxremote.jar、jmxremote_optional.jar、rmissl.jar
DOSでコマンドラインで開発された場合,この5つのJARパケットをclasspathシステム変数に組み込む.Eclipseで開発する場合は、JARパッケージをプロジェクト属性のLibratries(ライブラリ)リファレンスに追加します.
2、JDK5.0
JDK5.0のjre/lib/rt.jarにはjmxriが含まれています.jar、jmxremote.jar、rmissl.JAr 3つのパッケージのコード.jmxtoolsを使うならjar、jmxremote_optional.JArのクラスは、classpathまたはEclipseのプロジェクトライブラリリファレンスに2つのクラスを追加する必要があります.
3、私が使っている開発環境:JDK 5.0 + Eclipse3.2.
注意:jmxtoolsが使用されるためです.JArのHtmlAdaptorServerクラスのため、このパッケージをプロジェクトライブラリリファレンスに追加します.jmxremote_optional.JArはしばらく行かなくてもいいです.
三、HelloWorldの例
1、Helloは管理する必要があるクラス(普通のクラス)
/**
* @author ChenGang 2005-12-3
*/
public class Hello implements HelloMBean {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void printHello() {
System.out.println("Hello World, " + name);
}
public void printHello(String whoName) {
System.out.println("Hello , " + whoName);
}
}
2、Helloを管理するには、次のように対応するMBeanを作成する必要があります.
/**
* @author ChenGang 2005-12-3
*/
public interface HelloMBean {
public String getName();
public void setName(String name);
public void printHello();
public void printHello(String whoName);
}
説明:MBeanに含まれるメソッドはすべて管理できます.MBeanの命名には規範があり、元のクラス名にMBeanの文字を付けたものです.
3、Agentクラスを作成する
import javax.management.MBeanServer;
import javax.management.MBeanServerFactory;
import javax.management.ObjectName;
import com.sun.jdmk.comm.HtmlAdaptorServer;
public class HelloAgent {
public static void main(String[] args) throws Exception {
MBeanServer server = MBeanServerFactory.createMBeanServer();
ObjectName helloName = new ObjectName("chengang:name=HelloWorld");
server.registerMBean(new Hello(), helloName);
ObjectName adapterName = new ObjectName("HelloAgent:name=htmladapter,port=8082");
HtmlAdaptorServer adapter = new HtmlAdaptorServer();
server.registerMBean(adapter, adapterName);
adapter.start();
System.out.println("start.....");
}
}
説明:
4、HelloAgentを実行し、Webページを開きます.http://localhost:8082/をクリックし、「name=HelloWorld」リンクをクリックして
五、まとめ
実際のシステムではnameを決定数ライブラリリンクプールの変数に変えることができ、システムの実行パラメータの監視と構成(管理)を実現することができます.また、printHelloなどのいくつかの方法をリモートで呼び出すこともできます.
予告:次編ではJMXについていくつか紹介し、本編のHelloWorldの例を借りていくつかの概念を注入する.