jmx入门及开发示例

官方介绍:http://docs.oracle.com/javase/1.5.0/docs/guide/jmx/overview/JMXoverviewTOC.html

 

JMX(Java Management Extensions) 是来管理网络,设备,应用程序等资源,它描述了一个可扩展的管理体系结构,并且提供了 JMX API 和一些预定义的 java 管理服务。

通过JMX可以轻松地为应用程序添加管理功能,即可以在尽可能少的改变原有系统的代码基础上实现对原系统的管理。

 

 

JMX Technology Architecture

Level

Description

Instrumentation

Resources, such as applications, devices, or services, are instrumented using Java objects called Managed Beans (MBeans). MBeans expose their management interfaces, composed of attributes and operations, through a JMX agent for remote management and monitoring.

 

Agent

The main component of a JMX agent is the MBean server. This is a core managed object server in which MBeans are registered. A JMX agent also includes a set of services for handling MBeans. JMX agents directly control resources and make them available to remote management agents.

 

Remote Management

Protocol adaptors and standard connectors make a JMX agent accessible from remote management applications outside the agent’s Java Virtual Machine (JVM).

 

 

Managing Resources Remotely

JMX API instrumentation can be accessed in many different ways, either through existing management protocols such as the Simple Network Management Protocol (SNMP), or through proprietary protocols. The MBean server relies on protocol adaptors and connectors to make a JMX agent accessible from management applications outside the agent’s Java Virtual Machine (JVM).

 

Each adaptor provides a view through a specific protocol of all MBeans registered in the MBean server. For example, an HTML adaptor could display an MBean in a Web browser.

 

Connectors provide a manager-side interface that handles the communication between manager and JMX agent. Each connector provides the same remote management interface though a different protocol. When a remote management application uses this interface, it can connect to a JMX agent transparently through the network, regardless of the protocol.

 

JMX technology provides a standard solution for exporting JMX API instrumentation to remote applications, based on Remote Method Invocation (RMI). In addition, the JMX Remote API defines an optional protocol based directly on TCP sockets, called the JMX Messaging Protocol (JMXMP). An implementation of the JMX Remote API does not have to support this optional protocol. The J2SE platform, version 5.0, does not include the optional protocol. See Appendix A, "JMX Technology Versions"for further information.

 

The JMX Remote API specification describes how you can advertise and find JMX agents using existing discovery and lookup infrastructures. Examples of how to do this are provided and are described in the Java Management Extensions (JMX) Technology Tutorial. The specification does not define its own discovery and lookup service. The use of existing discovery and lookup services is optional: alternatively you can encode the addresses of your JMX API agents in the form of URLs, and communicate these URLs to the manager.

 

获得 MBeanServer 的实例 

MBeanServer是MBean的容器,可以通过多种方式获得MBeanServer的实例,如:

   MBeanServer server = MBeanServerFactory.createMBeanServer();

或

MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();

 

其中,通过下面的方式获得的实例能在jconsole中使用,而上面的不能。

 

创建 MBean 

为了能够管理 Web 应用的资源,首先要使资源能够被管理,按照 JMX 规范的要求,我们将资源封装成 MBean,实际上也就是为 Web 应用添加可管理性。

MBean就是遵守JMX规范的普通Class。

 

 

JMX中常用的概念:

Manageable resource:

可被管理的资源可以是应用程序,设备或者存在的能够被java程序所访问或者包装的实体。通过JMX可以管理这些资源。应用程序能够暴露自己的组件,API或者附加的资源,使得JMX能够管理应用程序。可被管理的资源甚至可以是网络上的设备,例如打印机。可被管理的资源作为一个实体被JMX MBean所管理。

 

MBean:

MBean(managed bean)是一个Java类,符合JXM specification所规定的命名和继承规范。实例化的MBeans是Java对象,其中所暴露出来的接口(management interface)能够操作和访问manageable resources。这些接口是由MBean的属性和操作组成。

Management application通过访问MBean来访问属性和调用操作。MBean分三种类型:Standard,Dynamic和Model MBean.每一种类型都是针对于特定的manageable resource来使用的。

 

JMX agent:

