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

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

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

相关文章

登录网页后要弹出一个新标签_连永久链接都不会,还做什么新媒体?

上次给主编大大发的预览链接失效了,被骂得狗血淋头。大部分运营人可能都遇到过这种情况,忽视了预览生成的链接只是临时的,在12小时后或超过500阅读量后就会失效。一个疏忽,给自己带来了不必要的麻烦,耽误工作&#xff…

混频通信的matlab仿真,基于MATLAB的扩频通信系统仿真研究—上海交通大学

基于MATLAB 的扩频通信系统仿真研究范伟 翟传润 战兴群(上海交通大学电子信息与电气工程学院,200030,上海)摘要 本文阐述了扩展频谱通信技术的理论基础和实现方法,利用MATLAB 提供的可视化工具Simulink 建立了扩频通信系统仿真模型&#xff0…

static_cast与dynamic_cast转换

static_cast与dynamic_cast转换   一 C语言中存在着两种类型转换: 隐式转换和显式转换 隐式转换:不同数据类型之间赋值和运算,函数调用传递参数……编译器完成 char ch;int i ch; 显示转换:在类型前增加 :&#xff…

vue使用iview Timeline 时间轴不显示问题

vue Timeline 时间轴不显示渲染的效果 官网代码 <Timeline pending><TimelineItem>发布1.0版本</TimelineItem><TimelineItem>发布2.0版本</TimelineItem><TimelineItem>发布3.0版本</TimelineItem><TimelineItem><a href…

python 重置索引_python pandas 对series和dataframe的重置索引reindex方法

reindex更多的不是修改pandas对象的索引&#xff0c;而只是修改索引的顺序&#xff0c;如果修改的索引不存在就会使用默认的None代替此行。且不会修改原数组&#xff0c;要修改需要使用赋值语句。series.reindex()import pandas as pdimport numpy as npobj pd.Series(range(4…

Java EE 6 Web配置文件。 在云上。 简单。

Java SE还可以。 Java EE是邪恶的。 这就是我一直想的。 好吧&#xff0c;现在不再了。 让我分享我的经验。 几周前&#xff0c;我开始考虑将旧版spring hibernate tomcat应用程序移植到新平台上&#xff1a; SAP NetWeaver云 。 我知道您在极客那里的想法&#xff1a;…

Kubernetes核心概念总结

1、基础架构 1.1 Master Master节点上面主要由四个模块组成&#xff1a;APIServer、scheduler、controller manager、etcd。 APIServer。APIServer负责对外提供RESTful的Kubernetes API服务&#xff0c;它是系统管理指令的统一入口&#xff0c;任何对资源进行增删改查的操作都要…

七、spring boot 1.5.4 集成shiro+cas,实现单点登录和权限控制

1.安装cas-server-3.5.2 官网&#xff1a;https://github.com/apereo/cas/releases/tag/v3.5.2 下载地址&#xff1a;cas-server-3.5.2-release.zip 安装参考文章&#xff1a;http://blog.csdn.net/xuxuchuan/article/details/54924933 注意&#xff1a; 输入 <tomcat_key&g…

php连接mysql数据,php连接mysql数据库

$sql_link mysql_connect("主机名","登入用户名","登入用户名密码");如果连接成功&#xff0c;就会返回一个mysql句柄,可以简单的理解成这个$sql_link 是php跟mysql的一个桥梁&#xff0c;通过该桥梁我们可以进入到mysql。进入到mysql之后&…

CSS-自定义变量

使用背景&#xff1a; 一些常见的例子&#xff1a;为风格统一而使用颜色变量一致的组件属性&#xff08;布局&#xff0c;定位等&#xff09;避免代码冗余*更方便的从CSS向JS传递数据&#xff08;例如媒体断点&#xff09; 为什么使用&#xff1a; 以下几点是未来CSS属性的简短…

url存在宽字节跨站漏洞_利用WebSocket跨站劫持(CSWH)漏洞接管帐户

