Java-JMX (官方文档解读)

JMX 简介

        JMX(Java Management Extensions)是Java平台的一个标准管理框架,自Java 1.5版本起成为Java 平台标准版 (Java SE 平台) 的标准组成部分。JMX 技术提供了一种简单、标准的方法来管理资源(例如应用程序、设备和服务)。由于 JMX 技术是动态的,因此您可以在创建、安装和实施资源时使用它来监视和管理资源。您还可以使用 JMX 技术来监视和管理 Java 虚拟机 (Java VM)。JMX 规范定义了 Java 编程语言中用于应用程序和网络管理和监控的架构、设计模式、API 和服务。

        使用 JMX 技术,给定资源由一个或多个 Java 对象(称为托管 BeanMBean)进行检测。这些 MBean 在核心管理对象服务器(称为MBean 服务器)中注册。MBean 服务器充当管理代理,可以在大多数已启用 Java 编程语言的设备上运行。规范定义了 JMX 代理,您可以使用它来管理已正确配置的任何资源。JMX 代理由一个 MBean 服务器(其中注册了 MBean)和一组用于处理 MBean 的服务组成。这样,JMX 代理就可以直接控制资源并使其可供远程管理应用程序使用。

为什么要使用 JMX 技术?

        JMX 技术为开发人员提供了一种灵活的方法来处理基于 Java 技术的应用程序(Java 应用程序)、创建智能代理、实现分布式管理中间件和管理器,并将这些解决方案顺利地集成到现有的管理和监控系统中。

  • JMX 技术降低了Java 应用程序的管理成本:基于 JMX 技术的代理(JMX 代理)可以在大多数支持 Java 技术的设备上运行。因此,Java 应用程序可以变得易于管理,而对其设计几乎没有影响。Java 应用程序只需嵌入托管对象服务器,并将其部分功能作为在对象服务器中注册的一个或多个托管 bean(MBean)提供即可。这就是从管理基础架构中获益所需的全部内容。
  • JMX技术提供了一种管理Java应用程序、系统和网络的标准方法:例如,Java Platform, Enterprise Edition (Java EE) 5应用服务器符合JMX架构,因此可以使用JMX技术进行管理。
  • JMX 技术可用于对 Java VM 进行开箱即用的管理:Java虚拟机 (Java VM) 使用 JMX 技术进行高度仪表化。您可以启动 JMX 代理来访问内置的 Java VM 仪表化,从而远程监控和管理 Java VM。
  • JMX 技术提供了一种可扩展的动态管理架构:每个 JMX 代理服务都是一个独立的模块,可以根据需求插入到管理代理中。这种基于组件的方法意味着 JMX 解决方案可以从小型设备扩展到大型电信交换机甚至更远。JMX 规范提供了一组核心代理服务。可以在管理基础架构中开发和动态加载、卸载或更新其他服务。
  • JMX 技术利用了现有的标准 Java 技术:在需要时,JMX 规范会引用现有的 Java 规范,例如 Java 命名和目录接口 (JNDI) API。
  • 基于 JMX 技术的应用程序(JMX 应用程序)可以通过 NetBeans IDE 模块创建:您可以从 NetBeans 更新中心(在 NetBeans 界面中选择“工具”->“更新中心”)获取一个模块,该模块允许您使用 NetBeans IDE 创建 JMX 应用程序。这降低了开发 JMX 应用程序的成本。
  • JMX 技术与现有管理解决方案和新兴技术相集成:JMXAPI 是任何管理系统供应商都可以实现的开放接口。JMX 解决方案可以使用查找和发现服务和协议,例如 Jini 网络技术和服务定位协议 (SLP)。

JMX的使用

  1. 创建MBeanServer:MBeanServer相当于管理MBean的容器。创建MBeanServer有两种方式:一是获取JVM中默认启动的MBeanServer,二是自己创建。
  2. 创建ObjectName:用于标识唯一的资源MBean,格式为:“域名:name=MBean名称”。
  3. 绑定MBean与对应的ObjectName并注册到MBeanServer:至此即可通过JConsole管理本地的MBean的相关信息。同时,也可以提供其他的连接方式,如rmi连接方式。
  4. 注册监听端口号。
  5. 创建JMXServiceURL:格式为:service:jmx:rmi://localhost:0/jndi/rmi://localhost:1099/jmxrmi(完整版)JMXServiceURL格式说明。
  6. 通过JMX来管理和监控Java应用程序。例如,可以使用JConsole通过JMX查看Java程序的运行信息。这些信息包括内存情况、线程情况、类加载情况等。

JMX 架构