JMX agent是一个Java process,能够为管理MBean的集合提供服务,是MBean Server的容器。这些服务可以是建立MBean的之间的关系,动态加载类,监控服务,作为计时器。

 

Management application

一个management application可以是任何的用户程序,用于和任意多的JMX agent之间建立接口。对于一些设计好的符合JMX技术的management appliction,JMX agents能够建立和该management application的联系,JMX agents也能够建立和那些先前没有考虑用JMX技术的management application建立联系。

 

传输和安全性

JMX 指定了在 MBeanServer 和 JMX 客户之间通信所使用的协议,协议可以在各种传输机制上运行。可以使用针对本地连接的内置传输,及通过 RMI、socket 或 SSL 的远程传输(可以通过 JMX Connector API 创建新的传输)。认证是由传输执行的;本地传输允许用相同的用户 ID 连接到运行在本地系统上的 JVM;远程传输可以用口令或证书进行认证。本地传输在 Java 6 下默认就是启用的。要在 Java 5.0 下启用它,需要在 JVM 启动时定义系统属性 com.sun.management.jmxremote。“Monitoring and Management using JMX” 这份文档(请参阅参考资料)描述了启用和配置传输的配置步骤。

The MBean server relies on protocol adaptors and connectors to make a JMX agent accessible from management applications outside the agent’s Java Virtual Machine (JVM).

 

 

下面给出一个JMX开发示例程序:

 

1.首先定义一个MBean接口

 

public interface ControllerMBean {
	//属性
	public void setName(String name);
	public String getName();
	
	
	//操作
	/**
	 * 获取当前信息
	 * @return
	 */
	public String status();
	public void start();
	public void stop();
	
}

 2.然后实现这个接口

 

public class Controller implements ControllerMBean {

	public void setName(String name) {
		this.name = name;
	}

	public String getName() {
		return this.name;
	}
	
	private String name;

	public String status() {
		return "this is a Controller MBean,name is " + this.name;
	}

	public void start() {
		// TODO Auto-generated method stub
	}


	public void stop() {
		// TODO Auto-generated method stub
	}
}

 3.在被管理的程序中加入这个管理对象

 

import java.lang.management.ManagementFactory;

import javax.management.InstanceAlreadyExistsException;
import javax.management.MBeanRegistrationException;
import javax.management.MBeanServer;
import javax.management.MBeanServerFactory;
import javax.management.MalformedObjectNameException;
import javax.management.NotCompliantMBeanException;
import javax.management.ObjectName;
import javax.swing.JDialog;

import jmx.Controller;
import jmx.ControllerMBean;

import com.sun.jdmk.comm.HtmlAdaptorServer;

public class Main {
	/**
	 * @param args
	 * @throws NullPointerException
	 * @throws MalformedObjectNameException
	 * @throws NotCompliantMBeanException
	 * @throws MBeanRegistrationException
	 * @throws InstanceAlreadyExistsException
	 */
	public static void main(String[] args)
			throws InstanceAlreadyExistsException, MBeanRegistrationException,
			NotCompliantMBeanException, MalformedObjectNameException,
			NullPointerException {
		//获得MBeanServer实例
//		MBeanServer mbs = MBeanServerFactory.createMBeanServer();//不能在jconsole中使用
		MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();//可在jconsole中使用
		//创建MBean
		ControllerMBean controller = new Controller();
		//将MBean注册到MBeanServer中
		mbs.registerMBean(controller, new ObjectName("MyappMBean:name=controller"));
		
		//创建适配器,用于能够通过浏览器访问MBean
		HtmlAdaptorServer adapter = new HtmlAdaptorServer();
		adapter.setPort(9797);
		mbs.registerMBean(adapter, new ObjectName(
				"MyappMBean:name=htmladapter,port=9797"));
		adapter.start();
		
		//由于是为了演示保持程序处于运行状态,创建一个图形窗口
		javax.swing.JDialog dialog = new JDialog();
		dialog.setName("jmx test");
		dialog.setVisible(true);
	}
}

 

运行上面的程序

 

4.在windows下进入控制台(win+r->cmd),然后输入jconsole命令,稍等片刻打开jconsole的图形界面,在“本地”中选择刚才运行的程序,然后进入MBean面板页,即可看到MyappMBean一项,下面就是具体的MBean,可展开这些MBean对其操作。

 

