Java管理扩展

什么是JMX?

Java管理扩展(JMX)是一种API,用于管理或监视各种资源,例如应用程序,设备,服务,当然还有JVM。 通过Java社区流程(JCP)开发,JMX技术被构建为Java Specification Request 3。

JMX技术提供了远程访问,因此可以从远程计算机上实现应用程序的管理。 JMX的用途非常广泛,包括以下内容:

  • 在应用程序配置中进行更改,或仅检查当前配置(在与远程计算机打交道时很有用)。
  • 提取和累积数据以用于资源使用情况的统计分析或应用程序行为监视
  • 有关状态更改或检测到的错误的通知

JVM资源由一系列Java对象(称为受管Bean或简称为MBean)来检测。 这些Bean已在托管对象服务器(MBean Server)中注册。 该服务器可以在支持Java编程语言的大多数设备上运行,并充当管理代理。 JMX代理是我们用来管理已检测资源的工具。 代理由MBean服务器(MBean注册的位置)和提供处理MBean手段的服务组成。 管理基础结构不会干扰资源的检测方式,反之亦然,因此无论资源管理应用程序的实现如何,都可以对资源进行相同的管理。

JMX技术是实现Java代理,检测Java代码,创建管理应用程序和管理中间件的标准且灵活的方式。 JMX连接器是允许程序员从远程应用程序访问JMX代理的链接。 不管它们使用的通信协议如何,JMX连接器都提供相同的管理接口。 因此,管理应用程序可以透明方式管理资源,而无需注意所使用的通信协议。

JMX架构

JMX技术由两个规范定义,即Java规范请求3和Java规范请求160,这两个规范都是通过Java社区流程开发的。 您可以将架构视为以下三个层次:

  • 工具:通过ManagedBeans对资源进行工具,ManagedBeans通过JMX代理公开其管理接口。
  • 代理:它的主要组件是MBean服务器。 代理提供了一组用于处理Mbean的服务,并且是直接控制资源并使资源可用于远程管理的组件。
  • 远程管理:可以通过协议适配器和标准连接器从JVM外部访问JMX代理。

通过JMX技术管理资源需要首先使用Java编程语言对资源进行检测。 这意味着需要使用Java MBean来实现对资源工具的访问。 JMX的标准化方式使开发人员可以轻松创建可管理的应用程序,而不必了解和理解复杂的管理系统。

尽管不是必需的,但JMX代理通常与托管应用程序位于同一台计算机上。 由于执行检测的方式,它不知道其管理的资源。 遵循JMX规范进行检测的任何资源都可以使用提供该资源所需服务的任何JMX代理。 JMX代理不应该知道管理应用程序正在访问它的方式。 这确保了组件之间的高度独立性。

有许多访问JMX API工具的方法。 可以通过现有协议(例如SNMP(简单网络管理协议))或专有协议来提供访问。 该连接通过MBeans Server所依赖的协议适配器和连接器进行路由,并使JMX代理可以从其JVM外部进行访问。 每个适配器都提供了在MBeans服务器中注册的所有MBean的视图。 所有连接器都提供用于远程管理的相同接口。

JMX技术是基于RMI(远程方法调用)导出JMX API的标准化方法,它还提供了基于TCP套接字的协议,即JMX消息传递协议(JMXMP)。 不幸的是,并非所有JMX Remote API的实现都支持第二个基于TCP套接字的协议,例如Java SE平台未包含该协议。

什么是MBean?

MBean是实现资源检测的Java对象。 他们必须遵守JMX规范,以便以标准方式提供工具。 资源可以由一个或多个动态的或标准的MBean来检测。 标准bean是除遵循JMX规范外,它们还遵循JavaBeans(TM)组件模型的对象,而动态bean则遵循特定的接口,以提供更大的运行时灵活性。

MBean的管理接口包含以下内容:

  • 可以读取和/或写入的命名和类型化属性
  • 可以调用的名称和类型化操作
  • Mbean可以发出的类型通知

标准Java MBean类通过其操作和属性公开托管资源。 属性通过getter和setter公开。 JMX代理使用自省功能来确定MBean提供的操作,从而非常容易且直接地管理新资源。 JVM本身是开箱即用的,可以轻松地以动态方式加载JMX代理,从而可以对JVM进行远程管理和监视。

MXBeans简介

如果满足以下要求之一,则接口为MXBean:

  • 它用@MXBean批注标记,以明确指定接口代表MXBean的事实
  • 它没有用@MXBean(false)批注标记以指定该接口不是MXBean
  • 它的名称以MXBean结尾

MXBean是一种概念,它提供了一种编程MBean的简便方法,该MBean仅引用javax.management.openmbean中定义的预定义类型集。 这样可以确保即使客户端无权访问MBean的模型特定类,任何客户端都可以使用MBean。 这些概念将作为与标准MBean的比较提供。

所有MXBean方法参数和返回值都必须使用Open Types进行描述,因为MXBean是Open MBean上的一种。 对于每个Java类型J,以下描述了MXBean映射:

  • 类型J的对应Open Type,opentype(J)
  • 映射的Java类型,opendata(J)
  • 值从J到opendata的转换方式(J)

仅当Java类型J是从J派生opentype(J)的映射时,Java类型J才可以是MXBean中的方法参数的类型或返回值。如果存在将opendata(J)转换回J的方法,则J是可重构的。为了使Mbean成为MXBean,所有方法参数都必须是可重构的,因为在方法调用时,MXBean框架会将参数从opendata(J)转换为J。

Java平台随附的MXBean如下:ClassLoadingMXBean,CompilationMXBean,MemoryMXBean,ThreadMXBean,OperatingSystemMXBean,GarbageCollectorMXBean,MemoryManagerMXBean,MemoryPoolMXBean。

动态MBean在运行时定义其管理接口。 例如,数据库MBean将确定从数据库读取数据后所公开的属性的类型和名称。 任何实现DynamicMBean的Java对象都是动态MBean。

Open MBean是一种动态MBean。 Open MBean由Java包javax.management.openmbean定义,从而简化了远程管理应用程序的操作,而无需管理应用程序知道应用程序特定的类型。 Open MBean的所有方法参数和返回值都是称为Open Types的小型Java类型子集的类型。

动态MBean的另一种类型是模型MBean。 这些MBean由Java包javax.management.modelmbean定义,充当托管资源和管理接口之间的桥梁。 管理接口和资源被指定为Java对象。 这些MBean可用于为不同的托管资源提供通用功能(可针对不同资源多次使用)。

参考:来自Java出现日历博客的JCG合作伙伴 Bogdan-Adrian Mihut的Java管理扩展

翻译自: https://www.javacodegeeks.com/2012/12/java-management-extensions.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值