- 浏览: 7326174 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (1546)
- 企业中间件 (236)
- 企业应用面临的问题 (236)
- 小布Oracle学习笔记汇总 (36)
- Spring 开发应用 (54)
- IBatis开发应用 (16)
- Oracle基础学习 (23)
- struts2.0 (41)
- JVM&ClassLoader&GC (16)
- JQuery的开发应用 (17)
- WebService的开发应用 (21)
- Java&Socket (44)
- 开源组件的应用 (254)
- 常用Javascript的开发应用 (28)
- J2EE开发技术指南 (163)
- EJB3开发应用 (11)
- GIS&Mobile&MAP (36)
- SWT-GEF-RCP (52)
- 算法&数据结构 (6)
- Apache开源组件研究 (62)
- Hibernate 学习应用 (57)
- java并发编程 (59)
- MySQL&Mongodb&MS/SQL (15)
- Oracle数据库实验室 (55)
- 搜索引擎的开发应用 (34)
- 软件工程师笔试经典 (14)
- 其他杂项 (10)
- AndroidPn& MQTT&C2DM&推技术 (29)
- ActiveMQ学习和研究 (38)
- Google技术应用开发和API分析 (11)
- flex的学习总结 (59)
- 项目中一点总结 (20)
- java疑惑 java面向对象编程 (28)
- Android 开发学习 (133)
- linux和UNIX的总结 (37)
- Titanium学习总结 (20)
- JQueryMobile学习总结 (34)
- Phonegap学习总结 (32)
- HTML5学习总结 (41)
- JeeCMS研究和理解分析 (9)
最新评论
-
lgh1992314:
[u][i][b][flash=200,200][url][i ...
看看mybatis 源代码 -
尼古拉斯.fwp:
图片根本就不出来好吧。。。。。。
Android文件图片上传的详细讲解(一)HTTP multipart/form-data 上传报文格式实现手机端上传 -
ln94223:
第一个应该用排它网关吧 怎么是并行网关, 并行网关是所有exe ...
工作流Activiti的学习总结(八)Activiti自动执行的应用 -
ZY199266:
获取不到任何消息信息,请问这是什么原因呢?
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息 -
xiaoyao霄:
DestinationSourceMonitor 报错 应该导 ...
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息
以前在华为项目使用到JMX全部是同事在jmx配置文件配置的自己根据实例应用,现在有时间,研究一下!
一、JMX简介
JMX是一种JAVA的正式规范,它主要目的是让程序且有被管理的功能,那么怎么理解所谓的“被管理”呢?试想你开发了一个软件(如WEB网站),它是在24小时不简断运行的,那么你可能会想要“监控”这个软件的运行情况,比如收到了多少数据,有多少人登录等等。或者你又想“配置”这个软件,比如现在访问人数比较多,你想把数据连接池设置得大一些。
当然,你也许会专门为这些管理来开发软件,但如果你借助JMX,则会发现创建这样的管理程序是如此简单。因为你无需为管理程序来开发界面,已经有通用的JMX管理软件,如MC4J,或者是用一般都附带提供的HTML网页来管理,你要做的仅仅是将自己要被管理和监控类的按照JMX规范修改一下即可。
中间件软件WebLogic的管理页面就是基于JMX开发的,而JBoss则整个系统都基于JMX构架。下面将JMX的一些概念,从JMX规范转帖如下:
二、JMX构架中的各层及相关的组件
- 工具层(Instrumentation Level)
(a) MBeans(标准的,动态的,开放的和模型MBeans)
(b) 通知模型:Notification、NotificationListener等类
(c) MBean元数据类:Attribute、Opreator等类 - 代理层(Agent Level)
(a) MBean Server
(b) 代理服务。如前一篇的HtmlAdaptorServer等。
MBean中有getter和setter的就是属性,如前一篇的Hello类中Name。如果只有getter则表示该属性只读。一共有四种MBean,如下:
- 标准MBeans(Standard MBeans)设计和实现是最简单的,这类MBean使用自己的方法名作为管理接口;
- 动态MBeans(Dynamic MBeans)必须实现一个指定的接口,由于动态MBeans在运行期间暴露它们的管理接口,因此更为灵活;
- 开放MBeans(Open MBeans)属于动态MBeans,这类MBean依靠基础数据类型来实现通用管理,并为友情用户进行自我声明;
- 模型MBeans(Model MBeans)同样也是动态MBeans,这类MBeans是完全可配置的,在运行期间进行自我声明;它们为资源动态工具提供一个一般性的,有默认行为的MBeans类。
package com.vnvtrip;
/**
* JMX的标准MBean的接口必须以XxxxMXBean格式名称
*
* @author longgangbai
*
*/
public interface MonitorMXBean {
public int getStatus();
public void setStatus(int status);
public double getNumber();
public void setNumber(double number);
public String getUsername();
public void setUsername(String username);
}
package com.vnvtrip;
/**
*
* JMX的实现类的实现JMX的接口类
*
* @author longgangbai
*
*/
public class MonitorCPU implements MonitorMXBean {
private String username = "xiao66li";
/**
* CPU的使用状态
*/
private int status;
/**
* CPU的使用量
*/
private double number;
/*
* (non-Javadoc)
*
* @see com.vnvtrip.IMonitorCPU#getStatus()
*/
public int getStatus() {
return status;
}
/*
* (non-Javadoc)
*
* @see com.vnvtrip.IMonitorCPU#setStatus(int)
*/
public void setStatus(int status) {
this.status = status;
}
/*
* (non-Javadoc)
*
* @see com.vnvtrip.IMonitorCPU#getNumber()
*/
public double getNumber() {
return number;
}
/*
* (non-Javadoc)
*
* @see com.vnvtrip.IMonitorCPU#setNumber(double)
*/
public void setNumber(double number) {
this.number = number;
}
/*
* (non-Javadoc)
*
* @see com.vnvtrip.IMonitorCPU#getUsername()
*/
public String getUsername() {
return username;
}
/*
* (non-Javadoc)
*
* @see com.vnvtrip.IMonitorCPU#setUsername(java.lang.String)
*/
public void setUsername(String username) {
this.username = username;
}
}
package com.vnvtrip;
import javax.management.Attribute;
import javax.management.MBeanServer;
import javax.management.MBeanServerFactory;
import javax.management.ObjectName;
/**
* JMX的测试类的应用
*
* @author longgangbai
*
*/
public class MonitorCPUAgent {
public static void main(String args[]) {
try {
/**
* 通过JMX的MBean服务工厂获取JMX的服务
*/
MBeanServer mbeanserver = MBeanServerFactory.createMBeanServer();
// 创建一个实例的名称
ObjectName objectName = new ObjectName("bean:type=MonitorCPU");
// 创建原始对象
MonitorMXBean cpu = new MonitorCPU();
// 注册JMX的MBean对象
mbeanserver.registerMBean(cpu, objectName);
Object atrris = mbeanserver.getAttribute(objectName, "Username");
System.out.println(" username= " + atrris);
// 设置对象的各种属性(可能在客户端设置)
mbeanserver.setAttribute(objectName, new Attribute("Username",
"xiaobai"));
// 服务端根据实例信息监测是否变化
atrris = mbeanserver.getAttribute(objectName, "Username")
.toString();
System.out.println(" Username= " + atrris);
} catch (Exception e) {
e.printStackTrace();
}
}
}
输出结果如下:
username= xiao66li
Username= xiaobai
注意如果你的JMX的MXBean命名有问题:发生此类异常:主要原因JMX的MXBean的命名规则不符合标准。
javax.management.NotCompliantMBeanException: MBean class com.vnvtrip.MonitorCPU does not implement DynamicMBean, neither follows the Standard MBean conventions (javax.management.NotCompliantMBeanException: Class com.vnvtrip.MonitorCPU is not a JMX compliant Standard MBean) nor the MXBean conventions (javax.management.NotCompliantMBeanException: com.vnvtrip.MonitorCPU: Class com.vnvtrip.MonitorCPU is not a JMX compliant MXBean)
at com.sun.jmx.mbeanserver.Introspector.checkCompliance(Introspector.java:160)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerMBean(DefaultMBeanServerInterceptor.java:305)
at com.sun.jmx.mbeanserver.JmxMBeanServer.registerMBean(JmxMBeanServer.java:482)
at com.vnvtrip.MonitorCPUAgent.main(MonitorCPUAgent.java:27)
评论
请问 我一个系统中在启动初始化的时候 就启动一个jmx服务 这个mbserver中没有任何 mbean 我想动态添加一个mbean 怎么搞啊
这个mbean里面 包含我统计的数据啊
我刚才试下了下 拿到我的mbserver 然后register进去一个 但是在jconsle里面看不到
定远前方(448485223) 19:14:34
有一个是 mbserver.creatembean(“com.....dynaimicmbean”,objname);的 这个说我的这个mbean加载不了啊
两种方法我都用了 一个是regesitermbean 一个是creatembean
请问我怎么动态注册一个mbean进去啊
或者以XxxxMBean格式
类名以MXBean或MBean结尾都可以
发表评论
-
【转】Django resources
2014-01-23 14:35 10795Django resources This page li ... -
使用国内镜像源来加速python pypi包的安装
2014-01-16 11:16 197772pipy国内镜像目前有: http://pypi.d ... -
[转 ]vagrant使用简介
2014-01-10 13:53 257171> 简介: vagrant提供了易于配置,重复性 ... -
[转]在Java中调用Python
2014-01-07 13:08 9202在执行之前都需要把jython对应的包加载进去,这个是必须的 ... -
[转]Eclipse配置PyDev插件
2014-01-02 14:25 2827安装python解释器 安装PyDev: 首 ... -
RestFuse的研究(五) Http请求的封装
2014-06-14 15:50 3612在RestFuse中封装了Http请 ... -
RestFuse的研究(四) Junit的Statement的分析
2013-12-06 11:46 1658在RestFuse提供了多种单 ... -
RestFuse的研究(三) Junit的Rule的使用和分析
2013-12-06 11:01 2232在junit中定义一些可以公用的规则(R ... -
RestFuse的研究(二) Junit的Runner的分类和模式
2013-12-06 10:40 1595在Junit4中的调用JunitCore可以采 ... -
RestFuse的研究(一) HttpJunitRunner的实现
2013-12-06 10:11 1740在RestFuse是一种针对Rest We ... -
[转]An open-source JUnit extension to test HTTP/REST APIs
2013-12-06 09:57 1097http://developer.eclipsesource ... -
TestNG简单的学习(十三)TestNG中Junit的实现
2013-12-04 09:00 3351TestNG和junit的整合 ... -
TestNG简单的学习(十二)TestNG运行
2013-12-03 09:08 51569文档来自官方地址: ... -
TestNG简单的学习(十一)TestNG学习总结
2013-12-03 09:08 14165最近一直在学习关于TestNG方面的知识,根 ... -
TestNG简单的学习(十)TestNG @Listeners 的使用
2013-12-03 09:07 8682TestNG官方网站: http://testng.or ... -
TestNG简单的学习(九)TestNG Method Interceptors 的使用
2013-12-03 09:07 2704TestNG官方网站: http://testng ... -
TestNG简单的学习(八)TestNG Annotation Transformers 的使用
2013-12-03 09:07 2802TestNG官方网站: http://testng.or ... -
TestNG简单的学习(七)TestNG编程方式运行
2013-12-02 09:22 2447TestNG官方网站: http://testng.or ... -
TestNG简单的学习(六)测试工厂注释的使用
2013-12-02 09:22 2776TestNG官方网站: http://testng.or ... -
TestNG简单的学习(五)参数化测试数据的定制
2013-12-02 09:22 2693TestNG官方网站: http://testng.or ...
相关推荐
总的来说,JMX和MBean Server提供了一种标准、灵活的管理方式,使得Java应用的管理和监控变得更加便捷。通过结合Spring框架,开发者可以更轻松地在应用中集成JMX功能,实现对应用的全方位管理。
它提供了一套标准的接口和服务,使得开发者能够轻松地在Java应用中集成管理和监控的能力。JMX的核心概念包括MBeans(Managed Beans)、Servers、Agents以及Connectors,它们共同构成了一个灵活的管理架构。 1. **...
在本章《JMX实战(四)》中,我们将深入探讨最简单的MBean类型:标准MBean。标准MBean适用于具有稳定、已知接口的资源。这一章将介绍如何使用标准MBean来配置应用程序资源(如日志工具和应用属性),以及如何将应用...
它提供了一种标准的方式来管理和监控应用程序,包括配置、性能和资源管理。JMX允许开发者创建可管理和自描述的组件,称为Managed Beans(MBeans),这些组件可以被操作系统或网络管理系统用来监控和配置。 ### JMX ...
AMX在保留JMX原有的优势基础上,增加了更多的面向对象特性和简化了MBean的开发过程,使得在GlassFish环境中管理和监控应用变得更加直观和高效。 #### JMX的基本概念 - **MBeans**:这是JMX的核心组成部分,用来...
在当前网络监控的领域中,随着网络技术的快速发展,...借助JBoss等应用服务器的支持,JMX已经成为了网络监控和管理的重要工具之一,它为开发和运维人员提供了丰富的手段来构建、部署和维护高性能的网络监控解决方案。
Java Management Extensions(JMX)是Java平台上的一个标准,用于创建和管理应用程序的管理资源,如服务、设备、系统组件等。JMX 提供了一种框架和API来监控和管理运行时的应用程序,使得开发者可以轻松地添加管理...
Java Management Extensions(JMX)是Java平台上的一个标准管理框架,它允许开发人员创建、注册和管理名为MBeans(Managed Beans)的对象,这些对象代表了系统、应用程序或服务的可管理资源。通过JMX,我们可以远程...
**JMX(Java Management Extensions)** 是Java平台提供的一种管理和监控的标准框架,它允许开发者对应用程序、设备和服务进行管理,提供了动态发现、监控和管理的能力。JMX 可以帮助我们远程控制应用,查看其运行...
在开发JMX应用时,首先需要定义MBean接口,然后创建实现该接口的类。接着,注册MBean到MBean Server,最后配置连接器以便客户端访问。MX4J的使用通常涉及以下步骤: 1. 添加MX4J依赖到项目。 2. 创建MBean接口和实现...
1. **Instrumentation层**:定义了MBean开发所需的接口和规范,MBean可以是Java组件或包装其他语言资源的Java Wrapper。 2. **Agent层**:建立在Instrumentation层之上,包含MBeanServer,并提供Adapter和Connector...
MBean是对任何可管理对象(如Java应用、服务或设备)的抽象,它们可以是Java开发的,或者至少可以通过Java进行包装。MBean具有属性、操作和可发出的通知,使得管理应用程序能够访问和操作这些资源。 **代理层** ...
JMX(Java Management Extensions)是一种标准的Java技术,用于管理和监控应用程序、设备、系统等资源。它提供了多种方式来管理Java应用,包括使用MBeans(Managed Beans)进行远程监控及控制。 #### JMX的开发步骤...
Java Management Extensions (JMX) 是Java平台的一个标准API,用于创建、管理和监控各种资源,如Java应用程序、网络设备、操作系统等。JMX提供了一种标准的方式来注册MBeans(Managed Beans),这些MBeans是代表可...
综上所述,"JMX开发步骤.doc"可能涵盖了JMX的基本概念、MBean的创建与注册、MBeanServer的使用、管理接口设计、连接器配置、安全管理实践以及如何在实际项目中应用JMX等详细内容。这份文档对于学习和理解JMX技术,...
1. JMX API:包括MBean服务器接口、MBean接口、MBean信息类和连接器接口等,供开发人员创建和管理MBeans。 2. jconsole:JDK自带的图形化管理工具,通过JMX连接到目标应用程序,展示性能数据和MBean信息。 3. jinfo...
Java Management Extensions (JMX) 是Java平台上的一个标准技术,用于管理和监控应用程序、操作系统和网络设备。它提供了统一的接口来管理Java应用,使得开发者能够创建可管理的组件,并通过管理代理(Management ...