Java Management extentsions(jmx)与tomcat
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的更多相关文章
- Java Management Extensions (JMX) - Best Practices 最佳实践
Java Management Extensions (JMX) - Best Practices 注意,本文一些管理可能与JMX API或JSR 77 (J2EE management)不一致.它们 ...
- Java Management Extensions (JMX) Flume
Lesson: Overview of the JMX Technology (The Java™ Tutorials > Java Management Extensions (JMX)) h ...
- JMX(Java Management Extension)学习
目录 基本概念 MBean的种类 StandardMBean DynamicBean ModelMBean JMX的实现方式 StandardMBean的使用方法 JMX服务的访问方式 JMX--No ...
- zabbix通过jmx监控tomcat
Zabbix版本: Zabbix 3.0.2 一.服务端配置 1.安装jdk(版本1.7.0_79) 安装与配置比较简单,过程省略.执行java -version命令,出现类似界面表示成功. 2. ...
- zabbix 基于JMX的Tomcat监控
zabbix 基于JMX的Tomcat监控 一.环境 ubuntu14.04 LTS Java 1.7.0 zabbix 2.4.5 二.安装配置 1.安装JavaGateway 在ubuntu14. ...
- Zabbix JMX之tomcat监控
工作原理: 1.JAVA-GATEWAY Zabbix本身不支持直接监控Java,在zabbix 1.8以前,只能使用Zapcat来做代理监控,而且要修改源代码,非常麻烦.所有后来为了解决这个监控问 ...
- Zabbix系列之三——部署JMX监控tomcat
zabbix提供了一个java gateway的应用去监控jmx(Java Management Extensions,即Java管理扩展)是一个为应用程序.设备.系统等植入管理功能的框架.JMX可以 ...
- zabbix 部署 jmx 监控tomcat
zabbix提供了一个java gateway的应用去监控jmx(Java Management Extensions,即Java管理扩展)是一个为应用程序.设备.系统等植入管理功能的框架.JMX可以 ...
- SpringBoot Caused by: java.lang.NoClassDefFoundError: org/apache/tomcat/util/descriptor/tld/TldParser
最近尝试着用spring boot ,页面模版使用的jsp,在pom里配置了对jsp的支持: <dependency> <groupId>org.apache.tomcat.e ...
随机推荐
- VS2008 工程只生成dll不生成lib的解决方案
http://topic.csdn.net/u/20081216/22/b12d1450-7585-4c9f-867a-7c181737c328.html 问题:vs2008版本的,不知道为什么只生成 ...
- Lua 栈的理解
提到C++与lua互调,不可不提栈. 栈是C++和Lua相互通讯的一个地方. 首先这个栈并不是传统意义上的栈(传统的栈需要放同一种数据类型,但在网上的某些资料说,每个栈元素是一个联合体). 栈从上向下 ...
- 纯练手设置ip地址脚本
#!/bin/bash IFO() { read -p "Configure $line Network card ( 'yes'or'no' )?" CDN </dev/t ...
- 在CentOS6.5上安装MariaDB
昨天临下班的时候,在我的阿里云上面试装了PostgreSQL,可后来想想,似乎没什么必要使用他.主要是Navicat使用起来加自增key的时候,没有像MySQL那么方便啦. 因为公司用的已经是MySQ ...
- mvvm的优势
之前在项目中有个功能,是根据数据模型生成页面,然后页面变动之后,再同步到数据模型之中. 当时用的jquery写的,一点一点的控制,整个功能写下来.测试,花了很长时间,而且还担心出bug. 现在用mvv ...
- ListView设置headerview和footerview
[简介]headerview就是通常看到的那种listview手势下滑露出上面的部分,下拉到一定位置,松手会开始请求网络数据,然后刷新listview的列表.footerview一般就是listvie ...
- TypeScript - Classes
简介 JavaScript语言基于函数和原型链继承机制的方式构建可重用的组件.这对于OO方面编程来说显得比较笨拙.在下一代的JavaScript标准ECMAScript 6为我们提供了基于class ...
- [PCB制作] 1、记录一个简单的电路板的制作过程——四线二项步进电机驱动模块(L6219)
前言 现在,很多人手上都有一两个电子设备,但是却很少有人清楚其中比较关键的部分(PCB电路板)是如何制作出来的.我虽然懂点硬件,但是之前设计的简单系统都是自己在万能板上用导线自己焊接的(如下图左),复 ...
- 在ThoughtWorks工作这几年我学到了什么?
不知不觉,从2012年5月1日加入ThoughtWorks到现在,已经3年有余了.时间过得很快,这三年多我干了很多事情,但仔细想想也没有什么特别值得一提的.在一个公司呆久了总觉得很多事情是理所当然的, ...
- TACACS.Net Group 配置
Tacacs作为一个验证工具,其网站上资料较少,只有一些缺省配置,并且没有提到如果在应用中与其自带的Group功能做集成, 这里使用免费的windows 版的TACACS.net 作介绍http:// ...