10

有什么区别:

  1. 标准 MBean
  2. 动态 MBean

各自的优缺点是什么?我们何时应该选择这两个组件中的任何一个来管理资源?

4

1 回答 1

10

标准 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 易于创建,并且现有的类实例可以作为标准 mbean 进行包装和公开。
  2. 动态 MBean 在服务于有用的目的时很酷,但要实现它们要付出更多的努力。
于 2013-04-25T14:33:56.660 回答