分享
 
 
 

javax.management

王朝百科·作者佚名  2010-02-16
窄屏简体版  字體: |||超大  

软件包 javax.management 的描述

提供 Java Management Extensions 的核心类。

Java Management Extensions (JMXTM) API 是一个用于管理和监视的标准 API。典型用途包括:

查询并更改应用程序配置

累积有关应用程序行为的统计并使其可用

通知状态更改及错误状况。

JMX API 还可以作为解决方案的一部分来管理系统、网络等。

API 包括远程访问,因此,远程管理程序可以基于这些目的与正在运行的应用程序交互。

MBeans

JMX API 的基本概念是 MBean。MBean 是表示资源的指定托管对象。它有一个管理接口,包括以下内容:

可以读取和/或写入的指定名称和类型的属性

可以调用的指定名称和类型的操作

可以由 MBean 发送的指定类型的通知。

例如,一个表示应用程序配置的 MBean 可以有一些表示不同配置项的属性。读取 CacheSize 属性可以返回该项的当前值。写入该属性可以更新该项,从而可能会更改正在运行的应用程序的行为。诸如 save 之类的操作可以持久保存当前配置。每次更改配置时都会发送 ConfigurationChangedNotification 之类的通知。

在 JMX API 的标准用法中,MBeans 可以像 Java 对象那样来实现。不过,如下所述,通常不直接引用这些对象。

Standard MBean

为了使 MBean 实现简单化,JMX API 包括Standard MBean 这一概念。Standard MBean 的属性和操作来源于 Java 接口,使用特定的命名模式,与 JavaBeansTM 使用的属性和操作类似。例如,假定有如下这个接口:

public interface ConfigurationMBean {

public int getCacheSize();

public void setCacheSize(int size);

public long getLastChangedTime();

public void save();

}

方法 getCacheSize 和 setCacheSize 定义了名为 CacheSize 的类型 int 的读写属性(首字母大写,这与 JavaBeans 惯例不同)。

方法 getLastChangedTime 定义了名为 LastChangedTime 的类型 long 的属性。这是一种只读属性,原因是没有方法 setLastChangedTime。

方法 save 定义了名为 save 的操作。它不是属性,原因是它的名称没有以 get、set 或 is 开头。

Standard MBeans 的准确命名模式将在 JMX 规范中详述。

制做作为带有此管理接口的 MBean 的 Java 对象有两种方法。一种用于具有与 Java 接口完全相同的名称、但没有 MBean 后缀的类的对象。因此,在该示例中,对象将是类 Configuration 的对象,与 ConfigurationMBean 在相同的 Java 包中。第二种方法是使用 StandardMBean 类。

Dynamic MBean

Dynamic MBean 是一种在运行时定义其管理接口的 MBean。例如,配置 MBean 可以通过解析 XML 文件来确定它所公开的属性名称和类型。

任何实现 DynamicMBean 接口的类的 Java 对象都是 Dynamic MBean。

Open MBean

Open MBean 是一种 Dynamic MBean,在此属性类型和操作参数类型以及返回值都使用一个预定义 Java 类的小集合来构建。Open MBean 使用其远程管理程序加快了操作,这些远程管理程序不必使用特定于应用程序的类型,其中包括非 Java 程序。Open MBean 由包 javax.management.openmbean 定义。

Model MBean

Model MBean 是一种 Dynamic MBean,它充当管理接口和基础托管资源之间的桥梁。管理接口和托管资源都被指定为 Java 对象。相同的 Model MBean 实现可以重复多次用于不同的管理接口和托管资源,并且还可以提供诸如持久性和缓存之类的共有功能。Model MBean 由包javax.management.modelmbean定义。

MBean 服务器

要想让 MBean 有用,必须在 MBean 服务器中注册它。MBean 服务器是一个 MBean 存储库。通常情况下,只能通过 MBean 服务器访问 MBean。换句话说,代码不再直接访问实现 MBean 的 Java 对象,而是通过 MBean 服务器根据名称访问该 MBean。每个 MBean 在 MBean 服务器内都有一个由 ObjectName 类定义的惟一名称。

