为什么Java的MBean存在?什么是MBeans的Python等价物?或者它们只存在于Java中?

时间:2013-08-14 20:36:33

标签: java jmx mbeans

我试图理解为什么MBeans在Java中是如此重要,而我不记得任何其他语言都有这样的范例或模式。

那么为什么MBean存在,他们试图解决什么问题,以及其他语言如何解决这个问题呢? (我更喜欢与Python比较,因为我理解最好的)

2 个答案:

答案 0 :(得分:1)

java中的MBean是一种管理应用程序的方法。假设您要查看方法执行所需的时间,或者您想要调整记录器设置或更改配置属性。通过MBeanServer的MBean允许您在应用程序中提供钩子来执行此操作。您需要创建然后连接MBean,然后将它们注册到MBean服务器中,然后将它们公开以进行管理操作(基本上是从/向您的mbean读/写数据)。 JConsole(随jvm一起提供)允许您远程或本地连接并执行mbean上的调用。还有大量使用JMX的工具(New Relic和其他管理工具可能使用它)。它们特定于Java,但其他语言可能有类似的对应物(不幸的是,我在Java之外没有太多的知识)。

答案 1 :(得分:0)

MBean不是一种"设计模式"。 MBean是JMX的一部分接口标准。它在JMX之外没有任何意义。除非JMX在其他语言中定义了API绑定,否则在其他语言中没有直接的等价物,但它没有。

它们存在的原因是因为JMX定义用于处理这些对象的通用接口标准是谨慎的。

他们打算解决的问题是提供JMX可以使用的一致标准化界面。

在其他语言中可能存在具有与JMX类似功能的绑定的API,但它们不会使用MBean,它们会使用其他API中定义的任何内容。

如果您不使用JMX,那么使用MBean是没有意义的。事实上,如果你不使用JMX,你可以说,即使你打电话给某个" MBean",它在概念上也不会是一个。