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(" CREATE the MBeanServer.");
MBeanServer server = MBeanServerFactory.createMBeanServer();
// CREATE Registe HelloMBean
//
System.out.println(" CREATE, 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(" OBJECT 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定义了三层架构:设备层、代理层和部署服务层,每一层都有自己的组件和服务,共同构成...
MBean服务器是JMX架构的核心,它存储和管理MBeans,处理MBean之间的交互。代理则允许远程访问MBean服务器,使得在不同网络环境下的系统间可以进行管理操作。 在jmxdemo中,服务端部分通常会实现MBeans,注册它们到...
JMX架构由管理代理(MBeans)、服务提供者接口(MBean Server)和管理客户端三部分组成。MBeans代表可管理的对象,它们可以是简单的数据点或复杂的系统服务。MBean Server是一个运行在Java虚拟机中的核心组件,它...
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和模型...
MBean服务器是JMX架构的中心,它负责注册MBeans、查找MBeans、执行MBean的操作以及处理MBean之间的关系。一个Java虚拟机可以有一个或多个MBean服务器,而MBean服务器之间可以通过JMX连接器进行通信。 4. **JMX连接...
2. **MBean服务器**:MBean服务器是JMX架构的一部分,它负责注册和管理MBeans。在Java中,`com.sun.jmx.mbeanserver.JMXMBeanServer`类提供了一个默认的MBean服务器。 3. **注册MBean**:为了使MBean可供管理,我们...
因此,这份中文版的 JMX 1.4 规范文档对于那些希望深入了解 JMX 的中国开发者来说是非常宝贵的。 #### 二、JMX 架构概述 JMX 的架构主要由三个层次组成: 1. **设备层**:这是 JMX 架构中最底层的部分,负责处理...
JMX架构由三个主要部分或层组成,共同提供Java管理解决方案。这三个层次如表2.1所示: **表2.1 JMX组件的三个层次** 1. **仪表层(Instrumentation Layer)**:包含MBeans及其可管理的资源。MBeans(Managed Beans...
Oracle Corporation提供的JDK11 Java管理扩展指南涵盖了JMX架构、MBean Server、MBean、JMX连接器等方面的详细信息,帮助开发人员快速了解JMX技术。 此外,JDK11 Java管理扩展指南还提供了详细的 license agreement...
代理层是JMX架构中的中间件,它负责收集来自被管理资源的信息,并将管理信息提供给管理应用程序。代理可以分为三类:仪器级(Instrumentation Level)、代理级(Agent Level)和服务级(Distributed Services Level...
2. **MBean Server**:MBean Server是JMX架构的核心,它负责注册、管理和操作MBean。MBean Server提供了一个统一的接口,使得管理工具可以与各种MBean进行交互。 3. **MBean操作和属性**:每个MBean都有一系列的...
MBeanServer是JMX架构的核心,它负责管理MBeans,并提供查询、通知和远程访问等功能。 "jmx-1_2_1-bin"可能是JMX工具的特定版本,这里的"1_2_1"表示版本号。通常,这种命名格式表明这是一个二进制发行版,包含了...
2. **MBean Server**:MBean服务器是JMX架构的核心,它负责注册和管理MBeans,处理客户端请求,并执行对MBeans的操作。 3. **Management Interfaces**:这些接口定义了MBean的属性、操作和通知,使得管理者可以控制...
4. **插件式架构**: JMX可用于构建插件式系统,通过MBeans注册插件,实现灵活的扩展和替换。 **源码分析** 理解JMX的源码有助于更深入地掌握其工作原理。例如,你可以研究MBeanServer的实现,了解它如何注册和查找...