没有合适的资源?快使用搜索试试~ 我知道了~
Java?平台的最新版本包含许多新的系统监视和管理特性。在本文中,三位来自IBMJava技术中心团队的开发人员一起带您开始使用这个API。在快速概述了java.lang.management包之后,他们将指导您经历大量短小的实践场景,探测运行的JVM性能。在Java2平台5.0版引入的众多新特性中,有一个API可以让Java应用程序和允许的工具监视和管理Java虚拟机(JVM)和虚拟机所在的本机操作系统。在本文中,将学习这个新的平台管理API的功能,这个API包含在java.lang.management包中。本文将让您迅速掌握在未来的Java平台版本中将变得更重要的一套新的强大特性。监视和管
资源推荐
资源详情
资源评论
使用使用Java平台管理平台管理bean
Java? 平台的最新版本包含许多新的系统监视和管理特性。在本文中,三位来自 IBM Java 技术中心团队的
开发人员一起带您开始使用这个 API。在快速概述了 java.lang.management 包之后,他们将指导您经历大
量短小的实践场景,探测运行的 JVM 性能。
在 Java 2 平台 5.0 版引入的众多新特性中,有一个 API 可以让 Java 应用程序和允许的工具监视和管理
Java 虚拟机(JVM)和虚拟机所在的本机操作系统。在本文中,将学习这个新的平台管理 API 的功能,这
个 API 包含在 java.lang.management 包中。本文将让您迅速掌握在未来的 Java 平台版本中将变得更重要
的一套新的强大特性。
监视和管理监视和管理 5.0 虚拟机虚拟机
Java 5.0 提供了监视和管理正在运行的虚拟机的新功能。开发人员和系统管理员能够监视 5.0 虚拟机的性
能,而且对于某些属性还可以进行调优。以前有过使用 Java Management Extensions(JMX)经验的人都
会熟悉执行这些活动的机制。通过 JMX 技术,一套需要控制的平台资源可以被当作简单的、定义良好的对
象,对象的属性映射到给定资源的更低级特征上。
在平台管理 API 中,这些定义良好的对象叫做 MXBean。如果觉得 MXBean 听起来更像某种可能更熟悉的
MBean,那么就对了。这些 MXBean(或 平台 MBean)在效果上,就是封装了 5.0 平台内部特定部分的管
理 bean。图 1 展示了 MXBean 在更大系统中的位置:
图 1. MXBean 提供了 Java 平台的管理接口
在运行着的 5.0 兼容的虚拟机中可以发现和定制许多不同种类的功能;例如,可以得到正在使用的即时编译
系统的行为细节或者获得垃圾收集服务的进展情况。
任何 Java 应用程序只要获得需要的 bean 引用(使用我们本文中介绍的技术),就能利用平台 bean,然后
调用适当的方法调用。在最简单的场景中,bean 客户机可以发现客户机所在的平台的信息。但是客户机还
能监视完全独立的 JVM 的行为。这是有可能的,因为 MXBean 是一种 MBean,可以用 Java 5.0 可用的标
准 JMX 服务远程地进行管理。
JConsole
bean 客户机的一个示例就是与 Java SE 5.0 SDK 一起提供的 JConsole 工具。这是一个图形界面,连接到
JVM 并显示 JVM 的信息。GUI 中的选项卡与 JVM 的特定方面相关;有 Memory、Threads 和 Classes 等选
项卡。JConsole 工具还提供了一个整体的 Summary 选项卡,一个VM 选项卡(提供虚拟机启动时的环境信
息)和一个 MBean 选项卡(用户可以用它更详细地监视平台 MBean 的状态)。
运行 JConsole
在命令提示符下输入 jconsole 就可以启动 JConsole(假设 SDK 的 bin 目录在当前路径中)。请输入运行要
监视的 JVM 的主机名,以及侦听管理请求的端口号 —— 以及其他需要的认证细节 —— 然后点击
Connect。用默认值 localhost 和端口 0 点击 Connect,监视的是用于运行 JConsole 自己的 JVM(因为
JConsole 是一个 Java 进程)。这称作自监视模式。图 2 展示了 JConsole 的启动情况:
图 2. JConsole 启动
JConsole 在工作
到 JVM 的连接建立之后,JConsole 先显示 Summary 选项卡,如图 3 所示:
图 3. JConsole 的 Summary 选项卡
从这开始,可以选择其他选项卡。例如 Memory 选项卡,如图 4 所示,展示了 JVM 中每个内存池的使用历
史:
图 4. JConsole 的 Memory 选项卡
请注意面板右上角的 Perform GC 按钮。这是使用平台 MBean 可以在 JVM 上执行的众多操作中的一个示
例。
工作方式工作方式
到此为止所阅读的基础内容是托管 bean 或 MBean 的概念。可以把 MBean 当成资源的管理接口 的可编程
表示。用更简单的术语来说,可以把它们当成围绕在受控实体周围的 Java 包装器。而用更实际的术语来
说,MBean 就是 Java 类,这些类的 public 方法是根据定义良好的规则集编写的;这些规则要求把受管理
的应用程序或资源的那些特征进行完整的封装。最终,资源(不论是什么以及在网络的什么位置上)的管理
者为了控制的目的定位并使用对应的 MBean。
通过 API,MBean 提供以下信息,如图 5 所示:
资源的当前状态,通过资源的属性 提供
管理代理能够在资源上执行的操作
能够发送到有兴趣的合作方的可能的事件通知
图 5. MBean 客户机利用属性、操作和事件
MBean 创建好之后,需要注册到 MBean 服务器上。除了充当 MBean 的注册表,MBean 服务器还提供了
让管理系统发现和利用已注册 MBean 的方式。管理已注册 MBean 的附加功能,由 JMX 代理服务 执行。这
类服务包括:监视 MBean 的属性值,把 MBean 的改变通知给有兴趣的合作方,周期性地把 MBean 的特定
信息通知给侦听器,维持 MBean 之间的关系。JMX 的代理服务通常是 MBean 本身。
MBean 服务器与必需的 JMX 代理服务的结合,被称作 JMX 代理,如图 6 所示:
图 6. JMX 代理
JMX 代理可以让它的托管资源 —— 也就是说,目前注册到它的 MBean 服务器上的 MBean 集 —— 对其他
远程代理可用。
在 Java 5.0 发行之前,javax.management API 是 Java 平台的可选扩展,用户可以通过独立的下载获得,
并通过 Java 代码把它用作管理和监视资源的手段。在这个上下文中,资源 可以是应用程序、运行业务关键
型应用程序的 J2EE 服务器、普通的旧式 Java 对象(POJO)、甚至于硬件实体(例如网络设备、机顶
盒、电信设备,或者类似的东西)。资源如果可以从 Java 代码中引用,那么它就可以潜在地成为托管资
源。
虽然在这里我们实际上只是涉及了 JMX 的表面,但对于认识 MXBean 来说,介绍的已经足够多了。关于
JMX 的设计和功能的全面讨论超出了本文的范围。要了解 JMX 在网络管理应用程序中负责的那部分功能的
精彩概述,可以阅读 Sing Li 关于这一主题的系列
什么是什么是 MXBean?如何使用它们??如何使用它们?
既然知道了什么是 MBean,现在可以看看在 java.lang.management 包中定义的与它们名称类似的
MXBean。好消息是:MXBean 并没有偏离我们在讨论 MBean 时介绍的概念。这个包中的大多数类型都是
符合命名规范的接口,命名规范与标准 MBean 使用的规范类似:平台资源的名称加上后缀 MXBean。(对
于标准的 MBean,当然使用后缀 MBean。)
表 1 描述了通过 java.lang.management 包中提供的 MXBean 接口可以使用的平台资源:
表 1. 可以通过 MBean 管理的平台资源
对于每个 MXBean,客户必须编程的接口都在 Java 5.0 规范中做了严格的设置。目前客户还无法定制这样
的接口,即它公开平台的任何更加可管理的属性。
在表 1 的第三列中指出的每个 MXBean 类型可能有的实例数量,严重依赖于被管理的具体的平台系统。例
如,虽然 JVM 规范允许实现者选择所使用的垃圾收集算法,但是完全有理由使用任意数量的垃圾收集器,
所以在任意时间内,就会有任意数量的 GarbageCollectionMXBean 实例在活动。请把这个与
OperatingSystemMXBean 对比,后者只有一个实例可用,因为管理的虚拟机显然在指定时间内只能运行在
一个操作系统上。
客户机代码可以安全地把一次性的 MXBean 当成虚拟机中真正的单体。任何时间,只要引用请求的是这些
一次性类型,得到的回答总是同一个实例,而不论引用请求从何而来或者在虚拟机生命周期中什么时候发
生。即使多个客户机都在监视一个虚拟机的时候,也符合这种情况。
对 Java 客户机代码来说,MXBean 实例的行为就像任何 POJO 一样。可以直接调用对象来取得信息,不需
要其他参与者。当然,这种情况需要 Java 客户机已经直接得到了对本地 bean (与管理应用程序运行在同
一个虚拟机上)的引用,或者对于封装远程虚拟机的 bean 已经请求了对它的代理。在两种情况下,引用都
是从平台的单体 ManagementFactory 获得的。
也可以通过 javax.management.MBeanServerConnection 访问平台 bean,但是在这种情况下,在会话中多
出了额外的一级间接。在 通过平台服务器监视远程虚拟机 一节中将看到,在这种场景中,客户机总是请求
MBeanServerConnection 代表自己来定位指定的远程 bean,并进行调用。这实际还是让 JMX(前面提到
过)发出对远程 MBean 的调用,而远程客户机必须与注册 MBean 的 MBean 服务器通信。
剩余20页未读,继续阅读
资源评论
weixin_38640473
- 粉丝: 8
- 资源: 949
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功