利用Java内置的API开发JMX功能

2024-06-02 15:58
文章标签 java 功能 开发 内置 api jmx

本文主要是介绍利用Java内置的API开发JMX功能,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 

一、什么是JMX

      JMS是一种Java规范,定义了如何管理一个软件系统(或应用程序)的规范。 对于一个简单的应用程序,该程序本身不需要被管理。但如果是开发的一个复杂系统(如一个电商平台、一个企业内部管理系统),则该系统本身也需要被管理,如需要了解这个软件的运行情况,比如某些状态是否正常、当前登录用户数,还有可能需要动态的调整系统的某些参数,如数据库链接池的大小、某些缓存的大小。

  JMS就是定义了这样的一套规范,有很多针对该规范的实现框架(如JBoss),SUN自己也对该规范有了一套实现,并且从JDK1.5开始,实现的核心jar包内置到了jre中,不需要单独下载jar包,只是一些外围的包还需单独下载。

     利用JMX规范,以及相应的实现框架,可以很方便的为一个复杂的应用系统建立一个管理系统。实际上如Tomcat、weblogic、JBOSS等框架服务器系统,本身就提供了JMX服务。利用这些框架开发的系统天然就能支持JMX。

  使用JMX还有一个很大的好处是,甚至不需要开发自己的界面。我们知道,如果自己开发一个管理软件,肯定需要开发相关的界面(不管是WEB的还是GUI的),而开发界面的工作量可不小。而JMX因为是标准的规范,如果一个应用系统通过JMX来实现被管理,直接就能通过通用的管理软件或内置的html页面来访问操作。

  本文介绍如何在一个普通的应用程序中来通过JMX被管理.

 

二、JMX程序开发的基本流程

1、一个系统要被管理,首先需要抽象成一个或多个被管理对象,在JMX规范中就是一个MBean。一个MBean就是一个普通的java类,只是需要遵循相关的命名规范。实现一个被管理对象(MBean),需要定义一个java接口(暴露该对象可被访问和操作的信息),以及一个该接口的实现类。根据JMX的规范要求,接口的命名必须是实现类的名字后加MBean。

2、实现的MBean需要注册到MBean服务器上。

3、通过界面或代码访问这些MBean。

 

三、例子说明

1、定义MBean接口

复制代码

public interface DemoMBean {public String getMsg();public void setMsg(String msg);public void showMsg();}

复制代码

注意,接口名必须以MBean结尾

2、定义MBean的实现类

复制代码

public class Demo implements DemoMBean {private String msg;public String getMsg() {return msg;}public void setMsg(String msg) {this.msg = msg;}public void showMsg() {System.out.println("Hello World, " + msg);}}

复制代码

注意,类名必须是 接口名除去后缀MBean。在这个例子中必须是Demo。

3、注册Mbean

复制代码

