一、JMX官方指导文档 之 JMX概述

来源:互联网 发布:知乎 bipolar disorder 编辑:程序博客网 时间:2024/06/06 11:26

JMX概述

JMX(Java Management Exrensions)技术是标准Java平台的一部分。JMX技术从J2SE 5.0发布的时候添加到Java2平台。
JMX提供了一个标准的方法去管理资源,例如:应用,设备和服务。因为JMX是一种动态技术,你可以在被管理资源创建、实例化和实现的时候监控和管理他们。你也可以使用JMX技术去监听和管理Java虚拟机。
JMX规范为Java语言定义了监听应用程序和网络所需要的架构、设计模式,API和服务。
在JMX中,一个给定的资源被描述成一个或多个被管理的Bean(Managed Beans 或者 MBeans)。这些MBeans被注册到一个中心管理对象服务器,叫做MBean Server。
MBean Server作为一个管理代理可以在几乎所有的支持Java的设备上。
规范定义了JMX代理,你可以使用它管理所有已经被正确配置的资源。一个JMX代理包括一个MBean Server(注册MBean的地方)和一系列处理MBean的服务。使用这种方法可以让远程的管理系统通过JMX代理可以直接控制资源。
因为资源管理的方式和管理的基础设施完全独立,因此资源可以被管理,而不用关心他们是如何实现的。
JMX定义了标准的连接器(JMX连接器)去确保你可以通过远程管理应用访问JMX代理。JMX连接器为同样的管理接口提供了不同的协议。因此,管理应用程序可以不管使用的连接协议透明的管理资源。当然了JMX代理也可以用于不符合JMX规范的系统或者应用,只要这些系统或者应用支持JMX代理。

为什么使用JMX?

JMX技术为开发者提供了一套灵活的方式给基于Java的应用程序创建智能代理、实现分布式中间件管理并且平滑地整合现存的管理和监控系统。
* JMX技术使Java应用程序无需在管理方面投入大量精力。
基于代理的JMX技术可以在几乎所有的支持Java的设备上运行。因此Java程序变成可管理对他们的设计影响不大。Java程序仅仅只需嵌入一个管理对象服务器,使它的一些功能作为一个或几个被管理的bean(MBean)在目标服务器上注册。然后就可以从管理基础设施中受益。
* JMX技术提供了一个标准的方法去管理Java应用、系统和网络。
例如,企业版应用服务器(JavaEE5)符合JMX架构,因此可以通过JMX技术管理。
* JMX技术可以被用于JAVA虚拟机的外部管理
JAVA虚拟机深度使用了JMX技术。你可以开启一个JMX代理去访问JVM内置的设施,并且远程监控和管理JVM。
* JMX技术提供了一个可伸缩的,动态的管理架构。
每一个JMX代理服务都是根据不同的需求被独立的插入到管理代理中的。这种基于组件的方法意味着JMX解决方案可以伸缩地支持从小型设备到大型电信交换机。JMX规范提供了一套核心的代理服务。附加的服务可以在管理设施中被动态的加载、卸载或者更新。
* JMX技术使用了现有的标准JAVA技术
不论什么时候需要,JMX都可以引用现存的Java规范,例如:JAVA命名和目录接口(JNDI)。
* 基于JMX技术的应用程序(JMX应用)可以从NetBeans的IDE模块创建
你可以从NetBeans Update Center(选择 Tools->Update Center)来开启你的JMX应用。这减少了开发JMX应用的花费。
* JMX整合了现有的管理解决方案和新兴技术
JMX APIs是开放的接口,任何管理系统的供应商都可以自己实现。JMX解决方案可以使用查找、发现服务和协议如:Jini网络技术和服务定位协议(SLP)

JMX技术架构

JMX技术可以分为三层:
* 设备层
  * JMX代理
 * 远程管理
设备
为了使用JMX技术管理资源,你首先得用Java语言来描述你的资源。你可以使用Java对象,MBeans去实现对资源访问的描述。MBeans必须遵循JMX规范里面定义的设计模式和接口。这样可以确保所有的MBeans提供的被管理资源描述是统一的。尤其是标准的MBeans,JMX规范定义了一种特殊的MBean类型叫做MXBean。MXBean是一种仅仅提供预定义数据类型的MBean。其他的MBean也存在,但是这个文档主要关注标准MBeans和MXBeans。
一旦一个资源被描述为MBeans,它可以通过JMX代理被管理。MBeans不需要知道JMX代理是怎样操作它的。
MBeans被设计成灵活的、简单的并且容易去实现的。应用程序、系统和网络的开发人员可以使他们的产品以标准的形式管理,而不必了解或关注与复杂的管理系统。现有的资源可以通过最少的改动被管理。
总的来说,JMX规范的设备层提供了一个通知机制。这种机制确保MBeans去生成并且扩散通知事件到其他层的组件。

