`
碧海山城
  • 浏览: 189344 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

我的理解--关于jmx

阅读更多

JMX

Java Management ExtensionsJava管理扩展,初步看了些资料,以为是专门管理,监控jvm的一些信息的,特别是visual VM这个监控jvm的东西,还有一个添加JMX连接的时候(我自己想错了,那样的话应该叫jvm Management Extensions),其实他能使得基于java语言开发的程序能被管理,并且是可扩展的。

 

 

 

Jdk以前是通过JVMPI之类来监测Java程序运行中的jvm和系统的一系列情况,现在通过jmx就可以做到,这是通过java.lang.management 包来实现的,这个包是 JMX JDK方面 的一个应用,并不是表示jmx就是一个监控jvm的东西。

 

我们可以用jmx来监控我们的系统,通过公布API的方式,但是,这里采用监控这个词,也是受了前面的例子的影响,实际上,个人觉得,就可以用jmx来开发我们的系统。

 

现在的jbosshibernatetomcat各种应用都号称实现了JMX规范,将可管理,可调用的MBean注册到MBeanServer中,通过一种类似“web服务”的方式公布出去,并且伴有一个名字,可以通过该名字找到该MBean。并且,这里的MBean是可以被管理的,说到这里又想到了OSGI

 

JMXWeb Service

 

个人认为,我们实现JMX规范,将东西发布出去,和通过web Service的方式是很类似的,也是可以远程调用的,只是相对的web Service的方式更加SOA一些,不过JMX号称也要提供对非java客户端的支持,也就是跨语言了吧。。。

 

现在的JMX连接方式:

JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:9999/server");        JMXConnector jmxc = JMXConnectorFactory.connect(url, null);

看了下源码,貌似还是通过RMI来实现的,不知道它要怎么实现非java客户端支持。

 

 

从这里,我觉得JMX可以实现的,我们也都可以通过web Service实现,只是看在它有个“M”上,以后如果有什么系统管理,监控方面的,可以考虑使用它,也许开发,个人觉得还是使用web service好一些。

 

说到这里,感觉OSGIJMX也好像,在看到JMX能够对MBean进行管理的时候,我就觉得跟OSGI很像,OSGI管理的是Bundle,找了找资源,原来早就有人考虑过了:

http://teamojiao.iteye.com/blog/438334

 

顺便,在查资料的时候,发现一个东西,

if your question means, how to manage an OSGi runtime with JMX, you should have a look at MAEXO (http://code.google.com/p/maexo/). With MAEXO bundles up and running you will transparently get MBeans for a fair amount of services of the OSGi runtime as well as MBeans for your own services and bundles. Just have a look at the screencast.

 

摘一些话:仅做参考

 

<网友回复>

一个大系统中,各内部模块系统之间的基于接口方式的互相调用和治理,使用jmx是最佳方案.

带来的好处是

1.面向接口,远程调用对于开发人员是透明的,模块在调用jmx接口时,与调用本地方法几乎相同.

2.可视化的治理界面, 通过 Jconsole等jmx客户端,可以实时监控系统,并且可实时调用方法进行某些操作.

 

典型应用场景: 

 

某聊天系统,一台服务器作为 在线用户列表服务器 A1, n台服务器为用户提供聊天业务处理 N1 ,N2,N3...

一台服务器作为后台治理系统A2. 

 

系统治理员现在进行下面这样一个操作,察看某用户是否在线,找到该用户,发现其在线,则将该用户加入黑名单,并踢下线.

 

对应的jmx接口可以由以下几个: 

A1A2提供查询在线用户jmx接口,加入黑名单接口,kickout接口,

A1为N1..等服务器提供以下接口: 注册业务服务器,添加在线用户.查找黑名单用户

N1...N3为A1提供kickout接口.

 

因此在上面的踢下线操作,则由用户在A2的web界面发出,交由A1执行,A1记录黑名单之后,再找到用户所在业务服务器调用N1提供的接口让用户下线.

 

 

以上情形是在生产环境下的部署,而在开发工作,则可以将A1,A2,N...N3等功能合并在一个应用中调试. 由于使用的是jmx接口,在本地调试合并之后,可以直接调用应用内部接口方法.

 

这样借助jmx实现的应用模块的灵活组装与拆分,使得系统的可以根据负载需要,根据性能情况,灵活的拆分和整合部署分布式的应用.

 

替代方案,选择webservice,xmlrpc等,但是这些都需要手工编写或用工具生成大量的代码来辅助完成接口间的java对象序列化 。

 

经典jmx案例:

1.Jboss.使用jmx治理内部的各个service。

2. 基于java的开源网管软件 Hyperic HQ ,通过jmx与各被治理资源进行通讯和信息采集.

 

 

 

<网友回复>JMX是一个治理的框架。

当我们想使用JMX的时候,就要问,我们的系统当中有需要监控治理的资源或者对象吗?实事求是一点,我们不能为了想使用一个高端的技术,就歪曲系统的本来面目。

假如第一个问题是肯定的,接下来就是看这些资源是否有生命周期。

经典案例:jboss就是将所有可部署的组件作为资源来治理,这些组建都有其生命周期。这个理念甚至延伸到了其系统内部,将其内部的服务作为组件纳入到 JMX中来,成就了jboss基于jmx的微内核系统。

 

 

 

  • 大小: 32.8 KB
3
2
分享到:
评论
6 楼 happylouis 2015-09-10  
5 楼 whmwg 2015-04-18  
4 楼 luckywnj 2012-11-01  
赞一个,jmx刚开始起步
3 楼 swanky_yao 2012-10-23  
JMX性能怎么样?我目前的系统Server与Agent端的很多调用都是通过JMX 我怀疑这个对性能的影响有点大,就算是Hyperic HQ也只是很少部分用到了JMX
2 楼 碧海山城 2010-05-29  
mercyblitz 写道
楼主你误解了,JMX主要的作用是监控,不过它可以调用方法。事实上,还是RMI的关系。

你说的WS相似的是RMI,不是JMX。


呵呵,对,JMX在RMI上又封装了一层,让我们实现它的规范,就可以实现“监控”。所以和WS相似的还是RMI,是不是可以说jmx一定程度上也是RMI的一种应用呢?

另外,其实JMX单单说是监控,其实我觉得不是很妥当,比如一个带点业务功能的方法:”获得注册用户“,这个方法也是可以被其他系统调用的,有点偏业务的意思,所以我说其实JMX也可以用于简单项目的开发,,,

1 楼 mercyblitz 2010-05-29  
楼主你误解了,JMX主要的作用是监控,不过它可以调用方法。事实上,还是RMI的关系。

你说的WS相似的是RMI,不是JMX。

相关推荐

    jmx入门

    为什么JMX那么受欢迎,JMX到底有那些优势只得人们去学习和理解,本文从JMX的基本架构、hellowold jmx以及spring对JMX的支持讲起,希望大家能通过本文对JMX有个基础的认识,并能通过本文为今后学习JMX打个基础

    Boundary-Generic-JMX-Collector:通用 JMX MBean 收集器,使用 Boundary API 创建指标并发布它们

    需要边界高级帐户以及 JMX 的工作知识和边界指标 API 的理解: 使用说明 编辑 configure.json 文件 - 您将需要您的边界电子邮件和 api.key。 您还需要所有 JMX 信息。 原始 configure.json 文件包含字段说明。 希望...

    JAVA JMX 学习资料

    个人收集整理的学习java JMX的好东西,帮助初学者更好的理解JMX的作用和使用方式。个人认为包括的资料比较全了。

    JMX1.4规范中文版

    这篇文档是对JMX 的一个介绍,给出了定JMX 设备层,代理层和部署层服务的规范。 它不是编程手册或者教程,而是希望读者可以对JMX 架构、...度的理解。 完整的JMX 规范是由本书和API 文档组成的,它们定义了所有编程对象

    Designing Manageable Java EE Platform-Based Applications with the JMX API

    JavaOne会议:“Designing Manageable Java EE Platform-Based Applications with the JMX API”(使用JMX API设计基于Java EE平台的可管理应用程序) 对理解JMX应用及其发展很有帮助

    commons-jmx:实用程序库可帮助开发通过JMX监视的应用程序

    当前项(使用toString()将所有项,键,值转换为JMX可以理解的值) 例子 注册一个MBean: IYourMXBean mbean = new YourMXBean(); ObjectName objectName = MBeans.register(mbean); // Object name is: '...

    深入java虚拟机

    1. JVM调优 1.1 JVM调优总结(一)-一些概念 1.2 JVM调优总结(二)-一些概念 1.3 JVM调优总结(三)-基本垃圾回收算法 1.4 JVM调优总结(四)-垃圾回收面临的问题 1.5 JVM调优总结(五)-分代垃圾...4.3 深入理解JVM

    (超赞)JAVA精华之--深入JAVA API

    1.2 深入理解嵌套类和内部类 1.2.1 什么是嵌套类及内部类? 1.2.2 静态嵌套类 1.2.3 在外部类中定义内部类 1.2.4 在方法中定义内部类 1.2.5 匿名内部类 1.2.6 内部类使用的其它的问题 1.3 文件和流 1.3.1 什么是数据...

    (2.0版本)自己写的struts2+hibernate+spring实例

    common.jar jboss-jmx.jar jboss-system.jar jacc-1_0-fr.jar jgroups-2.2.8.jar oscache-2.1.jar proxool-0.8.3.jar swarmcache-1.0rc2.jar classes12.jar spring.jar ...

    Eclipse开发分布式商城系统+完整视频代码及文档

    │ │ 深入理解Java内存模型.pdf │ │ │ └─课后资料 │ ├─笔记 │ │ 淘淘商城_day20_课堂笔记.docx │ │ │ └─视频 │ 07-使用Jedis连接集群操作.avi │ 00-今日大纲.avi │ 01-RDB持久化方式.avi │ 02...

    spring chm文档

    9.5.1. 理解Spring的声明式事务管理实现 9.5.2. 第一个例子 9.5.3. 回滚 9.5.4. 为不同的bean配置不同的事务语义 9.5.5. &lt;tx:advice/&gt; 有关的设置 9.5.6. 使用 @Transactional 9.5.7. 插入事务操作 9.5.8. ...

    Spring-Reference_zh_CN(Spring中文参考手册)

    2.6.2. JMX 2.6 .3. 任务规划 2.6.4. 对Java 5(Tiger)的支持 2.7. 移植到Spring 2.0 2.7.1. 一些变化 2.7.1.1. Jar包 2.7.1.2. XML配置 2.7.1.3. Deprecated的类和方法 2.7.1.4. Apache OJB 2.7.1.5. iBatis 2.8....

    jforgame:jforgame是一个一站式游戏服务端开发框架,包含游戏服,跨服,匹配服,后台管理系统等模块。同时提供大量业务案例以供学习

    搭配框架博客栏目教程,快速理解项目模块原理 支持socket / webSocket接入,兼容手游/页游服务端架构 通信协议支持protobuf或java反射,为客户端提供多种选择 框架提供多种组件,可以直接二次开发业务逻辑 提供热更...

    Hibernate_3.2.0_符合Java习惯的关系数据库持久化

    19.5. 理解集合性能(Understanding Collection performance) 19.5.1. 分类(Taxonomy) 19.5.2. Lists, maps 和sets用于更新效率最高 19.5.3. Bag和list是反向集合类中效率最高的 19.5.4. 一次性删除(One ...

    HibernateAPI中文版.chm

    19.5. 理解集合性能(Understanding Collection performance) 19.5.1. 分类(Taxonomy) 19.5.2. Lists, maps 和sets用于更新效率最高 19.5.3. Bag和list是反向集合类中效率最高的 19.5.4. 一次性删除(One ...

    hibernate3.2中文文档(chm格式)

    19.5. 理解集合性能(Understanding Collection performance) 19.5.1. 分类(Taxonomy) 19.5.2. Lists, maps 和sets用于更新效率最高 19.5.3. Bag和list是反向集合类中效率最高的 19.5.4. 一次性删除(One ...

    JAVA SE学习精华集锦

    1.2 深入理解嵌套类和内部类 47 1.2.1 什么是嵌套类及内部类? 47 1.2.2 静态嵌套类 48 1.2.3 在外部类中定义内部类 48 1.2.4 在方法中定义内部类 49 1.2.5 匿名内部类 49 1.2.6 内部类使用的其它的问题 50 1.3 文件...

    tomcat深入剖析.pdf

    深入剖析Tomcat》编辑推荐:深入理解Tomcat的必读之作,欲知其然,更欲知其所以然。 《深入剖析Tomcat》以Tomcat 4和Tomcat 5两个版本为基础,从建立一个最简单的连接开始,深入介绍Tomcat的体系结构。从连接器到...

    springboot参考指南

    关于本文档 ii. 2. 获取帮助 iii. 3. 第一步 iv. 4. 使用Spring Boot v. 5. 了解Spring Boot特性 vi. 6. 迁移到生存环境 vii. 7. 高级主题 3. II. 开始 i. 8. Spring Boot介绍 ii. 9. 系统要求 i. 9.1. Servlet容器...

    MySQL 5.1官方简体中文参考手册

    1.1. 关于本手册 1.2. 本手册采用的惯例 1.3. MySQL AB概述 1.4. MySQL数据库管理系统概述 1.4.1. MySQL的历史 1.4.2. MySQL的的主要特性 1.4.3. MySQL稳定性 1.4.4. MySQL表最大能达到多少 1.4.5. 2000年兼容性 1.5...

Global site tag (gtag.js) - Google Analytics