由于上面的程序启用了html协议适配器,因此可以在浏览器中执行如同jconsole的操作,在浏览器中输入:http://localhost:9797即可

 

 

后面再研究connector有关身份认证的问题,这样就能以安全的方式连接到MBeanServer上了。

 

 

 

 

JMX开发入门 立即下载

相关推荐

JMX一步一步来,快速学会开发JMX应用

JMX一步一步来,从最基本的应用开始入手,快速应用开发。

JMX概念及实际开发应用【实现IP黑名单】

JMX概念及实际开发应用【实现IP黑名单】

weixin_45565886的博客 958

PVT(Process Voltage Temperature)

芯片PVT

网始如芯个人博客 3万+

Java-JMX (官网文档解读)

本文总结了关于JMX 基于官方文档的学习内容,供大家参考

wend的博客 1709

百度地图街景图像批量获取

由于个人研究需要在最近试了一下使用API获取百度地图街景图片,在此介绍一下基于我个人需求的百度街景批量获取方法,本文以Python编码作为主要方法,如果对零编码工具有需要的可以关注一下UA城市分析小组刚刚发布的街景图片获取工具。 街景图像用作区域细粒度空间指标测度需要解决几个问题。 1. 首先就是调用额度的限制,现在百度对于个人认证开发者每天可用的街景图像调用额度为100张,在不考虑购买额度上限(1万张600元,其实有经费的前提下可以直接考虑钞能力)的情况下动辄几千上万张的爬取数量会大大增加需要爬取的时间周

boycetoon29的博客 1万+

Cadence Allegro16.6怎么导出器件引脚信息的报告

当我们需要用到器件的引脚相关信息时,可以利用allegro中的reports这个功能导出器件的相关信息。下面是具体的操作步骤。

suyucheng66的博客 5737

JMX的快速入门与使用+使用JMX Exporter监控+集成OpenTelemetry

文章目录JMX应用场景JMX使用定义一个MXBean实现该MXBean将MXBean注册到JMX中去使用Jconsole监控JMX官方文档源码地址 JMX应用场景 用来监控JVM内各种对象的信息。一个经典场景就是,某一天我们忽然被前方告知,业务大面积瘫痪,这时经过排查,发现由于bug导致数据库连接使用完了没有被释放,导致后续业务没有可用的数据库连接而超时报错。 假如我们使用JMX来监控我们系统中数据库连接池的信息,当数据库连接池出现短时间内连接被大量使用,这个时候可以搭配我们的监控报警系统(如Nagios)

本博客已迁移到 https://jacksparrow414.com 1万+

保姆级避坑指南:用Keil和J-Flash搞定凌思微LE5010蓝牙芯片的首次程序下载

本文提供了一份详细的保姆级避坑指南,帮助开发者使用Keil和J-Flash工具完成凌思微LE5010蓝牙芯片的首次程序下载。文章重点解决了算法文件混淆、协议栈漏烧和仿真器连接异常等常见问题,并详细介绍了开发环境配置、协议栈烧录和下载接口的物理层奥秘,助力开发者高效完成蓝牙开发任务。

weixin_28739079的博客 467

JMX使用详解

JMX(Java Management Extensions,即Java管理扩展)是一个为应用程序、设备、系统等植入管理功能的框架。JMX可以跨越一系列异构操作系统平台、系统体系结构和网络传输协议,灵活的开发无缝集成的系统、网络和服务管理应用。JMX在Java编程语言中定义了应用程序以及网络管理和监控的体系结构、设计模式、应用程序接口以及服务。通常使用JMX来监控系统的运行状态或管理系统的某些方面,比如清空缓存、重新加载配置文件等。JMX的主要作用是提供接口,允许有不同的实现。

技术人集结地 3968

基于Simulink的前馈解耦SVPWM整流器仿真

