JMX应该说是关于网络应用管理的的框架,如果你开发了一个比较复杂的系统,无疑你要提供这个系统的自身管理 系统,JMX更多应用是体现在Server上,如果你要使用java开发一个自己Server或复杂的应用系统,那么推荐你基于JMX架构来开发, JBoss 3.0 weblogic等就是基于JMX开发的符合J2EE规范的服务器软件。
了解JMX可以使你深入了解J2EE服务器, 为什么我们平时说 "EJB"是个比较"Weight"的方案选择,其中一个原因是J2EE服务器软件本身 也是你的系统中一部分,它作为你系统的容器,对你的系统有至关重要的作用,如果无法直接介入 管理或“调教”它,那么无疑你的系统本身存在着隐含的危险, 现在,通过JMX,你现在可以深入到你J2EE容器内部的管理了。 (好像国内出现了第一个自己J2ee服务器,不知道那是不是基于JMX开发的?)
J2EE并不能概括所有的应用领域,比如对速度和性能要求极高的游戏或股票行情等系统就需要自己直接来开发Server, 如果是能够基于JMX开发,那么可以说就大大提高编写管理程序的效率,可以将你的模块变成JMX的MBean,可以通过Agent在程序内部或者通过 WEB管理页面对你的MBean模块进行初始化 重启 以及参数设置。
JMX的好处还有:可以方便整合连接现有的Java技术,如JNDI JDBC JTS及其它。特别是能够使用Jini的查询 发现机制以及协议,我们知道,Jini提供了一种服务的查询和发现机制,这些services都可以通过JMX 来实现管理。
现在我们开始JMX的了解:
1.到java.sun.com首页的JMX页面,下载JMX的规定说明和Samples程序。
2.按照JMX的说明进行一次Tutorial,了解如何加入删除 配置一个MBean,Tutorial中是以SimpleMBean为例,那么我们能否建立一个自己的MBean?
我们来做一个Hello 的MBean,这里有一个小关键点,你的class取名有个规则, 需要以MBean为结尾,如这里我们取名为HelloMbean:
public interface HelloMBean {
// management attributes
public String getName();
public void setName(String name);
// management operations
public void print();
}
在这个Class里,有一个隐含attributes: name, 提供了set和get的方法,同时有一个操作方法print():
再定义一个concrete类:
public class Hello implements HelloMBean {
private String name = "";
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void print() {
System.out.println("Hello, " + name + "!!" );
}
}
这样一个简单的MBean就做好了,我们可以通过admin界面加入这个Hello,
再按 Tutorial启动BaseAgent,在Agent Administration中参考Simple填入:
Domain: Standard_Hello_MBeans
Keys : name=Hello,number=1
Java Class: Hello
将出现Create Successful信息。进入MBean View 给Name赋值,点按Apply ,然后再按print,这是你的Hello中的方法,在控制台你会看到输出。
是不是很惊奇Hello中的 attributes 和operations能被动态的访问和控制? 已经隐约感到JMX的架构原理了吧?
下面再深入明确一些概念:
上面HelloMBean资源是通过admin这样的HTTP WEB界面管理,这种管理资源方式是属于JMX的Distributed服务层, JMX 通过Distributed层能够部署和管理MBean资源。就象上面的例子,是通过HtmlAdaptor提供的HTTP WEB界面来方面的维护管理HelloMBean.
那么我们能否在程序中自动管理和部署我的MBean?当然可以,这是通过Agent层来完成,现在我们已经有了这个层次,MBean所在的资源层,
最外面的Distributed服务层,Distributed服务层是通过Agent层来访问MBean资源的,看看下面来自Sun公司JMX规定的架构图:
从图中看出,Agent Level(Agent层)包括MBean Server和Agent Services,那么我们来做一个上面例子HelloMBean的Agent:
// CREATE the MBeanServer
//
System.out.println("\n\tCREATE the MBeanServer.");
MBeanServer server = MBeanServerFactory.createMBeanServer();
// CREATE Registe HelloMBean
//
System.out.println("\n\tCREATE, REGISTER a new Hello Standard_MBean:");
HelloMBean helloMBean = new Hello();
ObjectName hello_name = null;
try {
hello_name = new ObjectName("Standard_Hello_MBeans:name=Hello,number=1");
System.out.println("\tOBJECT NAME = " + hello_name);
//将HelloMBean注册到MBeanServer中去
server.registerMBean(helloMBean, hello_name);
}
catch (Exception e) {
e.printStackTrace();
return;
}
向MBeanServer注册后,以后JMX就知道有了这个HelloMBean资源。
管理一个agent的MBean资源或使用它提供的服务必须通过一个protocol adaptor 或者connector,adaptor 或者connector属于Distributed layer level(Distributed服务层),我们上面例子中通过HTTP WEB界面管理HelloMBean就是浏览器通过HtmlAdaptor这个adaptor来实现的。
通过本篇文章,你应该大体了解了JMX的架构和一些原理和应用,再深入可以研究SUN的JMX Specification.
分享到:
相关推荐
在JMX架构中,MBean(Managed Bean)扮演着核心角色。MBean就像JavaBean一样,封装了可管理资源的状态和操作,使得管理工具可以通过JMX接口与之交互。JMX支持四种类型的MBean:Standard MBean、Dynamic MBean、Open ...
在JMX架构中,主要有三个关键组件:MBeans(Managed Beans)、Servers和Agents。MBeans代表了被管理的资源或服务,它们是JMX的核心对象,提供了操作和获取状态的方法。服务器(Server)是托管MBeans的地方,而代理...
2. **MBean Server**: 所有MBeans都在MBean Server中注册,这个服务器是JMX架构的中心,负责创建、注册和管理MBeans。 3. **Management Clients**: 这些是使用JMX API与MBean Server交互的应用程序。在本项目中,...
JMX架构的核心思想在于将被管理的资源抽象为模型化组件(Managed Beans,简称MBeans),并通过代理(Agent)层进行统一管理。JMX定义了三层架构:设备层、代理层和部署服务层,每一层都有自己的组件和服务,共同构成...
JMX架构由管理代理(MBeans)、服务提供者接口(MBean Server)和管理客户端三部分组成。MBeans代表可管理的对象,它们可以是简单的数据点或复杂的系统服务。MBean Server是一个运行在Java虚拟机中的核心组件,它...
MBean服务器是JMX架构的核心,它存储和管理MBeans,处理MBean之间的交互。代理则允许远程访问MBean服务器,使得在不同网络环境下的系统间可以进行管理操作。 在jmxdemo中,服务端部分通常会实现MBeans,注册它们到...
2. MBean Server:MBean服务器是JMX架构的核心,负责管理MBeans,处理MBean之间的交互,并提供与外部系统的接口。 3. JMX Connectors:JMX连接器允许客户端与MBean服务器通信,支持RMI、HTTP、HTTPS等多种协议。 4...
图二进一步细化了JMX架构,显示了不同类型的连接器如HTTP、RMI和SNMP如何接入JMX Agent。 通过了解这些基础知识,开发者可以开始构建自己的JMX解决方案,监控和管理Java应用,提升系统的可维护性和可扩展性。例如,...
MBean服务器是JMX架构的核心,它负责注册、存储和管理MBeans。最后,代理允许远程访问和管理MBeans,使你能够在不同的网络环境中跨进程或跨机器管理资源。 JMX使用三种类型的MBeans:标准MBeans、动态MBeans和模型...
MBeans可以通过MBeanServer注册,MBeanServer是JMX架构中的关键组件,负责创建、查找、查询和操作MBeans。 **JBoss JMX实现架构** JBoss是一个流行的开源Java应用程序服务器,它利用JMX进行管理和监控。在JBoss 3....
2. **MBean服务器**:MBean服务器是JMX架构的一部分,它负责注册和管理MBeans。在Java中,`com.sun.jmx.mbeanserver.JMXMBeanServer`类提供了一个默认的MBean服务器。 3. **注册MBean**:为了使MBean可供管理,我们...
Oracle Corporation提供的JDK11 Java管理扩展指南涵盖了JMX架构、MBean Server、MBean、JMX连接器等方面的详细信息,帮助开发人员快速了解JMX技术。 此外,JDK11 Java管理扩展指南还提供了详细的 license agreement...
因此,这份中文版的 JMX 1.4 规范文档对于那些希望深入了解 JMX 的中国开发者来说是非常宝贵的。 #### 二、JMX 架构概述 JMX 的架构主要由三个层次组成: 1. **设备层**:这是 JMX 架构中最底层的部分,负责处理...
JMX架构由三个主要部分或层组成,共同提供Java管理解决方案。这三个层次如表2.1所示: **表2.1 JMX组件的三个层次** 1. **仪表层(Instrumentation Layer)**:包含MBeans及其可管理的资源。MBeans(Managed Beans...
MBeanServer是JMX架构的核心,它负责管理MBeans,并提供查询、通知和远程访问等功能。 "jmx-1_2_1-bin"可能是JMX工具的特定版本,这里的"1_2_1"表示版本号。通常,这种命名格式表明这是一个二进制发行版,包含了...
代理层是JMX架构中的中间件,它负责收集来自被管理资源的信息,并将管理信息提供给管理应用程序。代理可以分为三类:仪器级(Instrumentation Level)、代理级(Agent Level)和服务级(Distributed Services Level...
2. **MBean Server**:MBean Server是JMX架构的核心,它负责注册、管理和操作MBean。MBean Server提供了一个统一的接口,使得管理工具可以与各种MBean进行交互。 3. **MBean操作和属性**:每个MBean都有一系列的...
2. **MBean Server**:MBean服务器是JMX架构的核心,它负责注册和管理MBeans,处理客户端请求,并执行对MBeans的操作。 3. **Management Interfaces**:这些接口定义了MBean的属性、操作和通知,使得管理者可以控制...
4. **插件式架构**: JMX可用于构建插件式系统,通过MBeans注册插件,实现灵活的扩展和替换。 **源码分析** 理解JMX的源码有助于更深入地掌握其工作原理。例如,你可以研究MBeanServer的实现,了解它如何注册和查找...