标准MBean和动态MBean之间有什么区别?

时间:2013-04-25 12:32:09

标签: java jmx mbeans

有什么不同:

  1. 标准MBean
  2. 动态MBean
  3. 我们应该选择这两个组件中的任何一个来管理资源,各自的优缺点是什么?

1 个答案:

答案 0 :(得分:9)

标准mbean具有固定的元数据,这些元数据在MBean的生命周期内不会发生变化。动态MBean动态定义其元数据,并可以修改和重新发布其元数据。想想这个[非常]人为的类比Java:假设你写了一个列出目录中文件数量的类。标准类方法可能如下所示:

public int getFileCount(String directoryName)

另一方面,此类的Dynamic MBean版本将从没有方法开始,但是当它启动时,它会扫描可用的目录,并为找到的每个目录创建一个新方法:

public int getFileCountDir1();
public int getFileCountDir2();
....
public int getFileCountDirN();

所以这不是一个非常有用的设置,但假设你想创建一个显示所有JVM系统属性的MBean。嗯......系统属性改变了......并且没有合理的方法知道哪些属性键会提前定义,这样可以更好地表示动态MBean的用途。

利弊真的归结为:

  1. 标准MBean易于创建,现有的类实例可以作为标准mbeans进行包装和公开。
  2. 动态MBean在用于实用目的时很酷,但它们实施的工作量要大得多。