メニュー

プロダクト



プログラミング


  • Java
    • Web 技術
    • メール技術
      • JavaMail
      • Apache James Mailet
    • Web フレームワーク
      • Jakarta Struts
      • Jakarta Velocity
      • Jakarta Tapestry
      • WebWork2
      • Jakarta Jetspeed
      • Apache Cocoon 2
    • DB 技術
      • JDBC
      • Hibernate
      • Apache Torque
    • DI (IoC) コンテナ
      • Spring Framework
      • Seasar2
      • Apache HiveMind
      • PicoContainer
    • 属性プログラミング
    • テスティング
      • JUnit
      • Jakarta Cactus
      • DBUnit
      • djUnit
      • FitNesse
    • ロギング
      • Apache Log4j
      • Jakarta Commons logging
    • 分散コンポーネント技術
      • EJB
    • リッチ クライアント
      • Java Web Start
    • GUI
    • XML Web サービス
      • Apache Axis
      • Apache SOAP
    • アプリケーション管理
    • トランザクション
    • 開発環境
      • Apache Ant
      • Apache Maven
      • Apache Maven2
    • Eclipse
    • Tips
  • .NET Framework
  • PHP
  • XML
    • SmartDoc
  • 正規表現
  • VB, VBA, VBScript, ASP
  • C/C++

DBMS


  • MySQL
  • PostgreSQL
  • Oracle
  • Microsoft SQL Server
  • HSQLDB
  • SQLite
  • Apache Xindice

アプリケーション サーバ



OS



バージョン管理システム



未整理


最近更新したページ
このウィキの読者になる
更新情報がメールで届きます。
このウィキの読者になる

JMX

JMX (Java Management Extension) は JSR-003 で策定された、アプリケーション管理のためのフレームワークの仕様です。開発者は、アプリケーションの管理を行うために MBean と呼ばれる、アプリケーションを管理するためのコンポーネントを作成します。 JMX に準拠したアプリケーション サーバは、 MBean に様々な手段でアクセスする方法を提供します (HTML ブラウザ、管理コンソールなど) 。

独自の MBean を作成する


MBean には種類があります。

Standard MBeanインターフェイスが静的な MBean 。
Dynamic MBeanインターフェイスが動的な MBean 。 ModelMBean 、 OpenMBean という 2 つのサブクラスがあります。

Stadard MBean


Standard MBean は以下のルールで構成されます。

  • 管理クラスが公開するプロパティ (にアクセスする setter/getter メソッド) 、メソッドを定義したインターフェイスを作成する。
    • 名前は「管理クラス + MBean」。
  • 管理クラスを作成する。
    • public なデフォルト コンストラクタを持つ。
    • インターフェイスを実装する (implements する) 必要はない。同じメソッドを持てば良い。

例えば、

---------------
      Foo
---------------
+ name : String
---------------
+ say() : void
---------------

というクラスを管理クラスとすると、

  • インターフェイス
public interface FooMBean {
    String getName();
    void setName(String name);
    void say();
}

  • 管理クラス (実際は FooMBean を implements する必要はありません)
public class Foo implements FooMBean {
    private String name;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public void say() {
        System.out.println("hello, jmx world!");
    }
}

作成した MBean を使用する


MBeanServer#createMBean メソッドを呼び出すことで、 MBean サーバ内に MBean が作成されます。

ObjectName nm = new ObjectName("MBean:name=Foo");
server.createMBean("jp.gr.java_conf.uguu.sample_jmx_for_mx4j.Foo", nm, null);

MBean が公開するプロパティにアクセスするには、 MBeanServer#getAttribute 、 MBeanServer#setAttribute メソッドを呼び出します。

Object value = server.getAttribute(nm, "name");

server.setAttribute(nm, new Attribute("name", "foo"));

MBean が公開するメソッドを呼び出すには MBeanServer#invoke メソッドを呼び出します。

server.invoke(nm, "say", null, null);

MX4J の HttpAdaptor を使用する


MX4J は JMX 実装の 1 つです。 MX4J は HTTP ベースの管理コンソールを提供しています。それは HttpAdaptor という MBean です。以下に、これを使用する方法を示します。

package jp.gr.java_conf.uguu.sample_jmx_for_mx4j;

import java.io.IOException;

import javax.management.Attribute;
import javax.management.AttributeNotFoundException;
import javax.management.InstanceAlreadyExistsException;
import javax.management.InstanceNotFoundException;
import javax.management.InvalidAttributeValueException;
import javax.management.MBeanException;
import javax.management.MBeanServer;
import javax.management.MBeanServerFactory;
import javax.management.MalformedObjectNameException;
import javax.management.NotCompliantMBeanException;
import javax.management.ObjectName;
import javax.management.ReflectionException;

public class JMXMain {
    public static void main(String[] args) throws MalformedObjectNameException, InstanceAlreadyExistsException, NotCompliantMBeanException, InstanceNotFoundException, AttributeNotFoundException, InvalidAttributeValueException, MBeanException, ReflectionException, IOException {
        MBeanServer server = MBeanServerFactory.createMBeanServer();
        
        ObjectName fooName = new ObjectName("MBean:name=Foo");
        server.createMBean("jp.gr.java_conf.uguu.sample_jmx_for_mx4j.Foo", fooName, null);
        
        ObjectName xsltName = new ObjectName("Server:name=XSLTProcessor");
        server.createMBean("mx4j.tools.adaptor.http.XSLTProcessor", xsltName, null);
        
        ObjectName httpName = new ObjectName("Server:name=HttpAdaptor");
        server.createMBean("mx4j.tools.adaptor.http.HttpAdaptor", httpName, null);
        server.setAttribute(httpName, new Attribute("Port", new Integer(8888)));
        server.setAttribute(httpName, new Attribute("ProcessorName", xsltName));
        server.invoke(httpName, "start", null, null);
    }
}

参照


2005年12月07日(水) 22:28:03 Modified by uguuxp




スマートフォン版で見る