1,概念:一个可以使用JMX管理器来管理的Java对象称为JMX管理资源(JMX manageable resource)。事实上,一个JMX管理资源也可以是一个应用程序、一个实现或者一个服务、设备、用户等等。JMX管理资源用Java写或者提供一个Java包装。
要想让一个Java对象称为JMX管理资源,必须创建另一个名为Managed Bean或者MBean的对象。org.apache.catalina.mbeans包包括一些MBeans。ConnectorMBean, StandardEngineMBean, StandardHostMBean, StandardContextMBean是Managed Bean的例子。从他们的名字你可以猜到ConnectMBean用于管理连接器,StandardContextMBean用于管理org.apache.catalina.core.StandardContext对象等等。当然,你也可以编写MBean管理多个Java对象。 MBean将Java对象的属性和方法暴露给管理应用程序(management application)。管理应用程序本身不能直接访问Java对象。因此可以选择任意的属性和方法让管理应用程序访问。

一共有四种MBean:标准standard,动态dynamic, 打开open, 和模型model,从结构上来看,JMX规范分为3层,设备层(instrumentation level),代理层(agent level),和分布服务层(distributed services level)。MBean服务器处于代理层,而MBeans处于设备层。分布服务层将会在JMX规范的未来版本涉及到。

2.标准MBean是最简单的MBean。要是用标准MBean管理一个Java对象,需要以下工作:
· 创建一个接口,名为你的类名加上后缀MBean。例如,如果要管理的Java类是Car,接口名酒味CarMBean。

· 修改Java类,让它实现你创建的接口。

· 创建一个代理,该代理必须包括一个MBean服务器。

· 为你的MBean创建一个ObjectName。

· 初始化MBean服务器。

· 向MBean服务器注册MBean。

package ex20.pyrmont.standardmbeantest;
public class Car {
private String color = "red";
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public void drive() {
System.out.println("Baby you can drive my car.");
}
}
//1: The modified Car class 
package ex20.pyrmont.standardmbeantest; public class Car implements CarMBean {
private String color = "red";
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
} public void drive() {
System.out.println("Baby you can drive my car.");
}
}
//2: The CarMBean interface
package ex20.pyrmont.standardmbeantest;
public interface CarMBean {
public String getColor();
public void setColor(String color);
public void drive();
}
//3: The StandardAgent class
package ex20.pyrmont.standardmbeantest;
import javax.management.Attribute;
import javax.management.ObjectName;
import javax.management.MBeanServer;
import javax.management.MBeanServerFactory;
public class StandardAgent {
private MBeanServer mBeanServer = null;
public StandardAgent() {
mBeanServer = MBeanServerFactory.createMBeanServer();
} public MBeanServer getMBeanServer() {
return mBeanServer;
} public ObjectName createObjectName(String name) {
ObjectName objectName = null;
try { objectName = new ObjectName(name);
} catch (Exception e) {
}
return objectName;
} private void createStandardBean(ObjectName objectName, String managedResourceClassName) {
try {
mBeanServer.createMBean(managedResourceClassName, objectName);
} catch(Exception e) {
}
} public static void main(String[] args) {
StandardAgent agent = new StandardAgent();
MBeanServer mBeanServer = agent.getMBeanServer();
String domain = mBeanServer.getDefaultDomain();
String managedResourceClassName = "ex20.pyrmont.standardmbeantest.Car";
ObjectName objectName = agent.createObjectName(domain + ":type=" + managedResourceClassName);
agent.createStandardBean(objectName, managedResourceClassName);
// manage MBean
try {
Attribute colorAttribute = new Attribute("Color","blue"); mBeanServer.setAttribute(objectName, colorAttribute);
System.out.println(mBeanServer.getAttribute(objectName, "Color"));
mBeanServer.invoke(objectName,"drive",null,null);
} catch (Exception e) {
e.printStackTrace();
}
}
}

如果运行StandardAgent类,会得到以下输出。

blue

Baby you can drive my car.

