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

问题描述:

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

  • 动态MBean
  • 各有什么利弊,我们何时应该选择这两种组件来管理资源

    1. 标准MBean?

    标准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在服务于有用的目的时很酷,但它们实现起来更加可行。