`
淘气天空lc
  • 浏览: 46712 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JMX(一)-------MBean server

    博客分类:
  • JVM
阅读更多

JMX(JAVA Management Extensions)技术是java5的新特性,它提供一种简单,标准的方式去管理应用程序,设备,服务等资源。
1什么是JMX
    JMS定义了一些设计模式,api和一些服务来进行应用程序和网络的监控,这些都是基于java语言环境的。
使用JMS技术,资源被一种叫做MBeans(Managed Beans)监控,这些MBean都在一个核心对象管理server上注册。叫做MBean server.
2.为什么要使用JMS
JMS给java开发者提供了自由的方式去监控java代码,创建智能java agents,实现分布式管理的中间件和管理者,并且能够快速整合这些方案到的管理和监控系统。
通过一个简单的例子来创建一个JMX agent来管理MBean。

首先创建一个MBean接口:

 

public interface HelloMBean {
    public void sayHello();
    public int add(int x,int y);
    public String getName();
    public void setCacheSize(int size);
    public int getCacheSize();
}
根据JMX描述,MBean接口包括一些可读或者可写的属性,还有一些定义好的方法,这些方法能够被MBean管理应用程序调用。

 

实现类,类名必须为接口sufixMBean的前缀。也就是Hello。如果不按这个命名注册MBean就会有问题。

 

public class Hello implements HelloMBean {
    //可读属性 不可写
    private final String name = "gittudou";
    private int  DEFUALT_CACHE_SIZE = 200;
    //可读写属性
    private int cacheSize = DEFUALT_CACHE_SIZE;

    public void sayHello() {
        System.out.print("hello jmx");
    }

    public int add(int x, int y) {
        return x+y;
    }

    public String getName() {
        return this.name;
    }
    //使用synchronized 同步控制 防止多个线程同时调用set方法
    public synchronized void setCacheSize(int size) {
       this.cacheSize = size;
        System.out.println("Cache size now "+this.cacheSize);
    }
    public int getCacheSize() {
        return this.cacheSize;
    }
}
 现在一个简单的MBean类写好了。然后需要再MBean server上注册

 

 

public class Main {
    public static  void  main(String args[]) throws  Exception{
        //获取MBeanServer  如果没有MBean server存在那么下面会自动调用ManagementFactory.createMBeanServer()
        MBeanServer mBeanServer = ManagementFactory.getPlatformMBeanServer();
        //包名加 类名 创建一个ObjectName
        ObjectName name = new ObjectName("git.tudou.manage.jmx.test.essential:type=Hello");
        //创建一个Hello实例
        Hello mbean = new Hello();
        //在MBean server上注册MBean
        mBeanServer.registerMBean(mbean,name);
        System.out.println("Waiting forever...");
        //线程等待 management 操作 
        Thread.sleep(Long.MAX_VALUE);
    }
}
 执行这个main方法,接下来我们可以通过JDK提供的一个jconsole去连接这个本地进程。打开MBean,点击Hello

 这是一个简单的MBean,使用jconsole去连接,当然也可以使用RMI进行远程连接MBean server,来进行管理和执行操作。在我的代码中还有几种类型的MBean,比如MXBean,加入notification的MXBean,这里没有提到如何自己连接MBean server,接下来用自己实现的代码连接MBean server.
代码附件
 
 
 
  • 大小: 124.7 KB
分享到:
评论

相关推荐

    jmx mbean学习 jmxtools下载

    JMX 1.2.1 Reference Implementation(重点) Include com.sun.jdmk.comm.HtmlAdaptorServer class http://www.sun.com/software/jdmk/ Downloads, sun-jdmk-runtime-5.1-b34.2.zip/SUNWjdmk/5.1/lib/jdmkrt.jar

    jmx_exporter:一个通过HTTP公开JMX Bean以供Prometheus使用的过程

    JMX到Prometheus导出器:一个收集器,该收集器可以可配置地抓取和公开JMX目标的mBean。 该导出程序旨在作为Java代理运行,公开HTTP服务器并提供本地JVM的度量。 它也可以作为独立的HTTP服务器运行,并刮擦远程JMX...

    prometheus-jmx-kafka:Kafka JMX配置文件

    收集器可配置地刮擦并公开JMX目标的Kafka mBean。 它运行Java代理,公开HTTP服务器并提供本地JVM的服务指标。 跑步 要作为javaagent运行,请并运行: java -javaagent:/usr/bin/jmx_prometheus_javaagent-0.3.0....

    java版ss源码-jmxproxy:JMX到HTTP代理

    MBean 属性。 结果采用易于解析的 JSON 格式。 服务器组件是使用 . 目录 下载 最新版本编译神器: 最新版本源代码存档: 编译 构建是一个简单的调用。 要编译、测试和打包 JMXProxy,请执行以下操作。 $ mvn clean ...

    JMX4Ant-开源

    JMX4Ant提供了与来自Ant的JMX MBean进行交互的能力。 支持几种流行的JMX实现和J2EE服务器,包括JBoss和BEA WebLogic Server。

    JavaSE-6.0-英文手册(2008/11/30_FullUpdate)

    Machine Java HotspotTM Client VM Java HotspotTM Server VM Platforms SolarisTM Linux Windows Other -------------------------------------------------------------------------------- Release ...

    jmxpromo:具有基于领事的发现和运行时附件的Prometheus JMX导出器

    一个收集器,可以以可配置的方式抓取和公开JMX目标的mBean。 它打算作为Java代理运行,公开HTTP服务器并抓取本地JVM。 这是器的分支。 显着变化: 配置文件是可选的 更加灵活的代理配置(任何键值都可以定义为...

    soa_rest_api:适用于 Oracle SOA Suite 的 REST API - 用 JRuby 编写并使用 Rails

    WebLogic Server 提供了一组 MBean,可用于通过 JMX 配置、监视和管理 WebLogic Server 资源。 Ruby 版本 - 仅在 JRuby 1.7.13 上测试过 配置 - 需要为 wlfullclient.jar 设置 CLASSPATH,除非您想使用 Trinidad,...

    spring-boot-reference.pdf

    52.1. Customizing MBean Names 52.2. Disabling JMX Endpoints 52.3. Using Jolokia for JMX over HTTP 52.3.1. Customizing Jolokia 52.3.2. Disabling Jolokia 53. Loggers 53.1. Configure a Logger 54. Metrics...

    jolokia:辣椒素上的JMX

    Jolokia是一种远程访问JMX MBean的新方法。 它与JSR-160连接器的不同之处在于它是一种基于代理的方法,该方法使用REST风格的HTTP上的JSON进行通信。 为不同的环境提供了多个代理: 用于在Java EE Server中作为Web...

    BEA WebLogic Server管理指南

    在Windows、Linux和AIX上成功安装和配置WebLogic Application Server在一个或多个服务器与群集上部署和配置应用程序管理JMX对象,如MBean与MBeanServer 理解J2EE服务,包括EFB、JNDI、JDBC、JMS等 使用管理控制台来...

    JConsole_远程监控Tomcat_ricky

    JConsole是一个基于JMX的GUI工具,用于连接正在运行的JVM,不过此JVM需要使用可管理的模式启动。如果要把一个应用以可管理的形式启动,可以在启动是设置com.sun.management.jmxremote。JConsole能够提供被监控虚拟机...

    how-tomcat-works

    20.5.3 自己编写一个model MBean 164 20.5.4 注册 164 20.5.5 ManagedBean 165 20.5.6 BaseModelMBean 165 20.5.7 使用Modeler API 165 20.6 Catalian中的MBean 165 20.6.1 ClassNameMBean 165 20.6.2 ...

    java jdk-api-1.6 中文 chmd

    javax.management.remote.rmi RMI 连接器是供 JMX Remote API 使用的一种连接器,后者使用 RMI 将客户端请求传输到远程 MBean 服务器。 javax.management.timer 提供对 Timer MBean(计时器 MBean)的定义。 javax...

    Spring-Reference_zh_CN(Spring中文参考手册)

    2.6.2. JMX 2.6 .3. 任务规划 2.6.4. 对Java 5(Tiger)的支持 2.7. 移植到Spring 2.0 2.7.1. 一些变化 2.7.1.1. Jar包 2.7.1.2. XML配置 2.7.1.3. Deprecated的类和方法 2.7.1.4. Apache OJB 2.7.1.5. iBatis 2.8....

    JAVA_API1.6文档(中文)

    javax.management.remote.rmi RMI 连接器是供 JMX Remote API 使用的一种连接器,后者使用 RMI 将客户端请求传输到远程 MBean 服务器。 javax.management.timer 提供对 Timer MBean(计时器 MBean)的定义。 javax...

    spring chm文档

    2.6.2. JMX 2.6.3. 任务规划 2.6.4. 对Java 5(Tiger)的支持 2.7. 移植到Spring 2.0 2.7.1. 一些变化 2.8. 更新的样例应用 2.9. 改进的文档 I. 核心技术 3. 控制反转容器 3.1. 简介 3.2. 容器和bean的基本...

    WLHostMachineStats-开源

    WLHostMachineStats是一个小型代理(JMX MBean),可在WebLogic域中的每个WebLogic Server中运行。 它用于从托管每个WebLogic Server实例的计算机收集统计信息(操作系统CPU /内存/网络使用情况)。 另请参阅...

Global site tag (gtag.js) - Google Analytics