在一次漏洞悬赏活动中&#xff0c;我发现了一个使用WebSocket连接的应用&#xff0c;所以我检查了WebSocket URL&#xff0c;发现它很容易受到CSWH的攻击(WebSocket跨站劫持)有关CSWH的更多详细信息&#xff0c;可以访问以下链接了解https://www.christian-schneider.net/Cross…

php 数组对比 unset,如何区分PHP中unset,array_splice的区别

1.使用的函数a.函数unset()unset ( mixed $var , mixed $... ? ) : voidunset()销毁指定的变量。b.函数array_slice()array_splice(array,start,length,array)array表示数组。start表示删除元素的开始位置。length表示被移除的元素个数&#xff0c;也是被返回数组的长度。(可…

MapReduce算法–二级排序

我们将继续进行有关实现MapReduce算法的系列文章&#xff0c;该系列可在使用MapReduce进行数据密集型文本处理中找到。 本系列的其他文章&#xff1a; 使用MapReduce进行数据密集型文本处理 使用MapReduce进行数据密集型文本处理-本地聚合第二部分 使用Hadoop计算共现矩阵 …

Redis 字符串(String)

Redis 字符串(String) Redis 字符串数据类型的相关命令用于管理 redis 字符串值&#xff0c;基本语法如下&#xff1a; 语法 redis 127.0.0.1:6379> COMMAND KEY_NAME 实例 redis 127.0.0.1:6379> SET runoobkey redis OK redis 127.0.0.1:6379> GET runoobkey "…

前端基础-CSS的各种选择器的特点以及CSS的三大特性

一、 基本选择器二、 后代选择器、子元素选择器三、 兄弟选择器四、 交集选择器与并集选择器五、 序列选择器六、 属性选择器七、 伪类选择器八、 伪元素选择器九、 CSS三大特性 一、 基本选择器 1、id选择器 #1、作用&#xff1a;根据指定的id名称&#xff0c;在当前界面中找…

Php流式 大文件,如何使用PHP解析XML大文件

如果使用 PHP 解析 XML 的话&#xff0c;那么常见的选择有如下几种&#xff1a;DOM、SimpleXML、XMLReader。如果要解析 XML 大文件的话&#xff0c;那么首先要排除的是 DOM&#xff0c;因为使用 DOM 的话&#xff0c;需要把整个文件全部加载才能解析&#xff0c;效率堪忧&…

python 白盒测试_白盒测试教程 - 颜丽的个人空间 - OSCHINA - 中文开源技术交流社区...

总共贴了39节&#xff0c;后续还有很长&#xff0c;共122节&#xff0c;文章名为‘白盒测试教程’1、白盒测试概念2、测试覆盖标准3、逻辑驱动测试4、基本路径测试白盒测试概念1、白盒测试也称结构测试或逻辑驱动测试&#xff0c;是一种测试用例设计方法&#xff0c;它从程序的…

Oracle 分析函数及常用函数

什么叫分析函数(Analytic function)&#xff1f; Oracle从8.1.6开始提供分析函数&#xff0c;分析函数用于计算基于组的某种聚合值&#xff0c;它和聚合函数的不同之处是 对于每个组返回多行&#xff0c;而聚合函数对于每个组只返回一行。 基本语法 function_name(arg1,arg2,..…

ScanTailor-ScanTailor 强大的多方位的满足处理扫描图片的需求

ScanTailor 强大的多方位的满足处理扫描图片的需求ScanTailor 能做什么&#xff1f;批量或单张或选择区间旋转图片自动切割页面&#xff0c;同时提供手动选项自动识别图像歪斜角度&#xff0c;同时提供手动选项自动识别正文内容裁剪&#xff0c;同时提供手动选项设置正文上下左…

使用JavaCV进行手和手指检测

这篇文章是Andrew Davison博士发布的有关自然用户界面&#xff08;NUI&#xff09;系列的一部分&#xff0c;内容涉及使用JavaCV从网络摄像头视频提要中检测手。 注意&#xff1a;可以从http://fivedots.coe.psu.ac.th/~ad/jg/nui055/下载本章的所有源代码。 第5章的彩色斑点检…