JMX 技术架构

        JMX 技术架构分为三部分:Instrumentation,Agent,Remote Management。

Instrumentation

        要使用 JMX 技术管理资源,您必须首先使用 Java 编程语言对资源进行检测。您可以使用称为MBean的 Java 对象来实现对资源检测的访问。MBean 必须遵循 JMX 规范中定义的设计模式和接口。这样做可确保所有 MBean 都以标准化方式提供托管资源检测。除了标准 MBean 之外,JMX 规范还定义了一种称为MXBean的特殊类型的MBean。MXBean 是一种仅引用一组预定义数据类型的 MBean。还存在其他类型的 MBean,但本文将集中讨论标准 MBean 和 MXBean。

        一旦资源被 MBean 检测,就可以通过 JMX 代理对其进行管理。MBean 不需要了解它们将与之一起运行的 JMX 代理。

        MBean 的设计目标是灵活、简单且易于实现。应用程序、系统和网络的开发人员可以以标准方式管理其产品,而无需了解或投资复杂的管理系统。只需付出最少的努力即可管理现有资源。

        此外,JMX 规范的检测层还提供了一种通知机制。该机制使 MBean 能够生成通知事件并将其传播到其他层的组件。

Agent

        基于 JMX 技术的代理(JMX 代理)是一种标准管理代理,它直接控制资源并使其可供远程管理应用程序使用。JMX 代理通常与其控制的资源位于同一台机器上,但这种安排不是必需的。

        JMX 代理的核心组件是MBean 服务器,即注册 MBean 的托管对象服务器。JMX 代理还包括一组用于管理 MBean 的服务,以及至少一个允许管理应用程序访问的通信适配器或连接器。

        当您实现 JMX 代理时,您不需要知道它将管理的资源的语义或功能。事实上,JMX 代理甚至不需要知道它将为哪些资源提供服务,因为任何符合 JMX 规范的资源都可以使用任何提供该资源所需服务的 JMX 代理。同样,JMX 代理不需要知道将访问它的管理应用程序的功能。

Remote Management

        JMX 技术工具可通过多种不同方式访问,既可以通过现有管理协议(如简单网络管理协议 (SNMP))也可以通过专有协议。MBean 服务器依靠协议适配器和连接器使 JMX 代理可从代理的 Java 虚拟机 (Java VM) 之外的管理应用程序访问。

        每个适配器通过特定协议提供在 MBean 服务器中注册的所有 MBean 的视图。例如,HTML 适配器可以在浏览器中显示 MBean。

        连接器提供管理器端接口,用于处理管理器与 JMX 代理之间的通信。每个连接器通过不同的协议提供相同的远程管理接口。当远程管理应用程序使用此接口时,它可以通过网络透明地连接到 JMX 代理,而不管使用哪种协议。JMX 技术提供了一种基于 Java 远程方法调用 (Java RMI) 将 JMX 技术检测导出到远程应用程序的标准解决方案。

JMX 分层架构

        JMX 分层架构可以分为设备层,代理层、分布服务层。

  • 设备层:主要定义了信息模型。在JMX中,各种管理对象以管理构件的形式存在,需要管理时,向MBean服务器进行注册。该层还定义了通知机制以及一些辅助元数据类。
  • 代理层:主要定义了各种服务以及通信模型。该层的核心是一个MBean服务器,所有的管理构件都需要向它注册,才能被管理。
  • 分布服务层:主要定义了能对代理层进行操作的管理接口和构件,这样管理者就可以操作代理。

 JMX 组件架构即详解

        关于JMX 组件结构请参看我的另一篇文章:

        JMX 组件架构即详解-CSDN博客

Java 虚拟机的监控和管理

        JMX技术还可以用于监控和管理Java虚拟机(Java VM)。Java VM 具有内置工具,可让您使用 JMX 技术对其进行监视和管理。这些内置管理实用程序通常被称为Java VM 的现成管理工具。为了监视和管理 Java VM 的不同方面,Java VM 包含一个平台 MBean 服务器和特殊的 MXBean,供符合 JMX 规范的管理应用程序使用。

 JConsole

        Java SE 平台包含符合 JMX 规范的 JConsole 监控和管理工具。JConsole 使用 Java VM(平台 MXBeans)的广泛工具来提供有关在 Java 平台上运行的应用程序的性能和资源消耗的信息。

        由于 Java SE 平台内置了实现 JMX 技术的标准监控和管理实用程序,因此您无需编写任何 JMX API 代码即可看到现成的 JMX 技术的实际应用。只需启动 Java 应用程序,然后使用 JConsole 对其进行监控即可。

