这些天在看《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. Ubuntu 11.10升级Ruby (1.8.7 --> 1.9.3或者其他任意版本)

    使用apt-get install ruby,安装的默认版本为1.8.7.想要使用更高版本,只能采用手工升级的方式. 方式1 使用RVM(推荐方式) 1 安装RVM http://rvm.io/rvm ...

  2. Ajax 学习之动态获取,返回服务器的值

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  3. 2016.5.27 PHP连接数据库与查询

    提示mysql_query() expects parameter 2 to be resource, null given in 错误是因为你没有连接数据库就进行了查询,正常的程序应该这样写: fu ...

  4. 餐厅到店点餐系统app燃尽图

    队友: 郭志豪:http://www.cnblogs.com/gzh13692021053/ 杨子健:http://www.cnblogs.com/yzj666/ 刘森松:http://www.cnb ...

  5. POJ2396 Budget(有源汇流量有上下界网络的可行流)

    题目大概给一个有n×m个单元的矩阵,各单元是一个非负整数,已知其每行每列所有单元的和,还有几个约束条件描述一些单元是大于小于还是等于某个数,问矩阵可以是怎样的. 经典的流量有上下界网络流问题. 把行. ...

  6. BZOJ3834 : [Poi2014]Solar Panels

    问题相当于找到一个最大的k满足在$[x_1,x_2]$,$[y_1,y_2]$中都有k的倍数 等价于$\frac{x_2}{k}>\frac{x_1-1}{k}$且$\frac{y_2}{k}& ...

  7. BZOJ3046 : lagoon

    码农题,拆点BFS预处理出所有联通块的面积即可,注意分类讨论. #include<cstdio> #include<cmath> using namespace std; co ...

  8. 理解cookie的path和domain属性

    今天在做验证码时发现一个问题:A.B窗口都打开同一个页面,A先生成一个验证码,B再生成验证码,这时A所生成的验证码被B覆盖掉了.原因是使用了同名的cookie来存储验证码.一时找不到解决方法就参考了W ...

  9. cocos2d 中判断CGPoint或者CGSize是否相等

    cocos2d 中判断CGPoint是否相等 调用CGPointEqualToPoint(point1, point2) 判断CGSize是否相等 调用CGSizeEqualToSize(size1, ...

  10. Java之美[从菜鸟到高手演变]之HashMap、HashTable(转载)

    http://blog.csdn.net/zhangerqing/article/details/8193118