MBean 服务器是一个实现了接口 MBeanServer 的对象。从 J2SE 1.5 开始,将提供平台 MBean 服务器。这是可以由在相同 Java 虚拟机内运行的不同托管组件共享的单个 MBean 服务器。平台 MBean 服务器可以通过方法 ManagementFactory.getPlatformMBeanServer() 访问。

使用 MBeanServerFactory 类,应用程序代码还可以创建一个新的 MBean 服务器,或者访问已经创建的 MBean 服务器。

在 MBean 服务器中创建 MBean

创建 MBean 有两种方法。一种方法是构造将作为 MBean 的 Java 对象,然后使用 registerMBean 方法将其在 MBean 服务器注册。另一种方法是使用其中一个 createMBean 方法在单一操作中创建并注册 MBean。

registerMBean 方法对于本地使用较为简单,但不能远程使用。createMBean 方法可以远程使用,但有时需要注意类加载问题。

如果实现了 MBeanRegistration 接口,则 MBean 可以在向 MBean 服务器注册或从中注销时执行操作。

在 MBean 服务器中访问 MBean

给定一个 ObjectName name 和一个 MBeanServer mbs,便可以访问一些属性和操作,如此例:

int cacheSize = mbs.getAttribute(name, "CacheSize");

Attribute newCacheSize =

new Attribute("CacheSize", new Integer(2000));

mbs.setAttribute(name, newCacheSize);

mbs.invoke(name, "save", new Object[0], new Class[0]);

另外,如果您有一个与 MBean 管理接口对应的 Java 接口,则您可以使用 MBean 代理,如下所示:

ConfigurationMBean conf = (ConfigurationMBean)

MBeanServerInvocationHandler.newProxyInstance(mbs,

name,

ConfigurationMBean.class,

false);

int cacheSize = conf.getCacheSize();

conf.setCacheSize(2000);

conf.save();

使用 MBean 代理只是为了方便。与第一个示例相同,第二个示例的结尾同样调用了 MBeanServer 操作。

可以通过查询 MBean 服务器查找其名称与特定模式匹配和/或其属性满足特定约束的 MBean。名称模式可以使用 ObjectName 类构造,而约束可以使用 Query 类构造。然后方法 queryNames 和 queryMBeans 将执行查询。

通知

通知 是 Notification 类或子类的一个实例。除其 Java 类之外,它还有一个可以将它与相同类的其他通知区分开的类型 字符串。

一个将发送通知的 MBean 必须实现 NotificationBroadcaster 或 NotificationEmitter 接口。通常情况下,它通过创建 NotificationBroadcasterSupport 子类或委派该类的一个实例来实现这一点。

通知可以由侦听器 接收,该侦听器是一个实现了 NotificationListener 接口的对象。可以使用方法 javax.management.MBeanServer#addNotificationListener(ObjectName、NotificationListener、NotificationFilter、Object) 将侦听器添加到 MBean 中。可以选择向此方法提供过滤器,以便只选择感兴趣的通知。过滤器是一个实现了 NotificationFilter 接口的对象。

MBean 可以是由同一个 MBean 服务器中的其他 MBean 发出的通知的侦听器。在此情况下,它实现 NotificationListener,并使用方法 javax.management.MBeanServer#addNotificationListener(ObjectName、ObjectName、NotificationFilter、Object) 来侦听。

远程访问 MBean

可以通过连接器 远程访问 Bean 服务器。连接器允许远程 Java 应用程序以实质上与本地 Java 应用程序相同的方式访问 MBean 服务器。包 javax.management.remote 定义连接器。

JMX 规范还定义了适配器 的概念。适配器可以在协议中(如 SNMP 或 HTML )的请求和对 MBean 服务器的访问之间进行转换。所以,像 SNMP GET 这样的操作可能会导致对 MBean 服务器 getAttribute。

包规范

JMX API 规范,1.2 版

从以下版本开始:

1.5

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有