使用 JConsole 监控应用程序

        此过程显示如何监视 Notepad Java 应用程序。在 Java SE 平台版本 6 之前的版本中,要使用 JConsole 监视的应用程序需要使用以下选项启动。

-Dcom.sun.management.jmxremote

        但是,Java SE 6 平台提供的 JConsole 版本可以附加到任何支持 Attach API 的本地应用程序。换句话说,在 Java SE 6 HotSpot VM 中启动的任何应用程序都会被 JConsole 自动检测到,无需使用上述命令行选项启动。

  1. 在终端窗口中使用以下命令启动 Notepad Java 应用程序:
    java -jar jdk_home /demo/jfc/Notepad/Notepad.jar
    

    Java 开发工具包 (JDK) 的安装目录在哪里jdk_home。如果您没有运行 Java SE 平台版本 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 选项卡。

    每个选项卡都提供了有关运行 Notepad 的 Java VM 的不同功能领域的更详细信息。所有显示的信息均来自本教程中提到的各种 JMX 技术 MXBean。所有平台 MXBean 均可显示在 MBean 选项卡中。本教程的下一部分将介绍 MBean 选项卡。

  5. 要关闭 JConsole,请选择“连接”->“退出”。

参考文献

官方文档 : https://docs.oracle.com/javase/tutorial/jmx/overview/index.html

【JMX】JAVA监控的基石-CSDN博客
JMX使用详解-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/487182.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

商品期权开户条件是什么?

商品期权开户条件是什么? 商品期权是一种金融衍生品,它赋予期权持有者在特定日期(欧式期权)或在特定日期之前(美式期权),以特定价格(行权价格)买入或卖出一定数量的某种…

RISC-V IO 虚拟化架构在 X100 芯片上的实现

安全之安全(security)博客目录导读 本篇博客,我们聚焦RISC-V 2024中国峰会上RISC-V虚拟化相关专题中的IOMMU虚拟化在X100芯片上的实现,来自进迭时空郑律老师。 我们先来看下X100的RISC-V芯片和已有的关于处理器内核虚拟化和内存虚拟化相关的支持 关于IOMMU的特性支持,下图红…

Windows 系统没有网络链接常见原因以及解决方案

在使用 Windows 电脑时,有时会遇到电脑显示已连接网络,但却无法访问 Internet 的情况,这可能是由多种原因导致的。以下简鹿办公将详细介绍一些常见原因及对应的解决方案。 一、网络连接问题 原因 路由器故障:路由器长时间运行可…

【Rive】事件回调

1 前言 Android 中可以通过 RiveAnimationView 的 addEventListener 方法添加动画监听器,用于监听状态动画和过渡动画的开始和结束时机,实现动画开始和结束时的事件回调;也可以监听 Rive 事件触发的时机,在事件触发时响应回调。 …

Springboot3整合Redis

书接上篇《Redis 安装篇&#xff08;阿里云服务器&#xff09;_阿里云安装redis-CSDN博客》&#xff0c;安装好Redis后&#xff0c;就需要在springboot项目中使用Redis了。 一、SpringBoot整合Redis 1.添加坐标 <!--redis--> <dependency><groupId>org.sp…

REDMI瞄准游戏赛道,推出小屏平板

近日&#xff0c;REDMI推出了一款8.8英寸的小屏平板&#xff0c;引发市场关注。该平板采用LCD屏幕&#xff0c;搭载天玑9400处理器&#xff0c;定位游戏市场&#xff0c;意在开拓小屏平板的新领域‌。 ‌小屏平板新尝试‌ 这款REDMI平板未追随大屏潮流&#xff0c;而是选择了8…

在Ubuntu上使用docker compose安装N卡GPU的Ollama服务

在现代计算环境中,利用 GPU 进行计算加速变得越来越重要。下面将讲解如何在Ubuntu上使用docker compose安装N卡GPU的Ollama服务。 1、安装 NVIDIA 容器工具 首先,需要确保你的系统已经安装了 NVIDIA 容器工具 nvidia-container-toolkit。这是让 Docker 容器访问 GPU 的关键…

OllyDbg、CE简单介绍

基础知识&#xff1a; 想要破解软件&#xff0c;需要一些基础知识&#xff1a; 文件格式&#xff1a;Windows对应PE、Linux对应ELF、IOS对应Mash-0。文件格式是指操作系统规定的每个段&#xff08;代码段、数据段、堆、栈&#xff09;的大小、顺序等信息。 汇编语言&#xff1…

泷羽sec学习打卡-brupsuite4

