gpt4 book ai didi

java - 如何获取spring已经向jmx注册的bean?

转载 作者:行者123 更新时间:2023-12-01 14:19:35 25 4
gpt4 key购买 nike

有没有办法获取spring已向mbeanserver注册的bean实例列表?

我看到您可以在 MBeanExporter 上注册 MBeanExporterListener,但这仅告诉我注册 bean 的 ObjectName。我可以在某处使用该 ObjectName 来获取已注册对象的实例吗?

我发现一个选择可能是子类化 MBeanExporter,但我真的不想这样做,除非必须这样做。

谢谢。

最佳答案

我测试了示例代码如下

    // Get the Platform MBean Server
MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
// Construct the ObjectName for the MBean we will register
ObjectName name = new ObjectName("com.example.mbeans:type=Hello");
// Create the Hello World MBean
Hello mbean = new Hello();
// Register the Hello World MBean
mbs.registerMBean(mbean, name);

Set<ObjectInstance> instances = mbs.queryMBeans(name, null);
ObjectInstance instance = (ObjectInstance) instances.toArray()[0];
System.out.println("Class Name:t" + instance.getClassName());
System.out.println("Object Name:t" + instance.getObjectName());

// Wait forever
System.out.println("Waiting forever...");
Thread.sleep(Long.MAX_VALUE);

当然还有接口(interface)HelloMBean

class Hello extends NotificationBroadcasterSupport implements HelloMBean

输出为

Class Name:tcom.example.mbeans.Hello
Object Name:tcom.example.mbeans:type=Hello
Waiting forever...

希望这有帮助!

更新:

公共(public)类 ObjectInstance 扩展了 Object 实现了可序列化。 ObjectInstance 表示 MBean 的对象名称及其类名称。我们无法检索对象本身的引用。

我想对注册的mbean进行操作的唯一方法是使用JMS/RMI连接器(或HTML适配器)来获取mbaean服务器的连接,使用与注册的mbean相对应的JMX.newMBeanProxy创建mbaen代理并调用其上的方法。

关于java - 如何获取spring已经向jmx注册的bean?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17738410/

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