2013-04-25 78 views

回答

7

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

public int getFileCount(String directoryName)

在另一方面,这个类的动态MBean的版本将没有方法开始,但是当它启动时,它会扫描目录可用,并创建一个每个目录的新方法发现:

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

所以这不是一个非常有用的设置,但假设你想创建一个显示所有的JVM的系统属性的MBean。那么......系统属性会改变......并且没有合理的方法来知道哪些属性键会提前定义,以便更好地表示Dynamic MBean的优点。

的优点和利弊真的归结为:

  1. 标准MBean很容易创建,和现有的类的实例可以被包装和暴露为标准MBean。
  2. 动态MBean在服务于有用的目的时很酷,但它们实现起来更加可行。
相关问题