Java Management extentsions(jmx)与tomcat的更多相关文章

  1. Java Management Extensions (JMX) - Best Practices 最佳实践

    Java Management Extensions (JMX) - Best Practices 注意,本文一些管理可能与JMX API或JSR 77 (J2EE management)不一致.它们 ...

  2. Java Management Extensions (JMX) Flume

    Lesson: Overview of the JMX Technology (The Java™ Tutorials > Java Management Extensions (JMX)) h ...

  3. JMX(Java Management Extension)学习

    目录 基本概念 MBean的种类 StandardMBean DynamicBean ModelMBean JMX的实现方式 StandardMBean的使用方法 JMX服务的访问方式 JMX--No ...

  4. zabbix通过jmx监控tomcat

    Zabbix版本: Zabbix 3.0.2 一.服务端配置 1.安装jdk(版本1.7.0_79) 安装与配置比较简单,过程省略.执行java -version命令,出现类似界面表示成功.   2. ...

  5. zabbix 基于JMX的Tomcat监控

    zabbix 基于JMX的Tomcat监控 一.环境 ubuntu14.04 LTS Java 1.7.0 zabbix 2.4.5 二.安装配置 1.安装JavaGateway 在ubuntu14. ...

  6. Zabbix JMX之tomcat监控

    工作原理: 1.JAVA-GATEWAY  Zabbix本身不支持直接监控Java,在zabbix 1.8以前,只能使用Zapcat来做代理监控,而且要修改源代码,非常麻烦.所有后来为了解决这个监控问 ...

  7. Zabbix系列之三——部署JMX监控tomcat

    zabbix提供了一个java gateway的应用去监控jmx(Java Management Extensions,即Java管理扩展)是一个为应用程序.设备.系统等植入管理功能的框架.JMX可以 ...

  8. zabbix 部署 jmx 监控tomcat

    zabbix提供了一个java gateway的应用去监控jmx(Java Management Extensions,即Java管理扩展)是一个为应用程序.设备.系统等植入管理功能的框架.JMX可以 ...

  9. SpringBoot Caused by: java.lang.NoClassDefFoundError: org/apache/tomcat/util/descriptor/tld/TldParser

    最近尝试着用spring boot ,页面模版使用的jsp,在pom里配置了对jsp的支持: <dependency> <groupId>org.apache.tomcat.e ...

随机推荐

  1. sizeof和指针

    对于sizeof(类或对象)这种形式,如classA1{ public: int a; static int b;A1();~A1();}sizeof计算类或对象在栈中分配的大小,类或对象的静态变量存 ...

  2. 20145301&20145321&20145335实验三

    20145301&20145321&20145335实验三 这次实验我的组员为:20145301赵嘉鑫.20145321曾子誉.20145335郝昊 实验内容详见:实验三

  3. CSS3之绽放的花朵(网页效果--每日一更)

    今天,带来的是纯CSS3打造的效果--绽放的花朵. 先来看效果吧:亲,请点击这里 这是纯CSS3样式打造的效果,关键是采用了animation属性和transform属性.详细请看下面代码. HTML ...

  4. python Scrapy

    由于项目要使用新闻,大量的数据所以想到了python的scrapy 下面大致讲一讲如何安装使用,直到整个新闻采集模块完成,网址什么的自己找 这里只是示范这里的项目环境是python 2.66 cent ...

  5. C++ REST SDK的基本用法

    微软开发了一个开源跨平台的http库--C++ REST SDK(http://casablanca.codeplex.com/),又名卡萨布兰卡Casablanca,有个电影也叫这个名字,也许这个库 ...

  6. [.NET领域驱动设计实战系列]专题十一:.NET 领域驱动设计实战系列总结

    一.引用 其实在去年本人已经看过很多关于领域驱动设计的书籍了,包括Microsoft .NET企业级应用框架设计.领域驱动设计C# 2008实现.领域驱动设计:软件核心复杂性应对之道.实现领域驱动设计 ...

  7. Web Essentials之通用功能

    返回Web Essentials功能目录 本篇目录 功能 快捷方式 WEIgnore 功能 通用功能应用于很多方面. 设置 所有的设置都可以在VS选择工具 -> 选项 -> Web Ess ...

  8. linux 2.6 驱动笔记(一)

    本文作为linux 2.6 驱动笔记,记录环境搭建及linux基本内核模块编译加载. 环境搭建: 硬件:OK6410开发板 目标板操作系统:linux 2.6 交叉编译环境:windows 7 + v ...

  9. Hadoop日记Day12---MapReduce学习

    一.MapReduce简介 1.1MapReduce概述 MapReduce是一种分布式计算模型,由Google提出,主要用于搜索领域,解决海量数据的计算问题.MR由两个阶段组成:Map和Reduce ...

  10. C#可扩展编程之MEF学习笔记(四):见证奇迹的时刻

    前面三篇讲了MEF的基础和基本到导入导出方法,下面就是见证MEF真正魅力所在的时刻.如果没有看过前面的文章,请到我的博客首页查看. 前面我们都是在一个项目中写了一个类来测试的,但实际开发中,我们往往要 ...