Java管理扩展指南之JMX技术总览
JMX(Java管理扩展)系列
JMX(Java管理扩展)系列旨在介绍包含于Java基础版本(Java SE)中的JMX技术。本系列提供了如何使用JMX重要技术特性的诸多示例。
一、JMX技术总览简要介绍JMX技术,包括它的使用目的和主要功能。
二、MBean简介介绍JMX技术的基本概念-被管理的beans,也称作MBeans。同时会介绍MXBeans。
三、通知介绍JMX技术中的通知机制。
四、远程管理展示如何实现JMX API的远程管理能力和如何创建JMX客户端程序。
五、更进一步展示JMX技术的更为高级的文档,用于更进一步的深入学习。
JMX技术总览
1.1. JMX技术总体概述
JMX(Java管理扩展)技术是Java基础版本(Java SE)的一部分,最早加入到J2SE 5.0发行版。
JMX技术提供了一种简单的、基础的方法,用来管理诸如应用、设备和服务等资源。由于JMX技术是动态的,你可以使用JMX技术来监控和管理处于创建、安装和运行态的资源。你甚至可以使用JMX技术监控和管理Java虚拟机。
JMX规范定义了使用Java语言管理、监控应用和网络的架构、设计模式、APIs和服务。
使用JMX技术,资源会被一到多个称之为被管理Beans(MBean)的Java对象管理。MBean server担任管理代理的角色,可运行与支持Java语言的设备上。
JMX规范定义了JMX代理,它用于管理任何被正确配置的资源。JMX代理由MBean server(MBean在MBean server中注册)和一系列处理MBean的服务构成。这样,JMX代理直接控制资源并使远程管理程序控制资源成为可能。
资源被管理的方式完全独立于管理类的结构。资源被视为可被管理,与管理程序如何实现没有任何关系。
JMX技术定义了基本的连接器(称之为JMX连接器),它让你能够从远程管理程序访问JMX代理。JMX连接器的管理接口可以使用不同的协议。因此,管理程序可以更透明的管理资源,而不用担心使用的通信协议。JMX代理也可以被不满足JMX规范的系统或者应用调用,只要这些系统或者应用支持JMX代理即可。
1.2. 为何使用JMX技术?
JMX技术为开发者提供了一种更灵活的方法来管理基于Java的应用程序,创建更敏捷的代理,实现分布式管理中间件和平滑地集成这些解决方案到已经存在的管理和监控平台。
1.2.1. JMX技术使得Java应用程序易于被管理
基于JMX的代理可以运行于大多可运行Java程序的设备上。因此,java应用程序可以只需要付出很小的设计代价就能被管理起来。Java应用程序只需要嵌入一个被管理的对象server并开放其功能到MBeans,然后将MBeans注册到对象server。这必是应用程序被JMX管理所需要做的全部。
1.2.2. JMX技术提供基本的方式来管理Java应用程序、系统和网络
例如,Java企业版本(Java EE)5应用服务器符合JMX架构,因此可使用JMX技术对其进行管理。
1.2.3. JMX技术可用于管理Java虚拟机
Java虚拟机可以使用JMX技术管理。你可以启动一个JMX代理来访问内置的Java虚拟机,并可以远程监控和管理Java虚拟机。
1.2.4. JMX技术提供了一种可扩展、动态的管理架构
每一个JMX代理服务都是一个独立的模块,都可以根据需要被插入到管理代理中。这种基于组件的方法意味着JMX解决方案规范可以适应于小规模的设备和大规模的交换机。JMX技术规范提供一系列的核心代理服务。并可在管理程序中开发、动态加载、卸载和更新扩展服务。
1.2.5. JMX技术存在于基本的Java技术中
无论是否需要,JMX技术规范存在于Java规范,例如JNDI API。
1.2.6. 基于JMX的应用可以从NetBeans IDE中直接创建
你可以从NeBeans Update Center(选择:工具-更新中心)中获取创建JMX应用的模块。这能降低开发JMX程序的复杂度。
1.2.7. JMX技术集成了已有的管理方案和新兴技术
JMX APIs接口开放,任何管理系统供应商都可以实现。JMX解决方案可以使用查找和发现服务和协议,例如JINI网路技术和SLP。
1.3. JMX技术架构
JMX技术分为三层,包括:
装配层
JMX代理层
远程管理层
1.3.1. 装配层
使用JMX技术管理资源,你应该首先使用Java编程语言装配资源。你需要使用称之为MBeans的Java对象实现对资源设备的访问。MBeans必须遵从JMX规范定义的设计模式和接口。这样做保证了所有的MBeans以一种标准的方式管理资源。除了标准MBean,JMX规范还定义了一系列的MBeans。本系列着重讲解MBeans和MXBeans。
一旦资源被MBeans装配,资源便可以被JMX代理管理。MBeans不需要知道JMX代理去操作哪一个MBean。
MBeans被设计成灵活、简单和易于实现。开发者可以在不需要理解复杂管理系统的基础上,将应用程序、系统和网络以一种标准的方法将他们管理起来。已有资源可以用最小的代价完成管理。
此外,JMX规范的装配层提供通知机制。这种机制保证MBeans可以生成并传递通知事件到其他层。
1.3.2. JMX代理
基于JMX技术的代理(JMX代理)是一种标准的管理代理,它直接控制资源并使得他们能够使用远程管理程序进行管理。JMX代理通常与管理的资源位于同一机器,但这并不是必须的。
JMX代理的核心组件是MBean server,MBeans在其中进行注册。JMX代理同样包括一系列的服务来管理MBeans和至少一种通信适配器或者连接器来保证与远程管理程序的连接性。
当你实现JMX代理时,你不需要知道所管理资源的具体语义和功能。实际上,JMX代理甚至不需要知道它所管理的是何种资源,这是因为任何资源只要满足JMX规范进行装配,都可以使用JMX代理。同样的,JMX代理不需要知道它所访问资源的具体功能。
1.3.3. 远程管理
JMX装配过的设备可以使用多种方法进行访问,例如使用SNMP管理协议,或者更通用的协议。MBean server依赖协议适配器和连接器来保证JMX代理对管理程序的可见性。
每个适配器都通过特定的协议提供一系列的视图来展示注册到MBean server上的MBean。例如,HTML适配器可以在浏览器中展示MBean。
连接器提供管理侧的接口处理在管理程序和JMX代理之间的通信。每个连接器通过不同的协议提供相同的远程管理接口。当一个远程管理程序使用这个接口,它可以通过网络透明的连接到JMX代理,而不论协议是什么。JMX技术基于Java RMI(Java远程方法调用)提供标准的解决方案来暴露JMX转配设备到远程管理应用程序。
1.4. Java虚拟机的监控和管理
JMX技术可以应用于监控和管理Java虚拟机。
Java虚拟机有内置的设备允许你使用JMX技术对其进行监控和管理。这些内置的管理工具经常与“开箱即用”Java虚拟机管理工具联系在一起。为了监控和管理Java虚拟机的不同方面,Java虚拟机为实现JMX规范的管理应用提供了MBean server平台和特殊的MXBeans。
1.4.1. MBean server平台和MXBean平台
MXBean平台是一系列的MXBeans-Java基础版本提供的,用于监控和管理Java虚拟机和Java运行环境(JRE)中的各种组件。每种平台的MXBeans都封装一部分Java虚拟机功能,例如类加载系统,即时编译JIT,垃圾收集器GC等等。这些MXBeans可以使用实现JMX规范的监控和管理工具来展示和交互,以便你能够加农和管理不同的虚拟机功能。JConsole图形化接口就是Java基础版本提供的一种监控和管理工具。
1.4.2. JConsole
Java基础版本提供JConsole监视和管理工具-它遵从JMX规范。JConsole使用MXBeans平台来提供运行于Java平台上应用的性能和应用资源消耗情况。
1.4.3. “开箱即用”的管理
由于Java基础版本内置提供基于JMX技术的标准监控和管理工具,你可以“开箱即用”般的,不用写一行JMX API代码就能使用它。你可以启动一个Java应用,然后使用JConsole监控它。
1.4.4. 使用JCon搜了监控应用
这部分展示如何监控Java记事本程序。低于Java基础版本6的环境下,被JConsole监控的应用启动时需要添加如下启动项:
-Dcom.sun.management.jmxremote
A)启动Java记事本程序,可以在终端窗口中使用如下的命令行:然而,Java基础版本6及其以上版本的环境下,JConsole可以使用Attach API链接任何本地Java应用进程。换句话说,任何使用Java SE 6 HotSpot虚拟机启动的应用程序都会自动被JConsole监控,而不需要实用上述的启动项。
java -jar
jdk_home/demo/jfc/Notepad/Notepad.jar
jdk_home是JDK的安装目录。如果你是在低于Java基础版本6的环境中,你需要使用如下的启动命令:
java -Dcom.sun.management.jmxremote -jar
jdk_home/demo/jfc/Notepad/Notepad.jar
B)一旦启动成功,在另一个终端窗口,使用如下命令启动JConsole:
jconsole
接下来会出现一个新的连接对话框。
C)在链接对话框中,在本地处理列表中,选择Notepad.jar并点击连接按钮。JConsole打开并连接到Notepad.jar进程。当JConsole打开后,你便可以看到与Notepad程序相关的监控和管理视图。例如,你可以查看应用消耗的堆内存,应用当前运行使用的线程数目,应用消耗的CPU数量等。
D)点击不同的JConsole标签。每一个标签会展现Notepad程序在Java虚拟机中不同方面的功能。所有的展现的信息都是由本系列提到的,基于JMX技术的MXBeans提供。所有MXBeans都可以在MBean标签页展示,MBean标签将在下一章讨论。
选择连接-退出,退出JConsole。
Java管理扩展指南之JMX技术总览的更多相关文章
- 01_Weblogic课程之概念篇:代理服务器,web服务器,应用程序服务器,JNDI概念,JTA概念,Java消息服务,Java验证和授权(JAAS),Java管理扩展,Web客户机,客户机应用程序
1 什么是服务器 Weblogic中服务器分为两种,一种是受管服务器,另外一种是管理服务器. Weblogic课程(Weblogic是Oracle公司的,最开始的是BEA公司的) 一 系统管理 ...
- DynamicMBean(Java SE 6 新特性: JMX 与系统管理)
Dynamic MBean 是一种在运行时定义其管理接口的 MBean.例如,配置 MBean 可以通过解析 XML 文件来确定它所公开的属性名称和类型. 任何实现 DynamicMBean 接口的类 ...
- JConsole、VisualVM 依赖的 JMX 技术到底是什么
我是风筝,公众号「古时的风筝」,一个兼具深度与广度的程序员鼓励师,一个本打算写诗却写起了代码的田园码农! 文章会收录在 JavaNewBee 中,更有 Java 后端知识图谱,从小白到大牛要走的路都在 ...
- Java工程师学习指南第2部分:JavaWeb技术世界
本文整理了微信公众号[Java技术江湖]发表和转载过的Java Web优质文章,想看到更多Java技术文章,就赶紧关注吧. IDEA中的Maven实战 老师,免费版的IDEA为啥不能使用Tomcat? ...
- Java工程师学习指南 完结篇
Java工程师学习指南 完结篇 先声明一点,文章里面不会详细到每一步怎么操作,只会提供大致的思路和方向,给大家以启发,如果真的要一步一步指导操作的话,那至少需要一本书的厚度啦. 因为笔者还只是一名在校 ...
- Java工程师学习指南(完结篇)
Java工程师学习指南 完结篇 先声明一点,文章里面不会详细到每一步怎么操作,只会提供大致的思路和方向,给大家以启发,如果真的要一步一步指导操作的话,那至少需要一本书的厚度啦. 因为笔者还只是一名在校 ...
- Java工程师学习指南 初级篇
Java工程师学习指南 初级篇 最近有很多小伙伴来问我,Java小白如何入门,如何安排学习路线,每一步应该怎么走比较好.原本我以为之前的几篇文章已经可以解决大家的问题了,其实不然,因为我之前写的文章都 ...
- 要做Java程序员 需要知道那些技术 重点有那些
一.Java程序员 高级特性 反射.泛型.注释符.自动装箱和拆箱.枚举类.可变 参数.可变返回类型.增强循环.静态导入 ...
- java基础知识——Java的定义,特点和技术平台
(作者声明:对于Java编程语言,很多人只知道怎么用,却对其了解甚少.我也是其中一员.所以菜鸟的我,去查询了教科书以及大神的总结,主要参考了<Java核心技术>这本神作.现在分享给大家!) ...
随机推荐
- python小数据池,代码块的最详细、深入剖析
代码块: Python程序是由代码块构造的.块是 一个python程序的文本,他是作为一个单元执行的. 代码块:一个模块,一个函数,一个类,一个文件等都是一个代码块. 而作为交互方式输入的每个命令都是 ...
- uchome client.php
uchome 主要使用了php的call_user_func()函数,在uc_clinet/client.php中,一般指向uc_api_mysql,而 uc_api_mysql()函数 则负责分发到 ...
- 详解C++中命名空间的意义和用法
看过鸡啄米的C++编程入门系列教程的朋友,应该能注意到,在其中的很多实例中,都有这么一条语句:using namespace std;,即使用命名空间std,其作用就是规定该文件中使用的标准库函数都是 ...
- HDU1520:Anniversary party(树形dp第一发)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1520 一个公司去参加宴会,要求去的人不能有直接领导关系,给出每一个人的欢乐值,和L K代表K是L的直接领导 ...
- postgresql 建模文件 LDM 转成PDM 生成 SQL问题
LDM 转成 PDM (Tool --- GPDM ) 生成 SQL,查看全部SQL 详细步骤见下图. 1.postgresql 没有 VARCHAR2 只有 VARCHAR. 2.LDM 生成 PD ...
- javaScript动画3 事件对象event onmousemove
事件对象的获取(event的获取) var event = event || window.event;(主要用这种) screenX.pageX和clientX的区别 PageY/pageX: 鼠标 ...
- ReentrantLock的底层实现机制 AQS
ReentrantLock的底层实现机制是AQS(Abstract Queued Synchronizer 抽象队列同步器).AQS没有锁之类的概念,它有个state变量,是个int类型,为了好理解, ...
- 小练手:用HTML5 Canvas绘制谢尔宾斯基三角形
文章首发于我的知乎专栏,原地址:https://zhuanlan.zhihu.com/p/26606208 以前看到过一个问题:谢尔宾斯基三角形能用编程写出来么?该怎么写? - 知乎,在回答里,各方大 ...
- 高可用Mysql架构_Mycat集群部署(HAProxy + 两台Mycat+Mysql双主双从)
既然大家都知道了Mysql分布式在大型网站架构中的作用,在这里就不再阐述.本片博客文章是基于我曾经搭建过的一个Mysql集群基础上实现的,实现过双主热备.读写分离.分库分表. 博客链接:http:// ...
- 用hexo在github上搭建自己的静态博客
在自己的小站上发过一次,这边就不再多发一次了,直接给链接好了: http://nerohwang.github.io/2014/02/11/simple-test/