【发布时间】:2013-04-25 12:32:08
【问题描述】:
两者有什么区别:
- 标准 MBean
- 动态 MBean
各自的优缺点是什么?我们应该何时选择这两个组件中的任何一个来管理资源?
【问题讨论】:
两者有什么区别:
各自的优缺点是什么?我们应该何时选择这两个组件中的任何一个来管理资源?
【问题讨论】:
标准 mbean 具有固定的元数据,在 MBean 的生命周期内不会更改。动态 MBean 动态定义它们的元数据,并且可以修改和重新发布它们的元数据。想想这个[糟糕]人为的Java类比:假设您编写了一个列出目录中文件数量的类。标准的类方法可能如下所示:
public int getFileCount(String directoryName)
另一方面,这个类的 Dynamic MBean 版本会从没有方法开始,但是当它启动时,它会扫描可用的目录,并为找到的每个目录创建一个新方法:
public int getFileCountDir1();
public int getFileCountDir2();
....
public int getFileCountDirN();
所以这不是一个非常有用的设置,但假设您想创建一个显示所有 JVM 系统属性的 MBean。嗯……系统属性发生了变化……并且没有合理的方法可以提前知道哪些属性键将被定义,因此这将更好地表示动态 MBean 的优点。
利弊归结为:
【讨论】: