这些天在看《How Tomcat Works》这本书。里面讲到了JMX的内容。对我来说是个新知识点。

JMX--Java Management Extensions,即Java管理扩展,是一个为应用程序、设备、系统等植入管理功能的框架。

JMX可以跨越一系列异构操作系统平台、系统体系结构和网络传输协议,灵活的开发无缝集成的系统、网络和服务管理应

用。可以非常容易的管理应用程序。许多基于服务器的应用程序(Tomcat, JBoss)都使用了JMX技术来管理各自的资源。

 
1.Architectural Overview

■ Instrumentation level(设备层)---定义了编写可由JMX管理的资源的标准,也就是如果编写MBean。
■ Agent level(代理层)---定义了创建代理的规范。代理封装了MBean服务器,提供了处理MBean的服务。API提供了创建默认MBean服务器的方法。
■ Distributed services level(分布式服务层)
■ Additional management protocol APIs(附加管理协议API)

2.MBean类型

其灵活性由低到高:标准类型,动态类型,开放类型,模型类型。

3.重要的类(在javax.management包及子包下)

MBean服务器是MBeanServer接口的实例。可通过 MBeanServerFactory.createMBeanServer()创建。

要将一个MBean注册到MBeanServer中,可以调用MBeanServer.registerMBean(Object o,ObjectName on)方法。

ObjectName唯一标识MBean。ObjectName由域和键值对组成。如 domain: key1 = value1 , key2 = value2

4.标准类型MBean演示

 package com.ling;

 public interface CarMBean {
String getColor();
void setColor(String color);
void drive(); }
 package com.ling;

 public class Car implements CarMBean {

     private String color = "red";
@Override
public String getColor() {
// TODO Auto-generated method stub
return color;
} @Override
public void setColor(String color) {
// TODO Auto-generated method stub
this.color = color;
} @Override
public void drive() {
// TODO Auto-generated method stub
System.out.println("baby drive my car");
} }
 package com.ling;

 public class StandarAgent {
private MBeanServer mBeanServer = null;
public StandarAgent( ){
this.mBeanServer = MBeanServerFactory.createMBeanServer();
} public MBeanServer getmBeanServer() {
return mBeanServer;
}
public void setmBeanServer(MBeanServer mBeanServer) {
this.mBeanServer = mBeanServer;
} public ObjectName createObjectName(String name){
ObjectName objectName = null;
try {
objectName = new ObjectName(name);
} catch (MalformedObjectNameException e) { e.printStackTrace();
} catch (NullPointerException e) { e.printStackTrace();
}
return objectName;
} private void createStandarBean(ObjectName objectName,String managedClassName){
try {
mBeanServer.createMBean(managedClassName, objectName);
} catch (Exception e) { e.printStackTrace();
}
} public static void main(String [] args){
StandarAgent agent = new StandarAgent();
MBeanServer mBeanServer = agent.getmBeanServer();
String managedClassName = "com.ling.Car";
ObjectName objectName = agent.createObjectName("ling:type="+managedClassName);
System.out.println(objectName.getDomain());
agent.createStandarBean(objectName, managedClassName); try {
Attribute colorAttribute = new Attribute("Color", "red");
mBeanServer.setAttribute(objectName, colorAttribute);
System.out.println(mBeanServer.getAttribute(objectName, "color"));
mBeanServer.invoke(objectName, "drive", null, null); } catch (Exception e) {
e.printStackTrace();
}
} }

