JMX:一些入门说明

JMX(Java管理扩展)是一种J2SE技术,可以管理和监视Java应用程序。 基本思想是实现一组管理对象,并将实现注册到平台服务器,在平台服务器上,可以使用一组连接器或适配器从本地或远程调用这些实现到JVM。
一个管理/仪器对象称为MBean(代表托管Bean)。 一旦实例化,一个MBean将在平台MBeanServer上注册一个唯一的ObjectName。 MBeanServer充当MBean的存储库,支持创建,注册,访问和删除MBean。 但是,MBeanServer不会保留MBean信息。 因此,随着JVM的重新启动,您将失去其中的所有MBean。 通常可以通过MBeanServerConnection API访问MBeanServer,该API在本地和远程均可使用。

MBean的管理接口通常由[1]组成

  • 可以读取/写入的命名和类型化属性
  • 可以调用的命名和类型操作
  • MBean可以发出的类型化通知
例如,说需要在运行时管理一个应用程序的线程池参数。 使用JMX,只需编写一个具有与设置和获取这些参数有关的逻辑的MBean,然后将其注册到MBeanServer。
现在的下一步是将这些mbean暴露给外界,以便远程客户端可以调用这些Mbean来管理您的应用程序。 可以通过通过协议连接器和协议适配器实现的各种协议来完成。 协议连接器基本上按原样公开MBean,以便远程客户端看到相同的接口(JMX RMI连接器就是一个很好的例子)。 因此,基本上应该为JMX技术启用客户端或远程管理应用程序。
协议适配器(例如:HTML,SNMP)根据客户端期望的协议调整结果(例如:对于基于浏览器的客户端,通过HTTP以HTML格式发送结果)。
现在,MBean已正确暴露在外部,我们需要一些客户端来访问这些MBean以管理我们的应用程序。 根据客户使用连接器还是适配器,基本上有两类可用。
JMX客户端使用JMX API连接到MBeanServer并调用MBean。 通常,JMX客户端使用MBeanServerConnection连接到MBeanServer,并通过提供MBean ID(对象名称)和必需的参数来通过MBean Server调用MBean。 基本上有三种类型的JMX客户端。
本地JMX客户端 :与MBeanServer在同一JVM中运行的客户端。 这些客户端也可以在内部运行,因此也可以使用MBeanServer API本身
相同的JVM。
代理 :代理是本地JMX客户端,它管理MBeanServer本身。 请记住,MBeanServer不会保留MBean信息。 因此,我们可以使用代理提供此逻辑,该逻辑将使用其他功能封装MBeanServer。 因此,代理负责初始化和管理MBeanServer本身。
远程JMX客户端 :远程客户端与本地客户端的不同之处仅在于,它需要实例化连接器以连接到连接器服务器,以获得MBeanServerConnection。 顾名思义,它们当然会在远程JVM中运行。
客户端的另一种类型是管理客户端,它使用协议适配器连接到MBeanServer。 为了使它们起作用,应存在相应的适配器并在要管理的JVM中运行它们。 例如,HTML适配器应存在于JVM中,以使基于浏览器的客户端连接到它以调用MBean。

下图总结了到目前为止描述的概念。

我在JMX上的快速笔记到此结束。 可以在[2]中找到关于JMX主要概念的非常好的阅读。 同样,Oracle上的JMX学习资源也是获得JMX的良好起点。
[1] http://docs.oracle.com/javase/6/docs/technotes/guides/jmx/overview/instrumentation.html#wp998816
[2] http://pub.admc.com/howtos/jmx/architecture-chapt.html

参考: JMX:来自Source Open博客的JCG合作伙伴 Buddhika Chamith的一些入门说明 。


翻译自: https://www.javacodegeeks.com/2012/06/jmx-some-introductory-notes.html

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

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

相关文章

解释java程序中的异常机制_Java编程中的异常机制

本文旨在以初学者的角度来学习Java异常的知识,尽量简单,一些细枝末节的知识不会讲述,但不影响对知识的掌握。(比如try-catch可以嵌套,不太会这么用)1.什么是异常我们先举个例子int x 10/0;在IDE里输入这样…

配置环境变量

由于写了一个关于生成签名需要配置环境变量,所以在这里顺便把配置环境变量的步骤说一下 1.右键点击计算机,然后点击高级系统设置 2.点击环境变量,下方出现的即为系统变量,双击path就能直接修改, 转载于:https://www.cn…

使用JavaFX AnimationTimer

回想一下,给AnimationTimer起个名字可能不是一个好主意,因为它不仅可以用于动画,还可以用于测量:fps速率,碰撞检测,模拟步骤,游戏主循环等实际上,大部分时间我都看到了AnimationTime…

JavaFX 2 GameTutorial第3部分

