- 浏览: 972406 次
- 性别:
- 来自: 山西
文章分类
最新评论
-
白小默:
你好 可以提供下源码DEMO吗,不知为何,我导出来的excel ...
jxls 使用模板文件导出生成excel -
zkzqzzz:
博主威武!
让微信二维码扫描您的APK -
zkzqzzz:
感谢博主 原来那些类都不是必须的 或者自己写!!博主真棒 ...
抢红包插件实现原理浅析 -
zkzqzzz:
博主 请问你的其他类在哪里呢?
抢红包插件实现原理浅析 -
zkzqzzz:
其他类在哪呢?
抢红包插件实现原理浅析
JMX指南
Java管理扩展(也叫做JMX规范,英文名称Java Management Extensions)在Java编程语言中定义了应用程序以及网络管理和监控的体系结构、设计模式、应用程序接口以及服务。通常使用JMX来监控系统的运行状态或管理系统的某些方面,比如清空缓存、重新加载配置文件等
JMX--Java Management Extensions,即Java管理扩展,是一个为应用程序、设备、系统等植入管理功能的框架。JMX可以跨越一系列异构操作系统平台、系统体系结构
和网络传输协议,灵活的开发无缝集成的系统、网络和服务管理应用。
优点可以非常容易的使应用程序具有被管理
伸缩性的架构每个JMX Agent服务可以很容易的放入到Agent中,每个JMX的实现都提供几个核心的Agent服务,你也可以自己编写服务,服务可以很容易的部署,取消部署。
主要提供接口,允许有不同的实现
JMX可以用来管理网络,设备,应用程序等资源,当前规范为1.1版。
JMX的结构
在JMX中共分为三层
1:Instrumentation
2:Agent
3:Distributed Services
JMX的优点:
1:可以非常容易的使应用程序具有被管理的功能
2:提供具有高度伸缩性的架构
每个JMX Agent服务可以很容易的放入到Agent中,每个JMX的实现都提供几个核心的Agent服务,你也可以自己编写服务,服务可以很容易的部署,取消部署。
3:集成了现有的一些管理解决方案,如SNMP
4:非常容易的利用其他java技术
5:主要提供接口,允许有不同的实现
在JMX的规范中,只讲述了前两部分,分布式服务并没有涉及到,jmx规范还在不断完善中
上面的这个图是jmx in action中的一副JMX的结构图,通过上面这个图,我们可以将JMX的层次分的更清楚一点。
通常我们需要写一个Bean(Managed bean,简称MBean),利用这个bean去管理资源。
基本概念:
1:MBean
通常是一个java类,它提供接口可以使这个类具有管理功能(如standard MBean,接口中定义的方法使MBean具有管理功能)。
2:MBean server
是管理MBean的一个java类,你需要向MBean server注册一个MBean后,这个MBean才会具有管理功能,MBean server还提供了查询功能和注册监听器的功能,sun提供的只是接口,不同的jmx实现中的MBean server实现也不同。
3:JMX agent
agent是为了管理一系列的MBean,而提供的一系列的服务,如上图所示,通常有MBean relationships, dynamically loading classes, simple monitoring services, timers。agent可以利用Protocol adapters(例如HTTP 和SNMP)和connectors(RMI 和Jini)使不同的客户端可以访问MBean。
4:Protocol adapters 和connectors
适配器和连接器主要使不同的协议和客户端可以使用这个agent,一个agent中可以有多个Protocol adapters 和connectors,这样管理起MBean来就更方便了(有多种类型的客户端和协议可以操作MBean)。注意,Protocol adapters 和connectors通常也是MBean。
MBean的类型
JMX1.1相对于1.0有了很大改进,在1.1中提供4种类型的MBean,3,4两种MBean都是特殊类型的dynamic MBean。
1:standard MBean
2:dynamic MBean
3:open MBean
4:model MBean
类型 描述
standard MBean 这种类型的MBean最简单,它能管理的资源(包括属性,方法,时间)必须定义在接口中,然后MBean必须实现这个接口。它的命名也必须遵循一定的规范,例如我们的MBean为Hello,则接口必须为HelloMBean。
dynamic MBean 必须实现javax.management.DynamicMBean接口,所有的属性,方法都在运行时定义
open MBean 此MBean的规范还不完善,正在改进中
model MBean 与标准和动态MBean相比,你可以不用写MBean类,只需使用javax.management.modelmbean.RequiredModelMBean即可。RequiredModelMBean实现了ModelMBean接口,而ModelMBean扩展了DynamicMBean接口,因此与DynamicMBean相似,Model MBean的管理资源也是在运行时定义的。与DynamicMBean不同的是,DynamicMBean管理的资源一般定义在DynamicMBean中(运行时才决定管理那些资源),而model MBean管理的资源并不在MBean中,而是在外部(通常是一个类),只有在运行时,才通过set方法将其加入到model MBean中。后面的例子会有详细介绍
Standard MBean编程简介
上面我们已经提到了编写这种类型MBean的规则
1:编写接口
2:编写MBean
3:编写agent
下面看接口的代码,very easy,主要定义get/get方法和其它你想使用的方法
- public interface HelloWorldMBean
- {
- public void setGreeting( String greeting );
- public String getGreeting();
- public void printGreeting();
- }
public interface HelloWorldMBean { public void setGreeting( String greeting ); public String getGreeting(); public void printGreeting(); }
再看MBean的代码,跟传统的Bean非常相似,加入某个属性只有get方法,则说明这个属性是只读的,get/set都有的话,说明这个属性是可读可写的,此MBean只定义了一个属性 greeting。另外还定义了一个方法printGreeting。
- public class HelloWorld implements HelloWorldMBean
- {
- private String greeting = null;
- public HelloWorld()
- {
- this.greeting = "Hello World! I am a Standard MBean";
- }
- public HelloWorld( String greeting )
- {
- this.greeting = greeting;
- }
- public void setGreeting( String greeting )
- {
- this.greeting = greeting;
- }
- public String getGreeting()
- {
- return greeting;
- }
- public void printGreeting()
- {
- System.out.println( greeting );
- }
- }
public class HelloWorld implements HelloWorldMBean { private String greeting = null; public HelloWorld() { this.greeting = "Hello World! I am a Standard MBean"; } public HelloWorld( String greeting ) { this.greeting = greeting; } public void setGreeting( String greeting ) { this.greeting = greeting; } public String getGreeting() { return greeting; } public void printGreeting() { System.out.println( greeting ); } }
下面编写agent
1:创建 MBeanServer
2:创建一个adapter
3:将MBean注册到MBeanServer,同时将apapter也注册到MBeanServer
4: 启动adapter import javax.management.*;
- import com.sun.jdmk.comm.*;
- public class HelloAgent
- {
- private MBeanServer mbs = null;
- public HelloAgent()
- {
- mbs = MBeanServerFactory.createMBeanServer( "HelloAgent" );
- HtmlAdaptorServer adapter = new HtmlAdaptorServer();
- HelloWorld hw = new HelloWorld();
- ObjectName adapterName = null;
- ObjectName helloWorldName = null;
- try
- {
- helloWorldName = new ObjectName( "HelloAgent:name=helloWorld1" );
- mbs.registerMBean( hw, helloWorldName );
- adapterName = new ObjectName( "HelloAgent:name=htmladapter,port=9092" );
- adapter.setPort( 9092 );
- mbs.registerMBean( adapter, adapterName );
- adapter.start();
- }
- catch( Exception e )
- {
- e.printStackTrace();
- }
- }
- public static void main( String args[] )
- {
- System.out.println( "HelloAgent is running" );
- HelloAgent agent = new HelloAgent();
- }
- }
import com.sun.jdmk.comm.*; public class HelloAgent { private MBeanServer mbs = null; public HelloAgent() { mbs = MBeanServerFactory.createMBeanServer( "HelloAgent" ); HtmlAdaptorServer adapter = new HtmlAdaptorServer(); HelloWorld hw = new HelloWorld(); ObjectName adapterName = null; ObjectName helloWorldName = null; try { helloWorldName = new ObjectName( "HelloAgent:name=helloWorld1" ); mbs.registerMBean( hw, helloWorldName ); adapterName = new ObjectName( "HelloAgent:name=htmladapter,port=9092" ); adapter.setPort( 9092 ); mbs.registerMBean( adapter, adapterName ); adapter.start(); } catch( Exception e ) { e.printStackTrace(); } } public static void main( String args[] ) { System.out.println( "HelloAgent is running" ); HelloAgent agent = new HelloAgent(); } }
上面的代码使用了sun的一个adapter:HtmlAdaptorServer,使得html客户端可以访问MBean,注意ObjectName类,它的书写规则是这样的:"Domain names:key=value,key2=value2",因为createMBeanServer方法中我们使用了参数"HelloAgent",因此后面的Domain names必须为HelloAgent。
运行
将jmx的包放到classpath中,运行HelloAgent类,然后通过浏览器访问http://localhost:9092即可
发表评论
-
java通过sftp JSch 上传文件下载文件查看文件目录,测试可用
2019-12-19 18:19 972基于maven ... -
服务器之间的 zip 文件定时传送
2019-12-19 10:28 5191、expect 安装 将expect和tcl的软 ... -
Java/web/jsp根据pdf模板生成荣誉证书PDF文件
2019-07-19 14:48 9551.前言 最近博主在 ... -
Java生成荣誉证书PDF文件
2019-07-19 13:08 1380Java生成荣誉证书PD ... -
百度云API刷脸
2019-07-13 11:41 631刷脸登录是基于人工智能、生物识别、3D传感、大数据风控技术, ... -
maven--maven配置多个源文件夹
2019-06-13 21:32 930需求 Maven 为我们提供了一致的项目目录配置(源文件 ... -
绿盟检测出“检测到目标URL存在http host头攻击漏洞”如何解决
2019-06-09 10:00 1001绿盟检测出“检测到目标URL存在http host头攻击漏 ... -
Linux安装apache及其简单的反向代理配置
2019-06-07 09:06 637Apache简介 Apache HTTP Se ... -
Linux二进制安装apache2.4.25
2019-06-07 09:06 714Linux二进制安装apache2.4. ... -
weblogic配置https,http自动跳转转https,ssl
2019-05-21 09:44 942最近,公司要求将http ... -
bootstrap-table组合表头
2019-03-06 10:04 913bootstrap-table组合表头 ... -
[Weblogic]如何清理缓存
2019-03-04 15:23 857[Weblogic]如何清理缓存 ... -
Guns第十节Swagger的讲解
2019-01-23 16:51 6422018年08月01日 15:54:30 ze ... -
Anaconda详细安装使用教程
2019-01-22 15:07 613关注微信公众号【Mi ... -
Windows系统下Eclipse上搭建Python开发环境
2019-01-22 15:00 328Windows系统下Eclipse上搭 ... -
Python 3.6 中使用pdfminer解析pdf文件
2019-01-22 14:50 935所使用python环境为最新 ... -
Python提取PDF内容(文本、图像、线条等)
2019-01-22 14:43 7545使用Python抽取PDF文件内 ... -
用python解析pdf中的文本与表格【pdfplumber的安装与使用】
2019-01-22 14:40 1533我们接触到的很多文档资料都是以pdf格式存在的,比如:论文, ... -
java实现PDF转HTML
2019-01-21 10:14 923java实现PDF转HTML 问题场景: ... -
JAVA PDFBOX 读取PDF表格
2019-01-18 17:39 2934最近在帮公司做工具,需要读取PDF中表格的数据。网上查了, ...
相关推荐
JDK11 Java管理扩展指南 Java管理扩展(Java Management Extensions,JMX)...JDK11 Java管理扩展指南是Java开发人员学习JMX技术的不可或缺的参考指南,涵盖了JMX架构、API文档、示例代码和实践指南等方面的详细信息。
JDK 15 Java 管理扩展指南是 Oracle 公司发布的一份官方文档,旨在帮助开发者和管理员了解 JMX 的基本概念、架构和使用方法。 Java 平台标准版是 Java 技术的核心组件,提供了一组标准的 API 和工具来开发和部署 ...
Java 平台标准版 Java 管理扩展指南是 Oracle 公司发布的一份官方文档,该文档面向 Java 平台标准版的开发者和管理员,旨在帮助他们学习和掌握 Java 管理扩展技术。 Java 管理扩展简介 Java 管理扩展(Java ...
这篇指南专门介绍了Java管理扩展(Java Management Extensions,JMX)的基本概念、架构、组件、功能和应用场景,以帮助开发者更好地理解和使用JMX技术。 一、Java管理扩展简介 Java管理扩展(Java Management ...
总的来说,《Manning - JMX in Action》是一本全面、实用的JMX指南,无论你是初学者还是经验丰富的Java开发者,都能从中受益匪浅,掌握如何借助JMX提升你的应用程序的管理能力。通过阅读这本书,你将能够熟练地运用...
3. 自定义MBeans:开发者可以创建自己的MBeans,扩展管理功能。 三、EJB3.0使用说明 EJB(Enterprise JavaBeans)是Java EE的一部分,用于构建分布式企业级应用。EJB3.0引入了许多改进,简化了开发过程。 1. EJB...
【标题】:“jmx_tomcat_jboss”指的是在Java管理扩展(JMX)框架下对Tomcat和JBoss服务器的管理和监控。 【描述】:Java管理扩展(JMX)是一种标准,允许开发者创建、管理和监控Java应用程序的组件。在这个上下...
Java管理扩展指南 Java Management Extensions(JMX)是Java平台标准版(Java Platform, Standard Edition)的一部分,提供了一个强大的管理和监控Java应用程序的框架。JMX允许开发者编写管理代理程序,监控和控制...
5. **Management Agents**:这些代理负责将JMX管理能力扩展到网络中其他非Java的系统。它们通常作为桥接,使Java和非Java组件能够相互通信。 **二、JMX API** JMX API包含以下主要部分: 1. **MBean接口**:定义...
JMX Remote API扩展了基本的JMX,使得管理操作可以跨越网络进行,允许远程监控和管理Java应用程序。这个版本可能包含了更新的连接器(Connectors)和协议支持,提高了安全性,增强了稳定性,并修复了一些已知问题。...
《JDK10-JSE Java Management Extensions ...JDK10的JMX指南详细介绍了如何利用这一框架来有效地管理Java应用,确保其运行效率和稳定性。对于系统管理员和开发者来说,理解和掌握JMX对于优化和维护Java应用至关重要。
Java平台提供的监控和管理功能主要通过JMX(Java管理扩展)来实现,JMX是用于监控和管理Java应用程序和资源的编程接口和规范。 文档提到的版权信息显示,该软件及其相关文档是受许可协议保护的,不能随意复制或修改...
- **扩展性**:通过SNMP Manager API,开发者可以在JMX管理的应用程序中实现SNMP的功能,例如收集设备状态数据、发送陷阱等。 #### 三、SNMP Manager API的组成 - **主要组件**:SNMP Manager API包含了一系列Java...
MBean是一个被管理的Java对象,就像Javabean组件一样,但是它遵从JMX规范的设计模式。MBean可以表示设备、应用或者任何需要被管理的资源。MBeans暴露如下管理接口:1.一组可读和可写属性,或者两者兼而有之。2.一组...
此外,还介绍了Java集合类的使用,枚举的用法和Java IO与NIO的使用和原理,Java反射机制,序列化和反序列化的原理和安全问题,以及注解的使用、JMS消息服务、JMX管理模型、泛型编程、单元测试、正则表达式、常用工具...
《JMX in Action》这本书是关于Java管理扩展(Java Management Extensions, 简称JMX)的一本实战指南。JMX是一种在Java应用程序中管理和监控资源的技术,它提供了标准的接口来创建、注册和访问管理对象,使得开发者...
Java Management Extensions(JMX)是Java平台上的一个标准技术,用于管理和监控应用程序、设备和服务。JMX 1.2.1是这个规范的一个版本,它...对于开发高效、可扩展和可管理的Java应用程序来说,深入理解JMX至关重要。
JMX的核心概念包括MBeans(Managed Beans)、代理(MBean Server)和管理工具,它们共同构建了一个灵活且可扩展的管理系统。 1. MBeans:MBeans是JMX的核心组件,代表了可管理的资源或对象。它们可以是简单的数据...
WebLogic Server提供丰富的监控工具,如管理控制台、JMX(Java Management Extensions)接口,用于实时查看服务器状态、诊断问题和优化性能。 六、故障排查与日志管理 WebLogic Server生成详细的日志文件,帮助管理...
Java Management Extensions Guide Java Management Extensions(JMX)是一种Java API,用于管理和监控...Java Management Extensions Guide提供了JMX的详细信息和使用指南,是Java开发者和系统管理员的重要参考资源。