JMX指南(一)
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();
}
再看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 );
}
}
下面编写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();
}
}
上面的代码使用了sun的一个adapter:HtmlAdaptorServer,使得html客户端可以访问MBean,注意ObjectName类,它的书写规则是这样的:"Domain names:key=value,key2=value2",因为createMBeanServer方法中我们使用了参数"HelloAgent",因此后面的Domain names必须为HelloAgent。
运行
将jmx的包放到classpath中,运行HelloAgent类,然后通过浏览器访问http://localhost:9092即可
- 描述: JMX的结构图
- 大小: 17.9 KB
分享到:
相关推荐
压缩包中的`README.md`和`jmx.pdf`文件可能是更详细的JMX使用指南。`README.md`通常包含简要说明和步骤,而`jmx.pdf`可能包含深入的技术细节和示例。 总结来说,JMX是一个强大的工具,通过正确配置服务器和客户端,...
### JMX快速上手指南 #### 一、JMX简介 JMX,全称为Java Management Extensions,是一项由Sun Microsystems提出并被广泛采纳的标准技术。它主要用于监控和管理系统资源,包括但不限于应用程序、硬件设备以及网络...
【JBOSS使用指南】 JBoss是Red Hat公司开发的一款开源的应用服务器,它基于Java EE(Enterprise Edition)标准,提供了一种运行企业级Java应用程序的平台。本指南将深入探讨如何有效利用JBoss进行应用程序部署、...
描述中的"jmxri.jar包下载"可能意味着你正在寻找官方的Oracle Java JRE或JDK安装中包含的这个特定的jar文件,可能是为了更新或替换现有环境中的版本,或者在不完整或定制的Java环境中使用。 标签"jmxri"直接关联到...
在描述中提到的“jmx.rar_jmx”,很可能是包含了一个名为“JMX开发步骤.doc”的文档,这份文档很可能详述了如何利用JMX进行开发的步骤和指南。以下是一些可能涵盖在文档中的JMX开发关键知识点: 1. **MBean**:...
- **SNMP Manager API指南**:提供详细的API使用指南,包括示例代码和最佳实践建议。 #### 七、总结 JMX SNMP Manager API为开发者提供了一个强大的工具集,用于开发能够管理和监控基于JMX的应用程序的SNMP代理。...
文件中通常会包含规范文档、使用指南和可能的示例。 这些资源对于理解JMX工作原理、开发和集成JMX管理功能、以及实现远程监控和管理至关重要。JMX的核心概念包括: - **MBean**(Managed Bean):MBean是Java对象...
2. **Zabbix-Java-gateway处理请求**:收到请求后,Zabbix-Java-gateway使用JMX Management API去查询目标Java应用。这要求目标Java应用在启动时必须带有`-Dcom.sun.management.jmxremote`参数,以启用JMX查询功能。...
在这个入门指南中,我们将深入探讨JMX的核心概念、API以及如何通过一个简单的示例来理解它的应用。 **一、JMX核心概念** 1. **MBean(Managed Beans)**:MBean是JMX中的核心组件,代表了可管理的资源。它可以是...
4. **文档**:解释如何配置和使用JMX与Tomcat或JBoss交互的指南。 5. **库文件**:可能包括JMX相关的Java库,如`jmxri.jar`和`jmxtools.jar`,这些库在使用JMX客户端工具时可能需要。 使用JMX对Tomcat和JBoss进行...
5. **文档**:可能包括API文档、用户指南和开发者参考资料,帮助理解JMX的工作机制和最佳实践。 JMX的应用场景广泛,比如: - 监控应用程序的性能,如内存使用、线程状态、Garbage Collection情况等。 - 管理...
本文将详细介绍如何配置LoadRunner以便于监视WebLogic服务器(使用JMX)。 #### 二、准备工作 1. **安装环境**:确保已经安装了Mercury LoadRunner 和 WebLogic 服务器。 2. **下载并安装lrJDK1.4**:发送邮件至ZU...
摘要:本文主要介绍了使用JMX连接JVM实现过程详解,通过示例代码对JMX的概念、安装、配置和使用进行了详细的介绍,为读者提供了一份详细的参考指南。 一、什么是JMX? JMX(Java Management Extensions)是Java...
这个"Apache Camel 开发使用指南中文版"压缩包文件很可能是为初学者和有经验的开发者准备的一份详细教程,帮助他们理解和掌握Apache Camel的核心概念和实际应用。 在学习Apache Camel时,首先要理解的是它的核心...
《开发者指南:深入理解JMX客户端》 一、引言 在现代软件开发与系统管理领域,Java Management Extensions(简称JMX)作为一种重要的技术规范,为监控和管理系统资源提供了强大的框架支持。Sun Microsystems公司...
3. 文档文件:可能包括API规范、开发者指南和用户手册,帮助理解如何使用JMX进行管理操作。 JMX的应用场景广泛,例如监控服务器性能指标、配置应用参数、自动化运维任务等。通过JMX,开发者可以创建自定义的MBeans...
**JBOSS 4.2.2GA 使用指南** JBOSS是一款开源的企业级Java应用服务器,基于Java 2企业版(J2EE)规范。JBOSS 4.2.2GA是其一个特定的稳定版本,发布于2007年,提供了一个全面的平台来部署和管理各种Java应用程序和...
《JMX技术详解与实践指南》 Java Management Extensions(JMX)是Java平台提供的一种用于管理系统和服务的标准框架。它允许开发者创建、管理和监控应用程序、设备和服务的管理接口,从而实现远程管理和配置。JMX的...