这些天在看《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. javascript优化--04高质量编码

    库和API的设计: 在参数设计中保持好的习惯:如顺序,width,height;top,right,bottom,left;如命名: 将undefined看作没有值而不要表示非特定的值: 在允许0,空 ...

  2. Xamarin.iOS提供没有匹配的配置文件

    Xamarin.iOS提供没有匹配的配置文件 错误信息:No installed provisioning profiles match the installed ios code signing  ...

  3. Let the Balloon Rise

    Problem Description Contest time again! How excited it is to see balloons floating around. But to te ...

  4. 神、上帝以及老天爷[HDU2048]

    神.上帝以及老天爷 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total S ...

  5. POJ 1523 (割点+连通分量)

    题目链接:http://poj.org/problem?id=1523 题目大意:连通图,找图中割点,并计算切除该割点后,图中的连通分量个数. 解题思路: POJ的数据很弱. Tarjan法求割点. ...

  6. CentoS 下报的 Requires: perl(:MODULE_COMPAT_5.8.8)

    yum error requires: libtcmalloc.so.4 rpm -Uvh http://ceph.com/rpm-cuttlefish/el6/x86_64/ceph-release ...

  7. 初识python面向对象

    一.初识python面向对象: class Person: #使用class关键字定义一个类 age=0 #类变量(静态变量) def eat(self,food): #定义一个方法 self.age ...

  8. Oracle用户信息查询

    1.查看所有用户: select * from dba_users;    select * from all_users;    select * from user_users; 2.查看用户或角 ...

  9. IOS第六天(3:scrollView 图片轮播器)

    IOS第六天(3:scrollView 图片轮播器) #import "HMViewController.h" #define kImageCount 5 @interface H ...

  10. FZU 2028 BFS+vector

    一个普通的bfs 如果不看样例和input的解释... 四个0真是神样例 又被input误导 以为每个点都按顺序有标号 传送门的终点给的是一个点的标号 然后结果是什么呢?无尽的runtime erro ...