本文提出了一种基于Simulink的前馈解耦SVPWM整流器仿真方案,针对传统双闭环控制存在的耦合严重、电压利用率低等问题进行优化。通过前馈补偿dq轴耦合项(ωLiq和ωLid)结合SVPWM调制算法,实现了电流跟踪误差<3%、电压利用率达0.99、THD<3%的性能指标。文章详细阐述了系统架构设计,包括前馈解耦原理推导、SVPWM算法实现步骤,并提供了完整的Simulink建模方法。仿真结果表明,该方案在动态响应速度(25ms)和直流电压纹波(1.1%)方面显著优于传统SPWM控制。同时给出了

MHD0815的博客 162

告别手动打点计时:用Lauterbach TRACE32的RunTime功能,5分钟搞定嵌入式代码段性能分析

本文深入解析了Lauterbach TRACE32的RunTime功能在嵌入式代码性能分析中的革命性应用。通过硬件级计时原理和非侵入式设计,该功能能快速精确测量代码执行时间,显著提升开发效率,特别适用于汽车电子和工业控制领域。文章还提供了从基础设置到高级分析的完整实战指南,帮助工程师轻松掌握这一强大工具。

weixin_30615767的博客 279

JMX入门开发

什么是JMX?或者是JMX是做什么的?我的理解是:可以远程管理/编辑JAVA对象。如图: 上面的SchemaName属性就是可以动态修改的,那么是如何做到的哪?下面咱们逐步分析。 一、首先假设咱们有个对象SystemConfig,包含两个属性threadCount和schemaName package study; public class SystemConfig ...

aijia7039的博客 125

YOLOv12改进策略【Neck】| arXiv 2024 MAFPN:多分支辅助特征金字塔网络 | 通过双向辅助融合与异构卷积机制,解决传统PAFPN多尺度特征融合不充分与小目标检测不足问题

本文记录的是利用MAFPN颈部结构改进YOLOv12的目标检测网络模型。通过引入双向辅助融合机制优化特征处理流程,在自底向上路径利用 SAF 模块融合主干浅层特征与颈部输出,并保留浅层空间信息,为小目标检测提供更丰富细节;自顶向下路径通过 AAF 模块建立密集连接,聚合浅层高 / 低分辨率层、同级层及前层特征,均衡各层通道数后实现多向梯度信息交互,增强中 / 大目标特征表达。将其应用到中,解决传统特征金字塔在多尺度信息整合中的不足,提升多尺度目标检测的精度与特征表达的丰富性。Multi-Branch Aux

Limiiiing的博客 1254

jmx入门及开发示例 jmx程序管理

jmx入门及开发示例 jmx程序管理  官方介绍:http://docs.oracle.com/javase/1.5.0/docs/guide/jmx/overview/JMXoverviewTOC.html   JMX(Java Management Extensions) 是来管理网络,设备,应用程序等资源,它描述了一个可扩展的管理体系结构,并且提供了 JMX API 和一些预

u010154380的专栏 868

【Claude】Disabled organization 错误:组织被禁用的原因与 API Key 绕过方法

如果环境变量存在,下一步是找出它在哪里被设置的。"Disabled organization" 错误的本质不是账户被封,而是认证优先级冲突。环境变量优先级最高始终覆盖 OAuth 订阅认证报错信息具有误导性:"组织被禁用"指的通常是 API Key 所属的组织,而不是你的个人账户旧 Key 是隐形炸弹:即使你已经不再使用某个组织的 API,只要环境变量中残留该 Key,它就会持续覆盖你的订阅认证非交互模式更敏感claude -p模式下,只要有环境变量,就会强制使用它,完全忽略/login。

博客 8864

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

jmx

jmx入门及开发示例 jmx程序管理  官方介绍:http://docs.oracle.com/javase/1.5.0/docs/guide/jmx/overview/JMXoverviewTOC.html   JMX(Java Management Extensions) 是来管理网络,设备,应用程序等资源,它描述了一个可扩展的管理体系结构,并且提供了 JMX API 

killerover84的专栏-----天下 692

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

jmx客户端_Java JMX客户端示例– JMX身份验证

jmx客户端In last tutorial we learned about JMX Basics and how can we use JConsole to manage MBeans. Today we will look into java jmx client example and role based authentication through config files. 在上一...

从零开始的教程世界 1870

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

【JMX】JAVA监控的基石

一文快速讲解一切JAVA监控的基石——JMX。

BugMan的博客 4136

使用JConsole连接远程JMX示例