JMX代理
JMX代理是一种标准的管理代理在,直接控制资源并且使他们对远程的管理系统可用。JMX代理通常和他们控制的资源在同一个机器,但是这种安排也不是必须的。
JMX代理的核心组件是MBean Server,MBean被注册的对象管理服务器。因此一个JMX代理包含一系列的服务和被管理的MBeans和至少一个通信适配器或者连接器来保障管理应用程序的访问。
当你实现了一个JMX代理,你不需要知道被管理资源的语义或功能。事实上,JMX代理甚至不要知道哪个资源它将要服务,因为符合JMX规范的资源可以使用JMX代理提供资源需要的服务。相似的,JMX也不需要知道被管理应用的功能。
远程管理
JMX技术可以通过多种不同的方法去访问,使用现存的管理协议例如:简单网络管理协议(SNMP)或者专有协议。MBean server依赖于协议适配器和连接器来让JMX代理可以被代理JVM外面的管理系统访问。
每个适配器通过一个给定的协议为MBean server中注册的所有MBeans提供一个视图。例如, 一个HTML适配器可以展示MBean在浏览器中。
连接器提供一个管理边的接口处理JMX代理和管理系统的交互。每一个连接器使用不同的协议提供了同样的远程管理接口。当一个远程管理系统使用这个接口的时候,它可以通过网络透明地连接JMX代理,而不用关心这个协议。JMX技术提供了标准的解决方案,基于java远程方法调用

Java虚拟机的监控和管理

JMX技术也可以用于监视和管理Java虚拟机(JVM)。
JVM已经内建了设备确保你可以通过JMX技术来监听和管理。内建的工具通常被JVM外面的管理工具使用。为了监听和管理JVM的不同方面,JVM包含了平台符合JMX规范的MBean server和特殊的MXBeans。
平台MXBeans和平台MBean Server
平台MXBean是JavaSE平台提供的一系列MXBeans用于监视和管理JVM和Java运行时环境(JRE)的其他组件。每一个平台MXBean封装了JVM功能的一部分,例如:类加载系统、实时编译系统(JIT)、GC等等。这些符合JMX规范的MXBeans可以使用监控和管理工具交互,使你能够监控和管理这些不同虚拟机功能。Java平台提供了一个这样的可视化监视和管理系统--JConsole。
JavaSE平台也提供了一个标准的注册MXBeans的平台MBean server。平台MBean server也可以注册其他你想要创建的的MBeans。
JConsole
JavaSE平台也包括了符合JMX规范的JConsole监控和管理工具。JConsole使用JVM(平台MXBeans)扩展的设备提供关于性能和平台运行应用程序消耗的资源信息。
管理的箱外操作
因为JavaSE平台内建了实现JMX技术的标准监控和管理工具,你可以不用写一行JMX API代码在箱外查看。你也可以加载一个Java程序然后使用JConsole。
使用JConsole监控应用
这个过程展示了如何去监控Java记事本程序。JDK1.6之前你想要在JConsole中监控应用程序,你需要加入这个操作:
-Dcom.sun.management.jmxremote
然而从JDK1.6开始,你可以连接到任何支持API的本地应用。换一句话说,任何运行在JavaSE6的HotSpot虚拟机上的应用都可以被JConsole自动检测到,并且不需要使用上面的命令行选项。
1.通过使用下列终端窗口的命令开始Java记事本应用
java -jar jdk_home/demo/jfc/Notepad/Notepad.jar
jdk_home是你JDK的安装目录,如果你没有使用JDK1.6之后的版本你需要使用下面的命令:
java -Dcom.sun.management.jmxremote -jar jdk_home/demo/jfc/Notepad/Notepad.jar
2.一旦记事本被打开,在另外一个终端窗口中通过使用下面的命令开始JConsole
jconsole
一个新的连接对话框被打开
3.在新的连接对话框的进程列表中选中Notepad.jar,然后点击连接按钮。
JConsole打开并且连接到Notepad.jar进程。当JConsole打开时,会出现一个NotePad相关的概述监控和管理信息。例如: 你可以看到这个应用消耗的堆内存,当前运行的线程数目和CPU性能。
4.点击不同的JConsole标签
每一个选项卡都提供了关于JVM运行Notepad不同区域功能的更详细信息。所有的信息都是通过不同的MXBeans获取的。所有的平台MBeans可以展示在MBeans标签页上。MBeans标签是文档下一节的内容。
5.选择连接然后退出。

0 0
原创粉丝点击