gpt4 book ai didi

java - 是否可以使用 JMX 在一个中央 MBean 服务器中注册或显示来自不同 VM 的 MBean?

转载 作者:搜寻专家 更新时间:2023-11-01 02:51:51 25 4
gpt4 key购买 nike

我正在寻找一种解决方案,以便从中央 MBean 服务器中的不同 Java VM 注册 MBean 或整个 MBean 服务器本身,该服务器也应该在单独的 VM 中运行。目标是只有一个中央 MBean 服务器,它包含整个系统的所有 MBean。一个额外的要求是,这就是困难所在 :-),即“客户端”MBean 服务器必须连接/注册到中央 MBean 服务器,而不是其他方式。中央 MBean Server 不需要了解“客户端”MBean Server 的任何知识即可注册。

我只找到了 JMX 示例,其中“主”MBean 服务器连接到“客户端”MBean 服务器并获取它们注册的 MBean,但不是其他方式。不幸的是,用于注册您自己的 MBean 的 registerMBean() 方法仅适用于本地 MBean 服务器,而不适用于 MBeanServerConnection 上的远程 MBean 服务器。在那里,只能使用 createMbean() 方法,这里的问题是,它可以在远程 MBean Server 中注册 MBean,但是您必须在远程 MBean Server 中使用不同的对象,一个本地对象和另一个对象。所以现在的问题是,当本地对象发生某些变化时,变化只是在那里,远程 MBean Server 中注册的 MBean 没有得到这些变化(变量的新值......)。到目前为止,我唯一的解决方案是创建一个循环以注销远程服务器中的 MBean 并创建新的 MBean,以获取对象的实际值。那非常丑陋,而且对性能也不太好。

我希望有人能给我提示,我怎样才能更好地做到这一点。

最佳答案

OpenDMK使用级联服务 提供了完成此操作的完整方法。来自文档:

The cascading service enables you to access the MBeans of a subagent directly through the MBean server of a master agent. The cascading service has been completely overhauled in Java Dynamic Management Kit (Java DMK) 5.1 to allow it to operate over the connector protocols defined by the Java Management Extensions (JMX) Remote API. The legacy cascading service is now deprecated. The examples of the legacy cascading service have been retained in Chapter 25, for reasons of backwards compatibility. However, when using legacy Java DMK connectors, you should use the new CasdingServiceMBean with wrapped legacy connectors rather than relying on the deprecated legacy cascading agent API.

这个库中有一些有趣的零碎部分,它们将被归化到 JMX 2.0 中的标准 Java SE 中。我认为级联服务就是其中之一。一旦您理解了它的工作原理,您可能会得出结论,这是您可以自己实现的东西,尽管 OpenDMK 确实解决了几个棘手的极端情况。我不确定该项目有多活跃,但软件看起来很稳定。

您可以找到文档集 here .此外,我创建了包的 mavenized 项目构建 here .

//尼古拉斯

关于java - 是否可以使用 JMX 在一个中央 MBean 服务器中注册或显示来自不同 VM 的 MBean?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9710003/

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