介绍 Ť他是与一个六个部分组成的系列的第3部分的JavaFX 2游戏教程。 如果您错过了第1部分和第2部分 ,建议您在开始本教程之前先进行阅读。 回顾第二部分,我讨论了游戏循环的内部工作原理,其中我们使用动画(JavaFX Timeline &…

Selenium WebDriver + python 自动化测试框架

目标 组内任何人都可以进行自动化测试用例的编写 完全分离测试用例和自动化测试代码,就像写手工测试用例一下,编写excel格式的测试用例,包括步骤、检查点,然后执行自动化工程,即可执行功能自动化测试用例,包…

mysql游戏减少积分活动图_plantuml-绘制状态图和活动图和部署图​

背景状态图:对象的所有状态,以及基于事件发生的状态改变的过程;活动图:用例的工作流程;部署图:系统的软硬件物理体系结构;状态图基本语法元素语法说明开始和结束状态[*]标识开始和结束状态箭头-…

windows中当你的键盘无法使用时我们可以用另一种方法哦

1.使用WinR打开cmd窗口 2.输入osk回车就出现了一个虚拟的小键盘啦,当你的键盘坏掉后非常实用哦 转载于:https://www.cnblogs.com/qianzf/p/6780496.html

NetBeans 7.2引入了TestNG

代码生成的优点之一是能够查看如何使用特定的语言功能或框架。 正如我在《 NetBeans 7.2 beta:更快,更有用》一文中所讨论的那样, NetBeans 7.2 beta提供了TestNG集成 。 除了对该功能的单一引用之外,我在该帖子中没有进一步阐述&…

Javascript模块化编程(三):require.js的用法

一、为什么要用require.js? 最早的时候,所有Javascript代码都写在一个文件里面,只要加载这一个文件就够了。后来,代码越来越多,一个文件不够了,必须分成多个文件,依次加载。下面的网页代码&…

几万条数据的excel导入到mysql_【记录】2万多条数据的Excel表格数据导入mysql数据库...

主题刚开始的时候做了两个小方案!第一个是直接Excel处理完导入,但是这个导入的话虽然简单出错率很大!第二个是想直接用php做个小程序直接导入数据,但是想了想2万条数据处理,百分之百浏览器会一直转,最后不知…

JDeveloper中的Java反编译器

Java Decompiler是一个独立的图形实用程序,显示“ .class”文件的Java源代码。 下面是Java Decompiler程序的快照 您可以从这里下载该程序 我将说明如何将此程序用作Jdeveloper中的外部工具 Java Decompiler和Jdeveloper之间的集成 您可以将此程序添加到Jdevelo…

具有Java Kickstart的MongoDB

NoSQL数据库由于其可伸缩性而变得越来越流行。 适当使用时 NoSQL数据库可以提供真正的好处。 MongoDB是使用C 编写的高度可扩展的开源NoSQL数据库。 1.安装MongoDB 您可以根据所使用的操作系统,按照MongoDB官方网站上的说明安装MongoDB,而不会遇到很多麻…

Linux Shell——函数的使用

文/一介书生&#xff0c;一枚码农。 scripts are for lazy people. 函数是存在内存里的一组代码的命名的元素。函数创建于脚本运行环境之中&#xff0c;并且可以执行。 函数的语法结构为&#xff1a; function <function-name> {<code to execute> } 创建函数不需要…

FFmpeg学习2:解码数据结构及函数总结

在上一篇文章中&#xff0c;对FFmpeg的视频解码过程做了一个总结。由于才接触FFmpeg&#xff0c;还是挺陌生的&#xff0c;这里就解码过程再做一个总结。本文的总结分为以下两个部分&#xff1a; 数据读取&#xff0c;主要关注在解码过程中所用到的FFmpeg中的结构体。解码过程中…

JavaFX 2 GameTutorial第4部分

介绍 这是与JavaFX 2游戏教程相关的六个部分系列的第四部分。 如果您错过了第1部分 &#xff0c; 第2部分或第3部分 &#xff0c;我建议您在开始本教程之前仔细阅读它们。 回顾一下&#xff0c;在第3部分中&#xff0c;我为您提供了许多经典街机风格游戏和所使用的不同输入设备…

java构造函数_JAVA的构造函数是怎么写的。万分感谢。路过的请不要嘲笑%_%

展开全部JAVA的构造函数是&#xff1a;SetLocal EnableDelayedExpansionset classpath.for %%c in (lib\*.jar) do set classpath!32313133353236313431303231363533e59b9ee7ad9431333431363030classpath!;%%cset classpath%classpath%;./classes;java com.ham.server.Server。…

C# 中winform的一些属性设置

1 窗体的大小固定住&#xff0c;不能调整其大小 窗体FormBorderStyle 属性设置为 FixedSingle; MaximizeBox 属性设置为false; MinimizeBox 属性设置为 false; 2. 在状态栏中无图标显示 设置为fase即可。 3. 设置窗体的启动位置 方法1&#xff0c; 用代码控制 this.Location …

LiveBos---按钮成下拉

转载于:https://www.cnblogs.com/luhanzhen/p/6802779.html

Solr:创建拼写检查器

在上一篇文章中&#xff0c;我谈到了Solr Spellchecker的工作原理&#xff0c;然后向您展示了其性能的一些测试结果。 现在&#xff0c;我们将看到另一种拼写检查方法。 与其他方法一样&#xff0c;此方法使用两步过程。 相当快速的“候选单词”选择&#xff0c;然后对这些单词…

Django 和 html

下面是对应的形式&#xff0c;自定义的forms 转载于:https://www.cnblogs.com/kilen/p/6804047.html