Java 标准MBean和动态MBean之间的区别是什么?

Java 标准MBean和动态MBean之间的区别是什么?,java,jmx,mbeans,Java,Jmx,Mbeans,以下两者之间的区别是什么: 标准MBean 动态MBean 每个组件的优点和缺点是什么?我们什么时候应该选择这两个组件中的任何一个来管理资源?标准mbean具有固定的元数据,在mbean的生命周期内不会更改。动态MBean动态定义元数据,并可以修改和重新发布元数据。想想这个(糟糕的)Java类比:假设您编写了一个类,其中列出了目录中的文件数。标准类方法可能如下所示: public int getFileCount(String directoryName) 另一方面,该类的动态MBean版本将不

以下两者之间的区别是什么:

  • 标准MBean
  • 动态MBean

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

    标准mbean具有固定的元数据,在mbean的生命周期内不会更改。动态MBean动态定义元数据,并可以修改和重新发布元数据。想想这个(糟糕的)Java类比:假设您编写了一个类,其中列出了目录中的文件数。标准类方法可能如下所示:

    public int getFileCount(String directoryName)

    另一方面,该类的动态MBean版本将不使用任何方法启动,但在启动时,它会扫描可用的目录,并为找到的每个目录创建一个新方法:

    public int getFileCountDir1();
    public int getFileCountDir2();
    ....
    public int getFileCountDirN();
    
    所以这不是一个非常有用的设置,但是假设您想要创建一个显示所有JVM系统属性的MBean。好。。。。系统属性更改。。。而且没有合理的方法知道哪些属性键将提前定义,因此这将更好地表示动态MBean的用途

    利与弊实际上归结为:

  • 标准MBean易于创建,现有的类实例可以包装并公开为标准MBean
  • 当动态MBean服务于一个有用的目的时,它们是很酷的,但是它们的实现要付出更多的努力