gpt4 book ai didi

java - JMX MBeanInfo 和描述符

转载 作者:行者123 更新时间:2023-12-01 13:49:48 25 4
gpt4 key购买 nike

我正在努力了解如何利用/使用 MBeanInfo (以及相关的 MBeanAttributeInfoModelMBeanInfo 等)及其相关内容描述符

据我所知,MBean*Info 就像一个 Class 对象,包含有关可用方法/属性/构造函数等的信息。另外,据我所知,这些信息是不可变的,是在 MBeanServer.registerMBean 或使用 StandardMBean 类的过程中为我们生成的(也许 MBeanServer 实际上使用了 StandardMbean 类?)它使用反射来生成此信息。这或多或少是正确的吗?

此外,我猜想存在一个 ModelMBean 的概念,我们可以通过编程方式将我们自己的 MBeanInfo 传递给它。如果可以通过带有反射的 StandardMbean 实现相同的目的,那么这样做有什么意义?

最后,描述符被放置到位,允许用户通过以描述符的形式提供(名称,值)对来扩展 mbean 上的信息。它可以附加到任何 MBean*Info 类(构造函数、属性、操作等)。但是,它可以在 Info 对象的构造期间附加,因为它是不可变的。因此,使用 StandardMbean 自行生成此信息,无法注入(inject)额外信息,因为我们从 MBeanInfo 获取的描述符也是不可变的......我在这里错过了什么吗?向 MBean 上的构造函数/字段/方法的描述符添加额外信息的简单方法是什么?

最佳答案

... this information is immutable and generated for us in the process of MBeanServer.registerMBean or using StandardMBean class ... which uses reflection to generate this information. Is this more or less correct?

是的。构建有关 bean 的信息,然后向服务器注册,以便可以将其发布到客户端。不确定 MBeanServer 是否在幕后创建了 StandardMBean

What is the point of doing so if the same can be achieved via a StandardMbean with reflection?

MBean*Info 类允许您以编程方式发布到具体类型的 JMX 映射,无需接口(interface)/实现。这使得 Spring 等外部包能够检测和发布 JMX bean,这些 JMX bean 可以调用已发现的具有特殊 @ManagedResource 属性的 bean。

这也是我的SimpleJMX package的方式能够发布带有注释的bean。您所需要做的就是将以下内容添加到您的一个类中,SimpleJMX 以编程方式创建描述该类的 MbeanInfo 实例。您不需要自己定义 JMX 接口(interface)/impl。

@JmxResource(description = "Lookup cache", domainName = "j256")
public class LookupCache {

@JmxAttributeField(description = "Number of hits in the cache")
private int hitCount;
...

在内部,SimpleJMX 创建其实现 javax.management.DynamicMBean 的类的实例。该接口(interface)公开了 get、set、invoke 操作方法。它还返回描述 JMX 发布类的 MBeanInfo

Am I missing something here? What would be the easy way to add extra information to descriptors of contructors/fields/methods on a MBean?

我没有将DescriptorsSimpleJMX一起使用,所以我不知道它们是如何使用的。它们看起来是有关方法或参数的元信息,例如 deprecateddefaultValue 等。这似乎也是不可变的静态信息。

关于java - JMX MBeanInfo 和描述符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20050127/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com