JMX: Java Management Extensions
监控(维护jvm运行的一些信息),管理(更改)jvm服务器
MBean:
Managed Bean的简称。An MBean can represent a device, an application, or any resource that needs to be managed
通过MBean interface暴露一系列方法和属性,外界可以获取被管理的资源的状态和操纵MBean的行为。MBean提供了更加容易操作的反射的使用。
The JMX specification defines four types of MBean: standard MBeans, dynamic MBeans, open MBeans(形如MXBean) and model MBeans.
命名约定:Standard MBean,MXBean
方法 T getN() 明确说明存在一个名为 N 的可读属性,忽略从Object继承的final方法: getClass().
方法 boolean isN() 明确说明存在一个名为 N 的可读属性,且该属性的类型为boolean,Open类型为 SimpleType.Boolean。
方法 void setN(T x) 明确说明存在一个名为 N 的可写属性。
其他每个方法都明确说明存在一个名称与该方法相同的操作。
好像不支持复杂属性Person
interface MBeanServer
MBean的容器
MBeanServerFactory.createMBeanServer()
addNotificationListener(ObjectName name, ObjectName listener, NotificationFilter filter, Object handback)
向已注册的 MBean 添加一个侦听器????
registerMBean(Object object, ObjectName name)
JMX Agent:用来与外界(JVM之外)进行通信。也是通过MBean的形式来发布。
Agent通过各种各样的Adapter和Connector来与外界(JVM之外)进行通信。
Adapter为各种协议工具,比如HtmlAdaptorServer,SNMP adapter
Connector,为远程的JVM,比如RMI Connector
与外界通信的方式?:
1,socket字节流
2,jmx,uc的不是jvm外,HtmlAdaptorServer本身就是socket
3,多线程的共享变量资源
2,file,数据库时特殊文件,那设备还是文件呢。linux下。
ObjectName
用来匹配MBean用。格式及合法实例
domain:key1=value1,key2=value2 //域:键属性模式
*:type=Foo,name=Bar,*
d:type=F?o,name=Bar,id=test
大系统,包含多个服务器,肯定是多个jvm了,
JMX在RMI上又封装了一层,rmi和webservice比较相似
jmx虽然是用来监控的,但是,还可以实现业务方法。
一个大系统中,各内部模块系统之间的基于接口方式的互相调用和治理,使用jmx是最佳方案.
带来的好处是
1.面向接口,远程调用对于开发人员是透明的,模块在调用jmx接口时,与调用本地方法几乎相同.
2.可视化的治理界面, 通过 Jconsole等jmx客户端,可以实时监控系统,并且可实时调用方法进行某些操作.
典型应用场景:
某聊天系统,一台服务器作为 在线用户列表服务器 A1, n台服务器为用户提供聊天业务处理 N1 ,N2,N3...,
一台服务器作为后台管理系统A2.
系统治理员现在进行下面这样一个操作,察看某用户是否在线,找到该用户,发现其在线,则将该用户加入黑名单,并踢下线.
对应的jmx接口可以由以下几个:
A1为A2提供查询在线用户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的微内核系统。
某聊天系统,一台服务器作为 在线用户列表服务器 A1, n台服务器为用户提供聊天业务处理 N1 ,N2,N3...,
一台服务器作为后台管理系统A2.
系统治理员现在进行下面这样一个操作,察看某用户是否在线,找到该用户,发现其在线,则将该用户加入黑名单,并踢下线.
对应的jmx接口可以由以下几个:
A1为A2提供查询在线用户jmx接口,加入黑名单接口,kickout接口,
A1为N1..等服务器提供以下接口: 注册业务服务器,添加在线用户.查找黑名单用户
N1...到N3为A1提供kickout接口.
因此在上面的踢下线操作,则由用户在A2的web界面发出,交由A1执行,A1记录黑名单之后,再找到用户所在业务服务器调用N1提供的接口让用户下线.
以上情形是在生产环境下的部署,而在开发工作,则可以将A1,A2,N...N3等功能合并在一个应用中调试. 由于使用的是jmx接口,在本地调试合并之后,可以直接调用应用内部接口方法.
这样借助jmx实现的应用模块的灵活组装与拆分,使得系统的可以根据负载需要,根据性能情况,灵活的拆分和整合部署分布式的应用.
croba松耦合的企业架构
核心就是那个类似corbar的东西,一个企业主线,然后很多服务通过这个主线来实现可插拔的结构
各个服务相互独立,需要的时候进行装配
JMX
负责管理那些部署在平台上的功能性组件。这些组件以暴露其管理接口的方式注册到JMX Server中,
并通过资源的ObjectName来定位和获取其实例。实现即插即用,JMX起到内核总线的作用。
JMX与JNDI
JMX是架构“管理”各个组件的生命周期是其主要出发点,JNDI为了获取相应的资源或者类,来调用这个组件所提供的功能,一般是业务功能。
RMI
资源resource
CPU、网卡、存储阵列、数据库、IBM Websphere都是 IT 资源;
不同的IT资源就像是说着不同语言的人:需要给每个 IT 资源配个翻译,统一通信统一管理。
MBean 中公开的方法,最终会被 JMX 转化成属性(Attribute)、监听(Listener)和调用(Invoke)的概念。如果读者对 Java Bean 有一些了解的话
SwitchConfService不需要做成JMX的MBean?都是一个虚拟机内的操作,干嘛用
死锁检查
ThreadMXBean.findDeadlockedThreads()
RMI目前使用Java远程消息交换协议JRMP(Java Remote Messaging Protocol)进行通信
RMI是Java的一组拥护开发分布式应用程序的API,分布式在不同jvm上。
选unicode asscii eacaspsed
用UE,unix、windows、bom等和16进制,和二进制看,本质一样的。10进制不一样。
不需要报名,到本地。
javac *.java
字节顺序,和bytebuffer。还有要验证。
管理构件可以通过以下三种方法实例化和注册:
1)通过另一个管理构件
2)管理代理本身
3)远程应用程序
自从SUN发布了JMX规范,许多大公司纷纷行动起来,实现规范或者实现相应的基于JMX的网络管理系统,下面列出了当前的主要实现及应用情况:
1)SUN为JMX规范了作出了相应的参考实现,并在此基础上开发了一个全新的用于网络管理的产品JDMK(Java动态管理工具集),其中定义了资源的开发过程和方法、动态JMX代理的实现、远程管理应用的实现。同时,JDMK也提供了一个完整的体系结构用来构造分布式的网络管理系统,并提供了多种协议适配器和连接器,如SNMP协议适配器、HTML协议适配器、HTTP连接器、RMI连接器。
2)IBM Tivoli实现了JMX规范的产品为TivoliJMX,它为JAVA管理应用程序和网络提供了架构、设计模式、一些API集和一些服务。
3)Adventnet开发的关于JMX的产品为AdventNet Agent Toolkit,它使得定义新的SNMP MIB、开发JMX和Java SNMP Agent的过程自动化。
4)JBoss实现的J2EE应用服务器以JMX为微内核,各个模块以管理构件的形式提供相应的服务。
5)BEA的Weblogic应用服务器也将JMX技术作为自己的管理基础。
JMX体系结构分为四层,即设备层、代理层、分布服务层和附加协议API。但SUN当前只实现了前两层的具体规范,其余的规范还在制定当中。JMX代理要和远程应用程序通信,需要提供至少一个连接器和协议适配器。
分享到:
相关推荐
书中不仅有对于基础知识的介绍,还有对于JMX开发中重大的体系架构问题的深入探讨,总结了大量JMX开发中的设计模式,并讨论了框架、安全性与性能等等。书中提供了几个典型的例子,兼顾各种开发平台,这些例子的代码...
总结来说,JMX提供了多种访问方式,可以根据不同的需求选择合适的方法。HTTP页面方式适合提供Web界面,方便非技术用户使用;VM参数方式适用于本地或远程调试和监控;而RMI方式则为开发自定义的管理客户端提供了可能...
总结起来,JMX是一个强大的工具,它简化了Java应用程序的管理和监控,通过MBeans的抽象,使得开发者可以专注于业务逻辑,而将管理功能交给JMX框架。无论是在本地还是远程,JMX都能提供便捷的方式来管理和控制Java...
总结来说,`jmxdemo`项目是一个实用的学习资源,可以帮助你深入理解JMX机制,提高你在Java环境中进行系统管理和监控的能力。通过实际操作和调试代码,你可以更直观地了解JMX的工作流程,并将其应用于自己的项目中。
**JMX配置与使用** ...总结来说,JMX是一个强大的工具,通过正确配置服务器和客户端,可以有效地管理和监控Java应用程序。理解并掌握JMX的配置与使用,对于提升系统运维的效率和稳定性具有重要意义。
### 总结 JMX提供了一种强大且灵活的方式来管理和监控Java应用程序,使得开发者能够轻松地添加管理功能,而无需深入底层的系统级编程。通过MBeans和MBeanServer,开发者可以创建可配置、可监控的服务,这对于大型...
总结来说,`jmxtools-1.2.1.jar` 和 `jmxri-1.2.1.jar` 提供了完整的JMX工具集和实现,使得开发人员能够有效地管理和监控基于Java的应用程序,提高系统的可维护性和可扩展性。它们是Java开发者在进行系统监控和运维...
总结来说,JMX规范通过提供一个统一的、标准化的管理解决方案,使得Java应用程序和组件的管理变得更加高效和可靠。无论是对于软件编程人员、网络管理人员,还是对于希望遵循JMX规范管理硬件设备和应用接口的编程人员...
总结来说,**JMX** 和 **JMS** 在目的和功能上有着明显的区别。**JMX** 关注于管理和监控,而 **JMS** 则专注于消息的传递。在实际应用中,两者可以协同工作,例如,JMX 可用于监控消息队列的状态,而 JMS 负责消息...
**总结** JMX技术为Java开发者提供了一套强大而灵活的工具,用于构建和集成管理功能。通过MBean,开发者可以轻松地将任何资源转变为可管理的对象,而代理层和分布式服务层则确保了这些资源能够在复杂的网络环境中被...
总结来说,JMX是Java平台的重要管理工具,它提供了一种统一的接口来管理和监控应用程序和服务。通过《JMX技术介绍》一书及其配套源代码,读者可以深入了解并熟练运用JMX,提升其Java应用程序的管理和监控能力。
总结来说,"cmdline-jmxclient.zip"提供了一个命令行工具,用于通过JMX协议连接到JVM,尤其是Tomcat这样的Java应用服务器,以便进行远程监控和管理。这在日常运维、性能优化、故障排查等场景中非常有用,尤其是在...
总结,JMX为Java开发者提供了一套强大的管理框架,通过MBeans、MBean服务器和连接器,可以方便地监控和控制应用程序,实现高效、灵活的系统管理。了解和掌握JMX,对于提升Java应用的可维护性和稳定性具有重要意义。
总结,JMX提供了一套完整的框架,使得开发者能够轻松地实现对远程服务器的监控,包括CPU、内存等关键资源的实时监控。通过理解和利用JMX,可以有效地管理和优化Java应用程序,提升系统的稳定性和性能。
#### 四、总结 本教程通过一个简单的“Hello World”示例介绍了JMX的基本用法。通过JMX,我们可以轻松地在Java应用程序中集成管理和监控的功能,这对于提高应用的可管理性和可维护性具有重要意义。希望本文能够帮助...
**总结** JMX是Java平台上的强大工具,它提供了一套完整的框架来管理和监控应用程序。通过创建和注册MBeans,我们可以将任何对象变成可管理的资源。结合源码学习和使用工具,JMX可以帮助我们更好地理解和控制我们的...
总结起来,这个JMX测试包是为了确保Zabbix能够有效地利用JMX接口监控Java应用程序,通过提供的命令行工具可以进行连接测试、数据查询和验证,帮助用户诊断和解决监控问题。对于管理和维护依赖Java的应用环境的IT专业...
#### 七、总结 JMX SNMP Manager API为开发者提供了一个强大的工具集,用于开发能够管理和监控基于JMX的应用程序的SNMP代理。通过利用这些API,开发者不仅可以实现基本的SNMP操作,还能实现高级的安全特性,如认证...