JMX初体验的更多相关文章

  1. 蚂蚁 RPC 框架 SOFA-RPC 初体验

    前言 最近蚂蚁金服开源了分布式框架 SOFA,楼主写了一个 demo,体验了一下 SOFA 的功能,SOFA 完全兼容 SpringBoot(当然 Dubbo 也是可以兼容的). 项目地址:Alipa ...

  2. SpringBoot初体验及原理解析

    一.前言 ​ 上篇文章,我们聊到了SpringBoot得以实现的幕后推手,这次我们来用SpringBoot开始HelloWorld之旅.SpringBoot是Spring框架对“约定大于配置(Conv ...

  3. JMS服务器ActiveMQ的初体验并持久化消息到MySQL数据库中

    JMS服务器ActiveMQ的初体验并持久化消息到MySQL数据库中 一.JMS的理解JMS(Java Message Service)是jcp组织02-03年定义了jsr914规范(http://j ...

  4. .NET平台开源项目速览(15)文档数据库RavenDB-介绍与初体验

    不知不觉,“.NET平台开源项目速览“系列文章已经15篇了,每一篇都非常受欢迎,可能技术水平不高,但足够入门了.虽然工作很忙,但还是会抽空把自己知道的,已经平时遇到的好的开源项目分享出来.今天就给大家 ...

  5. Xamarin+Prism开发详解四:简单Mac OS 虚拟机安装方法与Visual Studio for Mac 初体验

    Mac OS 虚拟机安装方法 最近把自己的电脑升级了一下SSD固态硬盘,总算是有容量安装Mac 虚拟机了!经过心碎的安装探索,尝试了国内外的各种安装方法,最后在youtube上找到了一个好方法. 简单 ...

  6. Spring之初体验

                                     Spring之初体验 Spring是一个轻量级的Java Web开发框架,以IoC(Inverse of Control 控制反转)和 ...

  7. Xamarin.iOS开发初体验

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKwAAAA+CAIAAAA5/WfHAAAJrklEQVR4nO2c/VdTRxrH+wfdU84pW0

  8. 【腾讯Bugly干货分享】基于 Webpack & Vue & Vue-Router 的 SPA 初体验

    本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57d13a57132ff21c38110186 导语 最近这几年的前端圈子,由于 ...

  9. 【Knockout.js 学习体验之旅】(1)ko初体验

    前言 什么,你现在还在看knockout.js?这货都已经落后主流一千年了!赶紧去学Angular.React啊,再不赶紧的话,他们也要变out了哦.身旁的90后小伙伴,嘴里还塞着山东的狗不理大蒜包, ...

随机推荐

  1. http://www.open-open.com/lib/view/open1397274257325.html

    http://www.open-open.com/lib/view/open1397274257325.html

  2. ural 1219. Symbolic Sequence

    1219. Symbolic Sequence Time limit: 1.0 secondMemory limit: 64 MB Your program is to output a sequen ...

  3. BZOJ4347 : [POI2016]Nim z utrudnieniem

    将石子从小到大排序,然后DP. 设$f[i][j][k]$表示考虑了前$i$堆的石子,当前扔掉的堆数模$d$为$j$,没有扔掉的石子的异或和为$k$的方案数. 因为石子排过序,所以转移的复杂度为$O( ...

  4. 蒟蒻修养之cf橙名计划

    因为太弱,蒟蒻我从来没有上过div1(这就是今年的最后愿望啊啊啊啊啊)已达成................打cf几乎每次都是fst...........所以我的cf成绩图出现了惊人了正弦函数图像.. ...

  5. Get the log from android device

    Theme: How to get the log from device ?  Detail:  Get the log from device, and write to the local fi ...

  6. MySQL配置SQL Assistant提示

    以前开发一直使用SQL Server数据库,提示插件采用的就是SQL Assistant,写起脚本来相当有效率.这段时间公司转型要采用MySQL数据库,试用了mysql workbench.mysql ...

  7. log4j - 配置文件

    Log4J的配置文件(Configuration File)就是用来设置记录器的级别.存放器和布局的,它可接key=value格式的设置或xml格式的设置信息. 通过配置,可以创建出Log4J的运行环 ...

  8. 结合自己的程序对thinkphp模板常量的理解

    先上个图,有时候路径很多,没理解会搞混,看手册的说明 页面login.html模板的访问路径为http://www.tp.com/index.php/admin/Manager/login,测试他的常 ...

  9. virt-XXX

    尽管 virt-manager 是 libvirt 虚拟化 API 的一个首要用户,但有一个越来越庞大的工具生态系统在使用此接口进行虚拟化管理.virt-manager 包提供了一个便捷的 GUI,用 ...

  10. JavaScript系列:replace()函数(第二个参数为函数)

    语法 stringobject.replace(regexp/substr,replacement) 只讲解这个:参数replacement为函数时,这个参数函数的参数代表的意义,以及运行次数,及过程 ...