远程JMX连接的过程与本地JMX连接完全不同。您可以通过4种方法进行JConsole远程监视。 SSL和身份验证均已禁用。 已启用SSL和已禁用身份验证。 启用身份验证,并禁用SSL。 SSL和身份验证均已启用。 每种远程连接方式都有其自身的优点和缺点。您可以根据连接的难易程度和连接的安全性来选择适当的方式。在本教程中,我们将研究所有4种不同类型的JMX远程连接示例,以及每种示例的优缺点。在后续教程中,我们还将学习如何将JConsole连接到Tomcat,JBoss等。 什么是JMX RMI端..

allway2的博客 5613

Spring 集成JMX示例

在Spring中,可以方便地集成JMX。 那么第一个问题来了:什么是JMX? JMX是Java Management Extensions,它是一个Java平台的管理和监控接口。为什么要搞JMX呢?因为在所有的应用程序中,对运行中的程序进行监控都是非常重要的,Java应用程序也不例外。我们肯定希望知道Java应用程序当前的状态,例如,占用了多少内存,分配了多少内存,当前有多少活动线程,有多少休眠线程等等。如何获取这些信息呢? 为了标准化管理和监控,Java平台使用JMX作为管理和监控的标准接口,任何程

shadow_zed的博客 1065

JMX使用入门

简述 本文是关于JMX(Java Management Extensions)的使用文档。 关于JMX 所谓JMX,是Java Management Extensions(Java管理扩展)的缩写,是一个为应用程序植入管理功能的框架。JMX有以下用途: 监控应用程序的运行状态和相关统计信息。 修改应用程序的配置(无需重启)。 状态变化或出错时通知处理。 举个例子,我们可以通过jconsole监控应用程序的堆内存使用量、线程数、类数,查看某些配置信息,甚至可以动态地修改配置。另外,有时..

DH719491759的博客 8278

JMX详解以及使用示例

目录JMX是什么 JMX架构MBean标准MBean 定义接口实现接口注册MBean使用MBean 如何通过Web管理MBean JMX(Java Management Extensions)是一个为应用程序植入管理功能的标准化代理和服务。通常使用JMX来监控系统的运行状态或管理系统的某些方面,比如清空缓存、重新加载配置文件等。JConsole以及JVisualVM 都是通过JMX来实现对JAVA应用程序的监控。 JMX定义了四种类型的MBean,标准MBean,动态MBean,开放MBean和模

技术分享 3621

47、Flink 的指标报告介绍(graphite、influxdb、prometheus、statsd和datalog)及示例(jmx和slf4j示例)

Flink 支持用户将 Flink 的各项运行时指标发送给外部系统。了解更多指标方面信息可查看45、Flink 的指标体系介绍及验证(3)- 完整版。你可以通过 conf/flink-conf.yaml 文件来配置一种或多种发送器,将运行时指标暴露给外部系统。发送器会在 TaskManager、Flink 作业启动时进行实例化。下面列出了所有发送器都适用的参数,可以通过配置文件中的 metrics.reporter.. 项进行配置。

alanchanchn的专栏 6万+

java jmx 例子_jmx完整示例

很早就开始去了解这个了,不过一直都是皮毛,基本概念明白,具体api几乎一无不知。。。认真看了几篇文章,做了测试,终于有所了解写得最好的:http://www.cnblogs.com/yaohonv/archive/2012/02/08/jmx.html, 图也很清楚,不过初入门的时候看起来比较吃力, 其中对jmx-rmi有所涉及,不错,可惜实验不通。没地方下载jmxremoting.jar个人理解...

weixin_39727706的博客 453

JMX学习

1. 絮絮叨叨 1.1 Java程序包含哪些线程? 使用Java进行多线程编程的人,多少可能都知道执行main()方法的是一个名为main的线程 通过new Thread新建线程,若不指定线程名,默认线程名为Thread-xx。其中xx是从0开始的编号 public static void main(String[] args) { for (int i = 0; i < 10; i++) { new Thread(() -> System.out.println

lucyLee的博客 3700
上一篇: 为 Web 应用建立基于 JMX 的管理系统
下一篇: HA及集群
maimode
博客等级 码龄19年 11粉丝 35原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值