澳门新葡亰平台游戏网站JMX

澳门新葡亰平台游戏网站 4

本文由码农网 –
苏文鹏原创翻译,转发请看清文末的转发供给,款待插手大家的付费投稿布署!

简介

全称Java Management
Extensions,从Java5.0始发引入到规范Java手艺平高雄。JMX提供了一个正规的方法去管理能源,因为JMX是一种动态技艺,你可以在被拘留能源创立、实例化和落到实处的时候监察和控制和保管他们。你也得以行使JMX手艺去监听和扣留Java虚构机。

本文由码农网 –
苏文鹏原创翻译,转发请看清文末的转发需要,接待参预大家的付费投稿安插!

上一篇:Java管理扩充指南之JMX技能总览

Why JMX

  • ###### JMX技艺使Java应用程序没有必要在管理方面投入大批量蒸蒸日上

JMX大概能够在任何扶助Java的设施上运转,并且只要求停放一个管理对象服务器(MBean
Server),使它的片段效果作为二个或多少个被拘留的bean(MBeanState of Qatar在对象服务器上登记。然后就足以从管住基本功设备中收益。

  • ###### JMX技艺提供了一个正规的点子去管理Java应用、系统和网络

标准Java平台都帮助JMX结构,因而一旦契合JMX标准都足以透过JMX管理。

  • ###### JMX让为Java应用提供了可伸缩、动态、布满式的田间管理构造

使Java应用能够远程管理。

JMX(Java管理扩大)种类

JMX(Java管理扩大)种类目的在于介绍饱含于Java根基版本(Java
SE)中的JMX本领。本连串提供了何等运用JMX首要手艺特色的成都百货上千示范。

  • 一、JMX本领总览简介JMX才干,包蕴它的应用目标和首要性功用。
  • 二、MBean简要介绍介绍JMX本领的基本概念-被管理的beans,也称作MBeans。同期会介绍MXBeans。
  • 三、布告介绍JMX能力中的布告机制。
  • 四、远程管理显示什么兑现JMX
    API的远程管理技艺和怎么创制JMX客商端程序。
  • 五、更上一层楼呈现JMX手艺的更是高档的文书档案,用于更进一层的深刻学习。

2  MBean简介

JMX架构

澳门新葡亰平台游戏网站 1

JMX架构

澳门新葡亰平台游戏网站 2

JMX架构

JMX技艺总览

2.1.  MBeans简单介绍

本课程介绍JMX API的基本概念,它被叫作被管理的bean,可能MBean。

MBean是二个被管理的Java对象,就如Javabean组件相符,不过它信守JMX标准的设计方式。MBean能够表示设备、应用或然别的须要被管理的财富。MBeans揭穿如下管理接口:

  • 一组可读和可写属性,只怕双方同时兼备。
  • 一组调用方法。
  • 自个儿描述。

在MBean实例的生命周期中,管理接口都不会爆发变化。MBeans能够在某种预约义的事件发生时发送公告。

JMX标准定义了两种MBean:

  • 标准MBeans
  • 动态MBeans
  • 开放MBeans
  • 模型MBeans
  • MXBeans

本种类的例子首要介绍最简便易行的MBeans类型-标准MBeans和MXBeans。

主干术语

  • ###### Instrumentation

要保管的能源。使用Java Bean描述要保管的能源。那些Java
Bean叫MBean(Management Bean)。

  • ###### MBean Agent

代理层。首要定义了各样服务以致通讯模型,和急需被管理的财富在同一机器上,大旨模块是MBean
Server,全部的MBean都要向它注册,技能被管理。注册在MBeanServer上的MBean并不直接和长途应用程序进行通信,他们通过协商适配器(Adapter)和连接器(Connector)进行通讯。

  • ###### Distributed Layer

也叫Remote Management Layer. 即远程经营层。MBean
Server信任于该层的合计适配器(Adaptor)和连接器(Connector),让JMX
Agent能够被该JVM外面包车型客车治本种类远程访谈。支持各类商业事务:SNMP,HTML,RMI.

1.1. JMX技能完全概述

JMX(Java管理扩展)本事是Java根底版本(Java SE)的一有个别,最先投入到J2SE
5.0发行版。

JMX技巧提供了一种简易的、功底的主意,用来管理诸如应用、设备和劳务等能源。由于JMX技艺是动态的,你能够运用JMX技能来监督和管理处在创造、安装和平运动行态的财富。你仍为能够动用JMX技监和治本Java虚构机。

JMX标准定义了运用Java语言管理、监察和控制应用和互连网的结构、设计格局、APIs和服务。

利用JMX技巧,财富会被一到多少个名字为被拘禁Beans(MBean)的Java对象管理。MBean
server担任管理代理的角色,可运转与支持Java语言的器材上。

JMX标准定义了JMX代理,它用于管理任何被科学配置的财富。JMX代理由MBean
server(MBean在MBean
server中登记)和一多级管理MBean的劳动组合。那样,JMX代理直接决定能源并使远程处理程控财富变为恐怕。

财富被管理的措施完全部独用立于管理类的构造。财富被视为可被拘留,与管理程序怎么样兑现未有其余关联。

JMX技巧定义了主导的连接器(称之为JMX连接器),它让您可以看到从远程管理程序访谈JMX代理。JMX连接器的保管接口还行不相同的情商。因而,管理程序能够更透明的管住财富,而不用担忧使用的通信契约。JMX代理也足以被不满足JMX标准的连串可能应用调用,只要那么些系统大概利用支撑JMX代理就可以。

2.2.  标准MBeans

本章首要介绍标准MBean的大概例子。

标准MBean通过编写制定SomethingMBean的java接口进行定义,然后定义一个Java类Something完毕接口SomethingMBean。SomethingMBean中的方法用于定义属性和操作。暗中认可景况下,每一个方法都会定义多个操作。属性和操作都以满足特定设计方式的java类模式。标准MBean由MBean接口和一个落实类组成。MBean接口的格局列出装有暴露的习性和操作。达成类实现MBean接口以此提供处理财富功用。

下边的章节介绍标准MBean的例子和二个轻巧易行的JMX代理管理MBean。

2.2.1.  MBean接口

MBean接口HelloMBean,如下:

package com.example; 

public interface HelloMBean { 

    public void sayHello(); 
    public int add(int x, int y); 

    public String getName(); 

    public int getCacheSize(); 
    public void setCacheSize(int size); 
}

遵守预订,MBean接口的名称由其完结类名+MBean后缀组成。在本例中,MBean接口类为HelloMBean,Hello类完毕该接口。

依赖JMX规范,MBean接口由属性(可读getter方法也许可写setter方法)和操作(揭破的不二等秘书籍)组成。HelloMBean接口定义了两种方法:add(卡塔尔国和sayHello(State of Qatar。

HelloMBean定义多少个属性:Name是只读的(getter方法)String属性,CacheSize是可读且可写的(getter和setter)int属性。Getter和setter方法允许管理程序访问并改动属性的值。在JMX标准中,getter方法是以get最初而且不能重回void的别的public方法。getter方法允许管理程序读取属性的值。Setter方法是以set开始並且吸收接纳三个参数的别的public方法。setter方法允许管理程序更改属性的值。

这么些操作和品质在MBean实现中呈现。

2.2.2.  MBean实现

Hello类试下HelloMBean接口如下:

package com.example; 

public class Hello ... 
    implements HelloMBean { 
    public void sayHello() { 
        System.out.println("hello, world"); 
    } 

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

    public String getName() { 
        return this.name; 
    }  

    public int getCacheSize() { 
        return this.cacheSize; 
    } 

    public synchronized void setCacheSize(int size) {
        ...

        this.cacheSize = size; 
        System.out.println("Cache size now " + this.cacheSize); 
    } 
    ...

    private final String name = "Reginald"; 
    private int cacheSize = DEFAULT_CACHE_SIZE; 
    private static final int 
        DEFAULT_CACHE_SIZE = 200; 
}

Hello类完结HelloMBean。sayHello(卡塔尔(قطر‎和add(State of Qatar操作很简单,实操能够可繁可简,依操作简繁而异。

并且,Hello定义了获得Name属性的getter方法和读写CacheSize属性的getter和setter方法。本例中,Name属性不会变动。然则,在实际上意况中,该属性随着财富的运维,依旧得以改变。比方,这些属性值能够象征运维时刻依然内部存储器占用。这里,该属性值为Reginald。
调用setCacheSize 方法令你可以改进CacheSize
的值(初叶值为200)。真实场景中,改动CacheSize属性值须求任何操作同一时间实施,比如申请、释放内部存款和储蓄器。本例仅打字与印刷该值以保证其曾经转移。可是,更眼花缭乱的操作绝不单纯调用println(卡塔尔。

HelloMBean接口和实在现类Hello定义之后,便足以应用它们处理财富了,如下节所示。

2.2.3.  创办JMX代理处理能源

能源通过MBean装配后,能源的治本能够经过JMX代理试行。

JMX代理的为主零件时MBean Server。MBean
server是用以MBean进行登记的对象管理服务器,包罗一体系的治本MBeans的劳务。查看MBeanServer的API文档叩问MBean
server完结详细情况。

Main class完结了一个为主的JMX代理。

package com.example; 

import java.lang.management.*; 
import javax.management.*; 

public class Main { 

    public static void main(String[] args) 
        throws Exception { 

        MBeanServer mbs = ManagementFactory.getPlatformMBeanServer(); 
        ObjectName name = new ObjectName("com.example:type=Hello"); 
        Hello mbean = new Hello(); 
        mbs.registerMBean(mbean, name); 

        ...

        System.out.println("Waiting forever..."); 
        Thread.sleep(Long.MAX_VALUE); 
    } 
}

JMX代理类Main首先得到MBean server,MBean server通过调用
java.lang.management.ManagementFactory类的getPlatformMBeanServer(卡塔尔(قطر‎方法开张开始化。假诺平台早前并未有开创MBean
server,getPlatformMBeanServer会自动调用JMX方法MBeanServerFactory.createMBeanServer(卡塔尔(قطر‎创立MBean
server。Main中MBeanServer的实例名字为mbs。

接下来,Main类为MBean实例定义三个对象名(ObjectName)。每一种JMX
MBean必需有二个目的名。对象名是JMX类ObjectName的实例,必需满足JMX规范的语法。即对象名必得含有八个域domain和一花样超多的key-value属性值。Main中定义的对象名中,域domain是com.example(也正是MBean所在的包名)。同期,key-value属性值注脚该对象名额属性type值为Hello。

接下去创立Hello对象的实例mbean,该对象注册到MBean
server实例mbs中,注册需传递mbean和指标名,注册情势是MBeanServer.registerMBean()。

Hello MBean注册到MBean
server后,Main就只需等候Hello实行管理操作。本例中,这几个管理操作时调用sayHell(卡塔尔国和add(卡塔尔(قطر‎,获取和装置属性值。

2.2.4.  运作标准MBean实例

成就例子中的各样后,你现在得以运作本例子。本例使用JConsole与MBean实行交互作用。

要运行本例,施行以下步骤:

a)保存jmx_examples.zip到你的劳作目录。

b卡塔尔国在极限窗口中经过如下命令解压压缩包。

unzip jmx_examples.zip

cState of Qatar在办事目录中编写翻译java类。

javac com/example/*.java

dState of Qatar若是您接受JDK6及其上述,使用如下命令运营:

java com.example.Main

比如你运维低于JDK6以下的本子,你须要增加额外的运维参数来揭露管理和督察接口。

java -Dcom.sun.management.jmxremote example.Main

Main类会打字与印刷音讯以确认其运维。

e卡塔尔国在本机另四个顶峰中运营JConsole。

jconsole

新建连接对话框博览会现可再三再四的、处于运转中的JMX代理列表。

f卡塔尔国在新建连接对话框中,选择com.example.Main并连接。一组当前平台的移位便交易会现出来。

g卡塔尔(قطر‎点击MBean标签。该标签显示全部注册到MBean server的MBean。

hState of Qatar在右边手边栏,展开MBean树形构造的com.example节点。你会见到例子中的Hello。假若点击Hello,你能够观看它揭露的习性和办法。

i卡塔尔张开MBean树形结构中Hello中的属性。你会见到Hello类定义的MBean属性。

j卡塔尔(قطر‎校正CacheSize属性值为150。在起步Main程序的终极窗口中,会唤起该属性的值已经产生变化。

k卡塔尔打开MBean属性布局中Hello中的方法。你将可以看出sayHello和add方法。

l卡塔尔(قطر‎通过点击sayHello开关调用sayHello操作。JConsole对话框将会提醒您方法调用成功。Main运营的极点窗口将会显得“hello,
world”。

mState of Qatar点击add方法的开关,输入多个整形参数。JConsole的对话框将会交到结果。

n卡塔尔通过点击“连接”->“退出”关闭JConsole。

MBean分类

  • ###### Standard MBean

  • ###### MXBean

  • ###### Dynamic MBean

  • ###### Open MBean

  • ###### Module MBean

1.2. 怎么选拔JMX手艺?

JMX本事为开荒者提供了一种越来越灵活的艺术来管理基于Java的应用程序,创设更迅捷的代理,完成分布式管理中间件和平滑地集成这几个解决方案到曾经存在的管理和督察平台。

1.2.1. JMX本领驱动Java应用程序易于被管理

轶闻JMX的代理能够运作于多数可运转Java程序的设施上。因而,java应用程序可以只需求付出比一点都不大的安插代价就会被拘留起来。Java应用程序只须求停放三个被管理的目的server并开放其效劳到MBeans,然后将MBeans注册到对象server。那必是应用程序被JMX管理所须求做的总体。

1.2.2. JMX才具提供基本的法子来保管Java应用程序、系统和互连网

诸如,Java集团版本(Java
EE)5应用服务器相符JMX构造,因而可应用JMX技艺对其开展管制。

1.2.3. JMX技巧可用于管理Java设想机

Java设想机可以使用JMX本事拘系。你能够运转一个JMX代理来访谈内置的Java设想机,并得以远程监察和控制和治本Java设想机。

1.2.4. JMX技艺提供了一种可扩展、动态的管制结构

每叁个JMX代理服务都以三个独立的模块,都能够依赖需求被插入四处理代理中。这种依据组件的艺术表示JMX技术方案典型能够适应于小范围的装置和科学普及的调换机。JMX手艺职业提供一多种的为主代理服务。并可在管理程序中开支、动态加载、卸载和立异扩充服务。

1.2.5. JMX技艺存在于基本的Java手艺中

无论是还是不是要求,JMX工夫专门的职业存在于Java标准,比如JNDI API。

1.2.6. 依照JMX的利用能够从NetBeans IDE中一贯开立

您可以从NeBeans Update
Center(选用:工具->更新为主)中拿走创立JMX应用的模块。那能减低开采JMX程序的复杂度。

1.2.7. JMX技术集成了已有个别处理方案和新兴本事

JMX
APIs接口开放,任何保管连串中间商都可以兑现。JMX实施方案得以运用查找和发现服务和左券,比方JINI网路技巧和SLP。

2.3.  MXBean

本节介绍特种的MBean,也称之为MXBean。

MXBean是一种援用预约义数据类型的MBean。通过这种方法,您可以确认保证别的客商机(包含长途客商机)都得以使用你的MBean,而不须要顾客机访谈表示MBean类型的特定的类。MXBean提供一种有益的点子来绑定数据,而没有必要客商端进行特殊的绑定操作。

相仿徐婧规MBean,MXBean定义七个名称为SomethingMXBeans的java接口和叁个java类完毕。但是,不一致于标准MBans,MXBeans不需求java完成类必得名称叫Something。每一个接口中的方法定义属性或许操作。@MXBean申明能够用来申明Java接口,那样接口的名号就不要以MXBean为最终了。

MXBeans富含于J2SE
5.0本子的java.lang.management包中。然则,除了java.lang.management中定义的一组规范MXBeans,使用者能够定义自身的MXBeans。

MXBeans的珍视思虑是:MXBean接口java.lang.management.MemoryMBean
中援用的诸如java.lang.managementMemoryUsage类型,该类型映射一组称之为开放类型(定义为javax.management.openbean包中)的门类。映射的具体准则详见MXBean规范。可是,对于简易的诸如int、String类型的映照准则保持不改变,而对于复杂类型MemoryUsage则映射为焦点项目CompositeDataSupport。

MXBean的事例由如下文件构成,你能够在jmx_examples.zip中找到。

  • QueueSampler定义MXBean接口
  • 落到实处地点接口的QueueSampler类
  • MXBean 接口的getQueueSample方法重临类型QueueSample类
  • Main类,程序运转类

MXBean例子上述这个类完毕如下动作:

  • 概念轻便的MXBean,处理Queue<String>类型的财富
  • 概念getter方法:getQueueSample再次回到Queue的快速照相QueueSample类,该类将如下类绑定在一起。
    • 快速照相时间
    • 队列queue大小
    • 特定期期系列queue的尾部
  • 将MXBean注册到MBean server

2.3.1.  MXBean接口

日常来讲代码显示示例Queue萨姆plerMXBean的MXBean接口:

package com.example; 

public interface QueueSamplerMXBean { 
    public QueueSample getQueueSample(); 
    public void clearQueue(); 
}

介怀,你声贝拉米(Bellamy卡塔尔个MXBean接口的艺术与评释标准MBean接口的不二等秘书技完全相通。Queue萨姆plerMXBean接口定义getter方法:getQueueSample和操作clearQueue。

2.3.2.  定义MXBean操作

QueueSampler例子中定义的MXBean操作如下:

package com.example; 

import java.util.Date; 
import java.util.Queue; 

public class QueueSampler 
                implements QueueSamplerMXBean { 

    private Queue<String> queue; 

    public QueueSampler (Queue<String> queue) { 
        this.queue = queue; 
    } 

    public QueueSample getQueueSample() { 
        synchronized (queue) { 
            return new QueueSample(new Date(), 
                           queue.size(), queue.peek()); 
        } 
    } 

    public void clearQueue() { 
        synchronized (queue) { 
            queue.clear(); 
        } 
    } 
}

QueueSampler完毕MXBean接口中定义的getter方法getQueueSampler和clearQueue操作。getQueueSample操作重回Queue萨姆ple类的实例,该实例由java.util.Queue的peek方法和size方法和java.util.Data实例组织而成。

2.3.3.  定义MXBean接口重返的Java类型

QueueSampler 重返QueueSample类型的实例,代码如下:

package com.example; 

import java.beans.ConstructorProperties; 
import java.util.Date; 

public class QueueSample { 

    private final Date date; 
    private final int size; 
    private final String head; 

    @ConstructorProperties({"date", "size", "head"}) 
    public QueueSample(Date date, int size, 
                        String head) { 
        this.date = date; 
        this.size = size; 
        this.head = head; 
    } 

    public Date getDate() { 
        return date; 
    } 

    public int getSize() { 
        return size; 
    } 

    public String getHead() { 
        return head; 
    } 
}

在QueueSample类中,MXBean框架调用Queue萨姆ple中保有的getter
方法将自身转变为CompositeDate类型的实例,同一时间采纳@ConstructorProperities申明从CompositeData实例转变为QueueSample实例。

2.3.4.  在MBean server中成立并注册MXBean

以至于近些日子,已经定义如下内容:八个MXBean接口和它的兑现类,以至落到实处类的归来类型。然后,MXBean必得在MXBean
server实行注册。这个操作相通由专门的职业MBean中的Main运转JMX代理,只可是相关的代码在标准MBean章节中并未有介绍。

package com.example; 

import java.lang.management.ManagementFactory; 
import java.util.Queue; 
import java.util.concurrent.ArrayBlockingQueue; 
import javax.management.MBeanServer; 
import javax.management.ObjectName; 

public class Main { 

    public static void main(String[] args) throws Exception { 
        MBeanServer mbs = 
            ManagementFactory.getPlatformMBeanServer(); 

        ...  
        ObjectName mxbeanName = new ObjectName("com.example:type=QueueSampler");

        Queue<String> queue = new ArrayBlockingQueue<String>(10);
        queue.add("Request-1");
        queue.add("Request-2");
        queue.add("Request-3");
        QueueSampler mxbean = new QueueSampler(queue);

        mbs.registerMBean(mxbean, mxbeanName);

        System.out.println("Waiting..."); 
        Thread.sleep(Long.MAX_VALUE); 
    } 
}

Main试行如下操作:

  • 获得MBean server平台。
  • 为MXBean:QueueSampler制造对象名。
  • 为MXBean:QueueSampler创造二个Queue的实例。
  • 将Queue的实例传递给QueueSampler。
  • 将MXBean注册到MXBean server中。

2.3.5.  运行MXBean实例

MXBean实例详见jmx_examples.zip。本例必要Java
SE 6版本以上。运维步骤如下:

a)保存jmx_examples.zip到专门的学业目录。

b卡塔尔国在顶峰窗口中解压压缩包。

Unzip jmx_exampless.zip

c卡塔尔(قطر‎在办事目录中编写翻译Java代码。

Javac com/example/*.java

d卡塔尔运营Main应用。终端会打字与印刷提醒新闻。

Java com.example.Main

eState of Qatar在本机差异的窗口中运营JConsole。在新建连接对话框中,显示当前可三番五次的JMX代理列表。

Jconsole

f卡塔尔国在新建连接对话框中,接受com.example.Main并点击连接按键。当前平台的活动展览会示出来。

g卡塔尔(قطر‎点击MBean标签。该标签呈现当前注册到MBean server的MBeans。

h卡塔尔国在侧边框架中,张开MBean树形结构中的com.example节点。你将得以见见Queue萨姆pler。如若您点击Queue萨姆pler,你将看见暴暴光来的质量和措施。

i卡塔尔展开属性节点。你能够见见Queue萨姆ple属性出今后侧边标签中,其值为javax.management.openmbean.CompositeDataSupport。

j卡塔尔国双击CompositeDataSupport。你能够见到QueueSample中date、head和size属性(MXBean框架将Queue萨姆ple实例转变为ComositeData)。假若将Queue萨姆pler定义为正式的MBean实际不是MXBean,JConsole就不会意识QueueSample类,因为它不会在它的类路线中。假如QueueSampler是贰个行业内部的MBean,在拜候QueueSample属性值时,您将选取一个ClassNotFoundException音信。通过JConsole等通用JMX顾客机连接到JMX代理时,Queue山姆pler演示了利用mxbean的有用性。

kState of Qatar展开操作节点。能够看出clearQueue操作的开关。

lState of Qatar点击clearQueue按键。窗口会提示clearQueue方法被调用。

m卡塔尔再度开展属性节点,双击CompositeDataSupport,head和sie的值将被重新恢复设置。

通过“连接”->“退出”关闭JConsole。

MBean在JDK中的应用

澳门新葡亰平台游戏网站 3

java.lang.management

平台资源 对应的 MXBean 可使用的数量
缓冲池 BufferPoolMXBean 1个或多个
类装入系统 ClassLoadingMXBean 1个
编译系统 CompilationMXBean 1个
VM HotSpotDiagnosticMXBean 垃圾收集系统 GarbageCollectorMXBean 至少 1
内存管理器 MemoryManagerMXBean 1个或多个
内存 MemoryMXBean 1个
内存资源 MemoryPoolMXBean 1个
操作系统 OperatingSystemMXBean 1个
logging PlatformLoggingMXBean 1个
运行时系统 RuntimeMXBean 1个
系统资源压力 SystemResourcePressureMXBean
线程 ThreadMXBean 1个

JDK中提供的那么些MBean能够通过ManagementFactory获取实例。

1.3. JMX技术布局

JMX技艺分为三层,富含:

  • 装配层
  • JMX代理层
  • 长间距管理层

1.3.1. 装配层

应用JMX技巧关押财富,你应有首先利用Java编制程序语言装配能源。你要求运用称之为MBeans的Java对象完毕对能源配备的探问。MBeans必得信守JMX标准定义的设计情势和接口。那样做保障了富有的MBeans以一种规范的方法管理能源。除了正规MBean,JMX标准还定义了一多种的MBeans。本种类主要解说MBeans和MXBeans。

一经财富被MBeans装配,财富便得以被JMX代理管理。MBeans不须要精晓JMX代理去操作哪三个MBean。

MBeans被设计成灵活、简单和易于贯彻。开拓者能够在无需通晓复杂管理类别的底工上,将应用程序、系统和网络以一种规范的不二等秘书诀将她们管理起来。原来就有能源能够用小小的代价完结管理。

别的,JMX标准的装配层提供布告机制。这种机制确定保障MBeans能够生成并传递布告事件到别的层。

1.3.2. JMX代理

依附JMX手艺的代理(JMX代理)是一种规范的关押代理,它平素调节资源并使得他们能够使用远程处理程序开展处理。JMX代理平日与治本的能源放在同一机器,但那并不是必需的。

JMX代理的中坚组件是MBean
server,MBeans在里面开展挂号。JMX代理同样席卷一密密层层的劳动来保管MBeans和起码一种通讯适配器或然连接器来作保与远程管理程序的连接性。

当你达成JMX代理时,你不须要知道所管理资源的切切实实语义和效应。实际上,JMX代理以至无需掌握它所管理的是何种财富,那是因为其余国资本源只要满足JMX标准举行装配,都足以运用JMX代理。同样的,JMX代理无需了然它所采访财富的具体功效。

1.3.3. 远程管理

JMX装配过的设备得以使用多样主意进行拜会,举个例子利用SNMP管理合同,只怕更通用的说道。MBean
server信赖左券适配器和连接器来承保JMX代理对管住程序的可以预知性。

各种适配器都经过特定的公约提供一多种的视图来突显注册到MBean
server上的MBean。举个例子,HTML适配器能够在浏览器中显得MBean。

连接器提供管理侧的接口管理在拘押程序和JMX代理之间的通讯。每种连接器通过不相同的说道提供相似的远程管理接口。当二个远程处理程序采用这几个接口,它能够透过网络透明的总是到JMX代理,而不香港管理专门的工作协会议是怎么。JMX技能基于Java
RMI(Java远程方法调用)提供标准的建设方案来暴光JMX转配设备到远程管理应用程序。

MBean规范

  • A set of readable or writable attributes, or both.
  • A set of invokable operations.
  • A self-description.
  • 管理接口贯穿于MBean的一体生命周期,况且是不改变的。Mbean在一些预先定义的事件暴发时能够生出通报(Notifications)。

1.4. Java设想机的监察和治本

JMX本领能够利用于监察和控制和拘留Java设想机。

Java设想机有内置的装备允许你接受JMX手艺对其举办监督检查和管理。这一个内置的管理工科具经常与“开箱即用”Java虚构机管理工科具联系在同步。为了监察和控制和治本Java虚构机的不等方面,Java设想机为落到实处JMX标准的关押应用提供了MBean
server平台和独特的MXBeans。

1.4.1. MBean server平台和MXBean平台

MXBean平台是一多样的MXBeans-Java底子版本提供的,用于监察和控制和治本Java虚构机和Java运营蒙受(JRE)中的种种零器件。种种平台的MXBeans都卷入一部分Java虚构机成效,比如类加载系统,即时编译JIT,垃圾搜罗器GC等等。那些MXBeans可以选择达成JMX标准的监察和管理工具来展现和相互,以便你可以见到加农和拘禁分歧的设想机效率。JConsole图形化接口正是Java底蕴版本提供的一种监察和控制和处理工科具。

1.4.2. JConsole

Java功底版本提供JConsole监视和管理工科具-它据守JMX规范。JConsole使用MXBeans平台来提供周转于Java平台上利用的本性和利用财富消耗情状。

1.4.3. “开箱即用”的保管

出于Java底工版本内置提供基于JMX技术的行业内部监察和控制和处理工科具,你能够“开箱即用”般的,不用写一行JMX
API代码就能够使用它。你能够运转贰个Java应用,然后利用JConsole监察和控制它。

1.4.4. 施用JCon搜了监察和控制应用

那有的突显如何监察和控制Java记事本程序。低于Java根底版本6的情形下,被JConsole监察和控制的应用运行时需求增添如下运营项:

-Dcom.sun.management.jmxremote

A卡塔尔运转Java记事本程序,能够在终点窗口中使用如下的命令行:不过,Java底蕴版本6及其上述版本的情形下,JConsole能够利用Attach
API链接任哪处方Java应用进程。换句话说,任何利用Java SE 6
HotSpot虚构机运营的应用程序都会活动被JConsole监察和控制,而没有必要实用上述的运行项。

java -jar 
jdk_home/demo/jfc/Notepad/Notepad.jar

jdk_home是JDK的安装目录。借让你是在低于Java底工版本6的景况中,你必要选用如下的启航命令:

java -Dcom.sun.management.jmxremote -jar 
jdk_home/demo/jfc/Notepad/Notepad.jar

BState of Qatar一旦运转成功,在另二个终极窗口,使用如下命令运转JConsole:

jconsole

接下去会出现叁个新的连接对话框。

C卡塔尔在链接对话框中,在本地管理列表中,选拔Notepad.jar并点击连接按键。JConsole张开并连采纳Notepad.jar进度。当JConsole展开后,你便足以看出与Notepad程序相关的监督检查和管理视图。举个例子,你能够查阅应用消耗的堆内部存款和储蓄器,应用当前运作使用的线程数目,应用消耗的CPU数量等。

D卡塔尔(قطر‎点击分化的JConsole标签。每三个标签会展现Notepad程序在Java设想机中分裂方面包车型客车法力。全体的变现的音信都以由本种类关系的,基于JMX技巧的MXBeans提供。全数MXBeans都得以在MBean标签页展现,MBean标签就要下一章钻探。

筛选总是->退出,退出JConsole。

Standard MBean

  • 职业MBean,必要满意标准:

    • 概念管理接口SomethingMBean,而且有三个叫Something的贯彻类。规范MBean是那五头的组合,何况那四个必须在贰个包下。
  • 例子:

package com.example; 
public interface HelloMBean { 

    public void sayHello(); 
    public int add(int x, int y); 

    public String getName(); 

    public int getCacheSize(); 
    public void setCacheSize(int size); 
} 

package com.example; 
public class Hello implements HelloMBean { 
    public void sayHello() { 
        System.out.println("hello, world"); 
    } 

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

    public String getName() { 
        return this.name; 
    }  

    public int getCacheSize() { 
        return this.cacheSize; 
    } 

    public synchronized void setCacheSize(int size) {
        this.cacheSize = size; 
        System.out.println("Cache size now " + this.cacheSize); 
    } 

    private final String name = "Reginald"; 
    private int cacheSize = DEFAULT_CACHE_SIZE; 
    private static final int 
        DEFAULT_CACHE_SIZE = 200; 
}

MXBean

  • 与规范MBean近似,MXBean接口进行自述,以至贰个兑现类。
  • 分歧于标准MBean,实现类能够叫自由名字。

Dynamic MBean

  • 动态MBean即编码方式落成的MBean。

  • 不再通过定义接口来张开自述,而是通过实现DynamicMBean,定义metadata来扩充描述。

    • DynamicMBean:

public interface DynamicMBean {

public Object getAttribute(String attribute) throws AttributeNotFoundException,
    MBeanException, ReflectionException;

public void setAttribute(Attribute attribute) throws AttributeNotFoundException,
    InvalidAttributeValueException, MBeanException, ReflectionException ;

public AttributeList getAttributes(String[] attributes);

public AttributeList setAttributes(AttributeList attributes);

public Object invoke(String actionName, Object params[], String signature[])
    throws MBeanException, ReflectionException ;

public MBeanInfo getMBeanInfo();

}

  * MBeanInfo描述管理接口
  * Attribute的getter和setter提供通用属性设置,定义对外暴露的属性
  * invoke提供通用操作,定义对外暴露的操作
* 注意:
    * Dynamic的意思是管理接口在运行时才会真正的显现出来,不用通过事先静态的接口定义。而不是指可以动态的调整管理接口。
    * MBean的描述应该是不会改变的,所以一般要在动态MBean的构造函数里来构建MBeanInfo。

## Module MBean
* Module MBean是动态MBean的一种实现,所以它的接口、属性、操作也是通过编程方式来定义。
* JMX规范规定该类必须实现为javax.management.modelmbean.RequiredModelMBean,管理者要做的就是实例化该类,并配置该构件的默认行为并注册到JMX代理中,即可实现对资源的管理。RequiredModelMBean是一个没有任何管理接口的动态MBean,但是它可以把MBeanInfo跟一个目标对象组合起来。
* 目标对象是具体实现管理行为的类。通过ModelMBean接口的setManagedResource()可以将ModelMBean和目标对象进行关联。

  ```java
public void setManagedResource(Object managedResource, String managedResourceType) ;
  • managedResourceType的值可感觉ObjectReference, Handle, IO猎豹CS6,
    EJBHandle或RMIReference,但眼前只扶植ObjectReference.

澳门新葡亰平台游戏网站 4

RequiredModelMBean.png

  • Module MBean具备以下新的风味:
    • 长久性。定义了长久机制,能够动用Java的类别化或JDBC来囤积模型MBean的场所。
    • 文告和日志功用。能记录每贰个生出的通报,并能自动发出属性变化布告。
    • 属性值缓存。拥有缓存属性值的本领。
  • 使用Apache commons-modeler 简化Module MBean的开发
    • commons-modeler帮衬xml描述管理接口,使动态MBean能够配置式开荒
    • 参考:http://blog.csdn.net/s464036801/article/details/9980439

Open MBean

  • 也是一种动态MBean,标准还在面面俱到中

Notifications

  • MBean提供了一套文告机制,其实正是观看者方式
  • 后续javax.management.NotificationBroadcasterSupport就足以生出通报
  • 福寿无疆javax.management.NotificationListener能够收到文告

Agent

  • Agent作为中间代理层,管理着MBeans並且对外揭露管理接口,宗旨模块MBean
    Server
  • 经过工厂类:java.lang.management.ManagementFactory能够创造MBean
    Server,然后在server上注册MBean。
  • 若是是独有本地利用,注册完后就足以通过JConsole连接管理了。
  • 假定急需远程管理,则须求布置协议适配器提供远程管理本领。

Remote Management

长间隔接口的展露

  • 经过com.sun.jdmk.comm.HtmlAdaptorServer暴光HTML远程管理接口
  • 通过javax.management.remote.JMXConnectorServer暴光RMI远程管理接口

ObjectName adapterName = new ObjectName("MyMBean:name=htmladapter,port=8082");
HtmlAdaptorServer adapter = new HtmlAdaptorServer();
server.registerMBean(adapter, adapterName);
adapter.start();
LocateRegistry.createRegistry(8888);
// 必须service:jmx:开头
JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:8888/server");
JMXConnectorServer jcs = JMXConnectorServerFactory.newJMXConnectorServer(url, null, server);
jcs.start();

长途顾客端

  • HTML格局的中远间隔客商纠正是浏览器
  • RMI方式得以使管理客商端,如JConsole,也足以是自个儿编排的Client

花色中的应用

Spring JMX

http://blog.csdn.net/yaerfeng/article/details/28232435

log4j JMX

http://logging.apache.org/log4j/2.x/manual/jmx.html

Tomcat JMX

http://tomcat.apache.org/tomcat-6.0-doc/monitoring.html

参考

  • 法定文档:http://docs.oracle.com/javase/tutorial/jmx/TOC.html
    http://docs.oracle.com/cd/E19206-01/816-4178/index.html
  • 向往大利语档部分翻译:http://blog.csdn.net/jiaotuwoaini/article/details/71076143
  • JMX in
    JDK:http://blog.csdn.net/qianshangding0708/article/details/49613147
  • http://blog.csdn.net/DryKillLogic/article/category/762777
You can leave a response, or trackback from your own site.

Leave a Reply

网站地图xml地图