声明 学习视频来自B站UP主 泷羽sec,如涉及侵权马上删除文章 笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都 与本人无关,切莫逾越法律红线,否则后果自负 关于brupsuite的那些事儿-proxy proxyInterceptHTTP history/WebSocket history&#xff08;历史记录&a…

Wallpaper壁纸制作学习记录10

图像准备 外部图像编辑器快速访问 Wallpaper Engine 允许您配置自己喜欢的外部图像编辑器&#xff0c;以用作补充图像编辑工具&#xff0c;您可以在整个编辑器中快速访问该工具。 您可以在Wallpaper Engine 编辑器中配置您选择的图像编辑器&#xff0c;通过顶部的文件菜单&am…

【C++算法】36.位运算_只出现一次的数字 II

文章目录 题目链接&#xff1a;题目描述&#xff1a;解法C 算法代码&#xff1a;解析 题目链接&#xff1a; 137. 只出现一次的数字 II 题目描述&#xff1a; 解法 你必须设计并实现线性时间复杂度的算法且使用常数级空间来解决此问题。说明时间复杂度O(n)&#xff0c;空间复杂…

transformer学习笔记-自注意力机制(1)

自注意力机制&#xff0c;可以说是transformer中最核心的部分之一&#xff0c;注意力机制&#xff0c;主要是在处理序列数据时&#xff0c;根据序列数据提供的上下文环境信息识别需要关注的特征数据&#xff0c;注意力机制通常用于不同序列之间的交互&#xff0c;表示不同序列环…

日志基础示例python和c++

文章目录 0. 引言1. python2. c 0. 引言 本文主要记录python版本和c版本常用的日志基础示例。 1. python python版本常用的是logging库&#xff0c;结合colorlog库&#xff0c;可根据不同日志级别打印不同颜色的日志&#xff0c;为了便于分析问题&#xff0c;还添加了日志保…

TimeXplusplus——提高时间序列数据的可解释性,避免琐解和分布偏移问题的深度学习可解释性的框架

摘要 论文地址&#xff1a;https://arxiv.org/abs/2405.09308 源码地址&#xff1a;https://github.com/zichuan-liu/timexplusplus 信号传输技术的优化对于推动光通信的发展至关重要。本文将详细探讨线路编码技术的目标及其实现方式。线路编码旨在提高带宽和功率效率&#xf…

python爬虫--某房源网站验证码破解

文章目录 使用模块爬取目标验证码技术细节实现成果代码实现使用模块 requests请求模块 lxml数据解析模块 ddddocr光学识别 爬取目标 网站验证码破解思路是统一的,本文以城市列表为例 目标获取城市名以及城市连接,之后获取城市房源信息技术直接替换地址即可 验证码 技术…

TimesFM模型论文内容

全文总结 这篇论文提出了一种基于解码器架构的时间序列预测基础模型TimesFM&#xff0c;旨在通过零样本学习在多种公共数据集上实现接近于监督学习模型的预测精度。 研究背景 研究问题&#xff1a;这篇文章要解决的问题是如何设计一个时间序列基础模型&#xff0c;使其在零样…

文生图模型开源之光!ComfyUI - AuraFlow本地部署教程

一、模型介绍 AuraFlow 是唯一一个真正开源的文生图模型&#xff0c;由Fal团队开源&#xff0c;其代码和权重都放在了 FOSS 许可证下。基于 6.8B 参数优化模型架构&#xff0c;采用最大更新参数化技术&#xff0c;还重新标注数据集提升指令遵循质量。在物体空间和色彩上有优势…

【高中生讲机器学习】28. 集成学习之 Bagging 随机森林!

创建时间&#xff1a;2024-12-09 首发时间&#xff1a;2024-12-09 最后编辑时间&#xff1a;2024-12-09 作者&#xff1a;Geeker_LStar 嘿嘿&#xff0c;你好呀&#xff01;我又来啦~~ 前面我们讲完了集成学习之 Boooooosting&#xff0c;这篇我们来看看集成学习的另一个分支…

双色Hanoi塔问题(hanoi)

双色Hanoi塔问题hanoi C语言实现C实现Java实现Python实现 &#x1f490;The Begin&#x1f490;点点关注&#xff0c;收藏不迷路&#x1f490; 设A、 B、 C是3 个塔座。开始时&#xff0c;在塔座A 上有一叠共n 个圆盘&#xff0c;这些圆盘自下而上&#xff0c;由大到小地叠在一…

微信小程序提交测试版,但是扫描体验版的二维码 显示 页面不存在

检查路径首页是否和我们微信小程序中的首页路径一致。 显然我的不一致。 {"pagePath": "pages/index/index","text": "产品","iconPath": "icons/Group 450.png","selectedIconPath": "/icons/组 …