`
xuyuanshuaaa
  • 浏览: 394968 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

jmx介绍

 
阅读更多
"JMX(Java Management Extensions)是一个为应用程序植入管理功能的框架。JMX是一套标准的代理和服务,实际上,用户可以在任何Java应用程序中使用这些代理和服务实现管理"
举一个应用实例:在一个系统中常常会有一些配置信息,比如服务的IP地址,端口号什么的,那么如何来写这些代码呢?

   1. 程序初哥一般是写死在程序里,到要改变时就去改程序,然后再编译发布;
   2. 程序熟手则一般把这些信息写在一个配置文件里(JAVA一般都是*.properties文件),到要改变时只要改配置文件,但还是重新启动系统,以便读取配置文件里的新值;
   3. 程序好手则会写一个段代码,把配置值缓存起来,系统在读值的时候,先看看配置文件有没有更动。如有更改则重读一遍,否则从缓存里读取值
   4. 程序高手则懂得取物为我所用,用JMX!把配置属性集中在一个类,然后写一个叫MBean的东东,再配置一下就轻松搞定了。而且JMX自动提供了一个WEB页面来给你来改变这些配置信息。

JMX中MBean有DynamicMBean和StandardMBean两类,前者动态组装一个监控对象,较为复杂,但更为灵活,不需要监控类继承*MBean接口,后者简单。
架构图如下:

1.建立一个需要被JMX管理的类Hello
Java代码

   
package bcndly.test.jmx;   
      
    public class Hello implements HelloMBean {   
           
        private String name;   
      
        public String getName() {   
            return name;   
        }   
      
        public void printHello() {   
            System.out.println("Hello, " + name);   
        }   
      
        public void printHello(String theName) {   
            System.out.println("Hello, " + theName);   
        }   
      
        public void setName(String name) {   
            this.name = name;   
        }   
      
    }  




2.建立Hello类的MBean接口,接口名必须是要管理的类名+MBean
Java代码 复制代码

  
 package bcndly.test.jmx;   
      
    public interface HelloMBean {   
           
        public String getName();   
      
        public void setName(String name);   
      
        public void printHello();   
      
        public void printHello(String theName);   
    }  



3.创建一个Agent类(通过html-adapter方式)
Java代码 复制代码

  
 package bcndly.test.jmx;   
      
    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("bcndyl:name=HelloWorld");   
            server.registerMBean(new Hello(), helloName);   
            ObjectName adapterName = new ObjectName("HelloAgent:name=htmladapter,port=8091");   
            HtmlAdaptorServer adapter = new HtmlAdaptorServer();   
            adapter.setPort(8091);
            server.registerMBean(adapter, adapterName);   
            adapter.start();   
            System.out.println("start.....");   
        }   
      
    }  



说明:

    HtmlAdaptorServer在jmxtools.jar包中,需要到SUN网站下载JMX 1.2.1 Reference Implementation
    MBeanServer是一个包含所有注册MBean的仓库.它是JMX代理层的核心.JMX1.0规范提供一个接口叫 javax.management.MBeanServer. 所有管理的在MBean操作通过MBeanServer执行.使用MBeanServer实例,你能够管理所有MBean.每一个MBean具有一个唯一标志,叫ObjectName.
    ObjectName (javax.management.ObjectName)是一个类,唯一标志一个在MBeanServer的MBean.这个对象名称用于管理应用程序来标志MBean以便操作能够在适当的MBean上被调用.一个对象名称包含两部分:域名称和没有经过排序的一个或者多个关键属性集,语法:[domain name]:property=value[,property=value]
    AdaptorServer,这个类将决定MBean的管理界面,这里用最普通的Html型界面。AdaptorServer其实也是一个MBean
    运行HelloAgent,打开IE输入http://localhost:8091就可以看到注册的MBean,在控制台看printHello的输出结果
3.创建一个Agent类(通过rmi-connector方式)
public class HelloAgent {   
  
    public static void main(String[] args) throws Exception {   
    	MBeanServer mbs = MBeanServerFactory.createMBeanServer("RMIAgent");
    	RmiConnectorServer connector = new RmiConnectorServer();
        ObjectName connectorName = null;
        try {
            connectorName = new ObjectName("RMIAgent:name=RMIConnector");
            mbs.registerMBean(connector, connectorName);
            Hello hello = new Hello();
            ObjectName testMBeanName = new ObjectName("RMIAgent:name=Hello");
            mbs.registerMBean(hello, testMBeanName);
            connector.start();
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
    }    
} 

测试类
public class RMIManager {

    public static void main(String[] args) {
        RmiConnectorClient client = new RmiConnectorClient();
        RmiConnectorAddress address = new RmiConnectorAddress();
        [color=orange]try {
            client.connect(address);
            ObjectName testMBeanName = ObjectName.getInstance("RMIAgent:name=testMBean");
            client.invoke(testMBeanName, "fun", null, null);
            client.setAttribute(testMBeanName, new Attribute("Field", new String(
                    "hello JMX from manager!")));
            System.out.println(client.invoke(testMBeanName, "fun", null, null));
        } catch (Exception e) {
            e.printStackTrace();
        } finally {

        }[/color]
    }
}
分享到:
评论

相关推荐

    jmx介绍和使用

    jmx的简单介绍和使用,包含一些简单的代码示例,看完基本能了解jmx并使用。

    JVM JMX java

    **JMX介绍** JMX为Java应用提供了管理和监控的框架,允许开发者创建、注册和管理MBeans(Managed Beans),这些对象代表了应用的组件或服务。MBeans可以是简单的数据结构,也可以包含操作和通知,使得开发者能够远程...

    《jmx技术介绍》配套源代码

    《JMX技术介绍》一书显然是为了深入探讨这一技术而编写的,配套源代码则提供了实践示例,帮助读者更好地理解和应用JMX。 1. JMX架构: JMX架构由管理代理(MBeans)、服务提供者接口(MBean Server)和管理客户端...

    JMX小例子以及介绍

    Java Management Extensions(JMX)是Java平台上的一个标准技术,用于管理和监控应用程序、操作系统和网络设备。它提供了一种统一的方式来创建、配置、查询和管理Java应用中的资源。本篇文章将深入探讨JMX的核心概念...

    JMX实战 JMX开发

    书中不仅有对于基础知识的介绍,还有对于JMX开发中重大的体系架构问题的深入探讨,总结了大量JMX开发中的设计模式,并讨论了框架、安全性与性能等等。书中提供了几个典型的例子,兼顾各种开发平台,这些例子的代码...

    jmx技术介绍(ppt)

    JMX(Java Management Extensions)是一种Java平台上的管理框架,它提供了一种标准的方式来管理和监控应用程序、设备和服务。JMX的核心概念包括MBean(Management Bean)、MBean服务器和管理接口。 **概述** JMX是...

    书籍JMX-IN-ACTION

    书中首先介绍了JMX的基本概念,包括MBean(管理bean)、MBean服务器、代理和通知等核心元素,以及它们在JMX架构中的作用。MBean是JMX的核心,它代表了可以被管理的资源或服务,而MBean服务器则作为运行这些MBean的...

    TongWeb7的JMX监控.doc

    本文将详细介绍如何使用 JMX 监控 TongWeb7。 首先,要开启 JMX 监控,我们需要查看 TongWeb 的 `server.log` 文件,从中获取 JMX 的连接 URL。例如,在提供的日志中,我们可以看到一个示例 URL:“service:jmx:rmi...

    JMX与Spring 结合

    下面我们将详细介绍几个关键点: 1. **JMX与Spring 结合实例**:在Spring应用中,可以通过配置或者编程方式来注册MBeans(Managed Beans),这些MBeans代表了应用中的特定组件或服务。Spring 提供了`...

    JMX入门的好资料啊

    这篇博客文章(可以通过给定的链接访问)可能是介绍JMX基础知识的一个很好的起点。虽然具体的博客内容未在描述中给出,但我们可以根据JMX的一般知识来探讨其关键概念和用法。 首先,JMX的核心组成部分包括MBeans...

    JMX HelloWorld Download

    **描述解析:** 描述部分为空,但根据标题推测,这可能是一个简单的教程,通过“Hello World”这个经典的编程范例,介绍如何使用JMX来监控和管理Java应用程序。通常,"Hello World"程序会展示最基本的功能,以便初学...

    JMX1.4规范中文版

    在JMX的组织结构中,各个章节详细介绍了JMX的不同方面,包括设备层、代理层和远程API规范,涵盖了从MBean的设计、开发、监控、定时、安全到远程访问的各个方面,为理解和实现JMX提供了详细的指导。 需要特别注意的...

    jmxtools-1.2.1.jar+jmxri-1.2.1.jar.zip

    Java Management Extensions (JMX) 是Java平台上的一个标准技术...尽管描述中提到“介绍没用”,但了解JMX、JMS以及它们如何通过`jmxtools.jar` 和 `jmxri.jar` 实现是至关重要的,这对于理解和利用这些资源至关重要。

    网络管理之jmx开发实战

    本文详细介绍了如何使用JMX进行网络管理的实际操作过程,包括创建Mlet配置文件、创建MBeanServer、调用MBean的方法等。此外,还介绍了几种不同的JMX实现以及如何使用Timer MBean。这些知识对于理解JMX的工作原理及其...

    JMX以RMI方式连接的场景示例

    在本场景中,我们将介绍如何使用RMI(Remote Method Invocation)连接方式来实现JMX框架的各层级的连接。 MBean是JMX框架的基本组件,用于提供管理信息和功能。MBean可以是任何Java对象,只要它实现了相关的接口。...

    jmx 实现远程连接tomcat

    下面我们将详细介绍如何使用jmx实现远程连接tomcat。 一、配置环境 首先,我们需要确保Linux下配置好Java环境,即配置好tomcat和jdk,并且能启动tomcat。这是因为jmx需要依赖Java环境来运行。 二、配置tomcat 在...

    JBoss Admin Development Guide3.26

    1. **JMX介绍** - **JMX层级**:包括Instrumentation层、Agent层、Distributed Services层以及JMX组件概述。 - **JBoss JMX实现架构**:详细介绍了JBoss如何利用JMX来实现其微内核架构。 2. **JBoss类加载器架构*...

    JMX实战

    **概述**:本章节主要介绍了JMX(Java Management Extensions)在资源管理中的作用及其实现方式。JMX是一种标准的技术框架,用于管理和监控应用程序、设备和其他资源。 **详细解释**: - **JMX的基本概念**:JMX由...

    JMX入门教程

    本教程通过一个简单的“Hello World”示例介绍了JMX的基本用法。通过JMX,我们可以轻松地在Java应用程序中集成管理和监控的功能,这对于提高应用的可管理性和可维护性具有重要意义。希望本文能够帮助读者更好地理解...

Global site tag (gtag.js) - Google Analytics