Java SE 6 新特性:JMX与系统管理

开发 后端
在Java程序的运行过程中,对JVM和系统管理的监测一直是Java开发人员在开发过程所需要的,以下讲述Java SE 6新特性: JMX 与系统管理。

前言

在Java 程序的运行过程中,对JVM 和系统的监测一直是 Java 开发人员在开发过程所需要的。一直以来,Java 开发人员必须通过一些底层的 JVM API,比如 JVMPI 和 JVMTI 等,才能监测 Java 程序运行过程中的 JVM 和系统的一系列情况,这种方式一直以来被人所诟病,因为这需要大量的 C 程序和 JNI 调用,开发效率十分低下。于是出现了各种不同的专门做资源管理的程序包。为了解决这个问题,Sun 公司也在其 Java SE 5 版本中,正式提出了 Java 管理扩展(Java Management Extensions,JMX)用来管理检测 Java 程序(同时 JMX 也在 J2EE 1.4 中被发布)。Java SE 6 新特性中我们看到了JMX与系统管理方面的改进。

在Java SE 6 新特性中,JMX 的提出,让 JDK 中开发自检测程序成为可能,也提供了大量轻量级的检测 JVM 和运行中对象/线程的方式,从而提高了 Java 语言自己的管理监测能力。

JMX 和系统管理

管理系统(Management System)

要了解Java SE 6 新特性中的JMX,我们就必须对当前的 IT 管理系统有一个初步的了解。随着企业 IT 规模的不断增长,IT 资源(IT resource)数量不断增加,IT 资源的分布也越来越分散。可以想象,甚至对于一家只有几百台 PC 公司的 IT 管理人员来说,分发一个安全补丁并且保证其在每台 PC 上的安装,如果只依赖人工来完成那简直就是一场噩梦。这样,IT 管理系统就应运而生。

然而,CPU、网卡、存储阵列是 IT 资源;OS、MS Office、Oracle database、IBM Websphere 也是 IT 资源。IT 管理系统若要对这些 IT 资源进行管理,就必须对这些管理对象有所了解:形形色色的 IT 资源就像是说着不同语言的人:Oralce 数据库表达内存紧张的方式和 Window XP 是绝然不同的, 而 IT 管理系统就像建造通天塔的经理,必须精通所有的语言, 这几乎是一个不可能完成的任务。难道 IT 管理系统是另外一个通天塔吗?当然不是!其实我们只要给每个 IT 资源配个翻译就可以了。

管理系统的构架

图 1. 管理系统构架

管理系统构架

上图分析了管理系统的基本构架模式。其中 Agent / SubAgent 起到的就是翻译的作用:把 IT 资源报告的消息以管理系统能理解的方式传送出去。

也许读者有会问,为什么需要 Agent 和 SubAgent 两层体系呢?这里有两个现实的原因:

管理系统一般是一个中央控制的控制软件,而 SubAgent 直接监控一些资源,往往和这些资源分布在同一物理位置。当这些 SubAgent 把状态信息传输到管理系统或者传达管理系统的控制指令的时候,需要提供一些网络传输的功能。
管理系统的消息是有一定规范的,消息的翻译本身是件复杂而枯燥的事情。

一般来说,管理系统会将同一物理分布或者功能类似的 SubAgent 分组成一组,由一个共用的 Agent 加以管理。在这个 Agent 里封装了 1 和 2 的功能。

JMX 和管理系统

JMX 既是Java 管理系统的一个标准,一个规范,也是一个接口,一个框架。图 2 展示了 JMX 的基本架构。

图 2. JMX 构架

JMX 构架

和其它的资源系统一样,JMX 是管理系统和资源之间的一个接口,它定义了管理系统和资源之间交互的标准。>javax.management.MBeanServer 实现了 Agent 的功能,以标准的方式给出了管理系统访问 JMX 框架的接口。而 >javax.management.MBeans 实现了 SubAgent 的功能,以标准的方式给出了 JMX 框架访问资源的接口。而从类库的层次上看,JMX 包括了核心类库 >java.lang.management 和 >javax.management 包。>java.lang.management 包提供了基本的 VM 监控功能,而 >javax.management 包则向用户提供了扩展功能。

【编辑推荐】

  1. 用于验证的Java小程序一则
  2. 下一代Java Applet插件技术第二部分
  3. Java初学者入门应该掌握的30个概念
  4. 对Java编程思想的忠告
  5. 著名的Java论坛和网站
责任编辑:王观 来源: 论坛整理
相关推荐

2009-06-16 11:23:00

InstrumentaJava SE 6新特

2009-06-16 11:24:00

HTTP增强Java SE 6新特

2010-05-05 15:56:37

Unix系统

2010-05-05 16:27:22

Unix系统

2011-09-01 13:42:15

优化布线系统管理布线系统

2010-05-04 15:22:25

Unix系统

2010-08-11 17:11:15

2013-05-02 14:06:30

Android开发用户系统管理

2013-05-09 09:27:46

2017-03-27 09:30:14

Linux系统管理技巧

2012-02-29 00:57:41

Linux系统

2009-07-11 16:04:04

布线系统管理优化

2010-01-14 17:05:42

MySQL CentO

2011-11-17 16:06:45

IT系统管理

2012-07-31 14:57:14

NetGain EM

2010-04-12 09:33:58

系统管理员

2011-09-29 10:39:29

2015-04-22 13:25:43

2013-09-18 10:57:09

虚拟化应用

2012-08-15 10:08:46

Office系统管理员
点赞
收藏

51CTO技术栈公众号