标准MBean和动态MBean之间有什么区别?
答
标准mbean具有固定的元数据,它在MBean的生命周期中不会更改。动态MBean动态定义其元数据,并可以修改和重新发布他们的元数据。想一下这个[非常]人为的Java类比:假设你编写了一个列出目录中文件数量的类。标准的类方法可能是:
public int getFileCount(String directoryName)
在另一方面,这个类的动态MBean的版本将没有方法开始,但是当它启动时,它会扫描目录可用,并创建一个每个目录的新方法发现:
public int getFileCountDir1();
public int getFileCountDir2();
....
public int getFileCountDirN();
所以这不是一个非常有用的设置,但假设你想创建一个显示所有的JVM的系统属性的MBean。那么......系统属性会改变......并且没有合理的方法来知道哪些属性键会提前定义,以便更好地表示Dynamic MBean的优点。
的优点和利弊真的归结为:
- 标准MBean很容易创建,和现有的类的实例可以被包装和暴露为标准MBean。
- 动态MBean在服务于有用的目的时很酷,但它们实现起来更加可行。