public class Agent {public static void main(String[] args) throws Exception {MBeanServer server = MBeanServerFactory.createMBeanServer();//创建MBean并注册server.registerMBean(new Demo(), new ObjectName("mybean:name=xxx"));//创建一个web适配器服务器,表示我们MBean服务通过web形式来提供给用户管理.//该web server本身也是一个MBean,也需要被注册. 参数是web服务器的端口号,默认是8082HtmlAdaptorServer htmlServer = new HtmlAdaptorServer(9999);server.registerMBean(htmlServer, new ObjectName("Agent:name=htmlServer"));//启动web服务器,这样浏览器通过 http://localhost:9999/ 就可以访问和操作这些MbeanhtmlServer.start();}}

复制代码

运行该程序后,在浏览器输入 http://localhost:9999/ ,就可以看到定义的MBean,并通过页面提供的界面对MBean进行操作。

四、小结

文本介绍了一个最简单的JMX例子。但却基本涵盖了JMX的核心内容。JMX的核心就是将要被管理的信息封装成一个个的MBean对象。

然后将这些对象发布和注册到MBean服务器上。 这样用户就可以通过相关的界面或api方式去访问这些MBean,就可以通过MBean接口定义的相关方法获取相关的信息,或者执行相关的动作。

这篇关于利用Java内置的API开发JMX功能的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1024420

相关文章

Java实现字节字符转bcd编码

《Java实现字节字符转bcd编码》BCD是一种将十进制数字编码为二进制的表示方式,常用于数字显示和存储,本文将介绍如何在Java中实现字节字符转BCD码的过程,需要的小伙伴可以了解下... 目录前言BCD码是什么Java实现字节转bcd编码方法补充总结前言BCD码(Binary-Coded Decima

SpringBoot全局域名替换的实现

《SpringBoot全局域名替换的实现》本文主要介绍了SpringBoot全局域名替换的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录 项目结构⚙️ 配置文件application.yml️ 配置类AppProperties.Ja

Java使用Javassist动态生成HelloWorld类

《Java使用Javassist动态生成HelloWorld类》Javassist是一个非常强大的字节码操作和定义库,它允许开发者在运行时创建新的类或者修改现有的类,本文将简单介绍如何使用Javass... 目录1. Javassist简介2. 环境准备3. 动态生成HelloWorld类3.1 创建CtC

JavaScript中的高级调试方法全攻略指南

《JavaScript中的高级调试方法全攻略指南》什么是高级JavaScript调试技巧,它比console.log有何优势,如何使用断点调试定位问题,通过本文,我们将深入解答这些问题,带您从理论到实... 目录观点与案例结合观点1观点2观点3观点4观点5高级调试技巧详解实战案例断点调试:定位变量错误性能分

Java实现将HTML文件与字符串转换为图片

《Java实现将HTML文件与字符串转换为图片》在Java开发中,我们经常会遇到将HTML内容转换为图片的需求,本文小编就来和大家详细讲讲如何使用FreeSpire.DocforJava库来实现这一功... 目录前言核心实现:html 转图片完整代码场景 1:转换本地 HTML 文件为图片场景 2:转换 H

Java使用jar命令配置服务器端口的完整指南

《Java使用jar命令配置服务器端口的完整指南》本文将详细介绍如何使用java-jar命令启动应用,并重点讲解如何配置服务器端口,同时提供一个实用的Web工具来简化这一过程,希望对大家有所帮助... 目录1. Java Jar文件简介1.1 什么是Jar文件1.2 创建可执行Jar文件2. 使用java

PHP应用中处理限流和API节流的最佳实践

《PHP应用中处理限流和API节流的最佳实践》限流和API节流对于确保Web应用程序的可靠性、安全性和可扩展性至关重要,本文将详细介绍PHP应用中处理限流和API节流的最佳实践,下面就来和小编一起学习... 目录限流的重要性在 php 中实施限流的最佳实践使用集中式存储进行状态管理(如 Redis)采用滑动

SpringBoot实现不同接口指定上传文件大小的具体步骤

《SpringBoot实现不同接口指定上传文件大小的具体步骤》:本文主要介绍在SpringBoot中通过自定义注解、AOP拦截和配置文件实现不同接口上传文件大小限制的方法,强调需设置全局阈值远大于... 目录一  springboot实现不同接口指定文件大小1.1 思路说明1.2 工程启动说明二 具体实施2

Java实现在Word文档中添加文本水印和图片水印的操作指南

《Java实现在Word文档中添加文本水印和图片水印的操作指南》在当今数字时代,文档的自动化处理与安全防护变得尤为重要,无论是为了保护版权、推广品牌,还是为了在文档中加入特定的标识,为Word文档添加... 目录引言Spire.Doc for Java:高效Word文档处理的利器代码实战:使用Java为Wo

SpringBoot日志级别与日志分组详解

《SpringBoot日志级别与日志分组详解》文章介绍了日志级别(ALL至OFF)及其作用,说明SpringBoot默认日志级别为INFO,可通过application.properties调整全局或... 目录日志级别1、级别内容2、调整日志级别调整默认日志级别调整指定类的日志级别项目开发过程中,利用日志