Java 8 为用于创建 MBean 或 MXBean 的接口引入了可视性要求的行为更改。所有 MBean 和 MXBean 接口都必须为公共接口。 在 Java 8 之前,虽然规范定义了接口应该为公共接口,但也允许使用非公共接口。
设置 jdk.jmx.mbeans.allowNonPublic 系统属性会将管理子系统还原为使用旧的行为,从而允许使用非公共管理接口。该属性被视为过渡属性,并且可能会在后续发行版中移除。
为了检测非公共 MBean 和 MXBean 接口,将在 Java 代码中标记以下情况:
@MXBean 注释的非公共接口@MXBean(true) 注释的非公共接口MXBean 结尾的非公共接口MBean 结尾的非公共接口
因为以 MBean 结束 MBean 接口名称是约定而不是要求,所以当您创建管理 bean 时,还将标记对 MBeanServer registerMBean 或 createMBean方法的任何调用以突出显示此 Java 8 差异。如果您的管理 bean 接口不遵循先前列出的约定,请手动验证这些接口是否使用 public 接口。
以下示例显示了此规则所标记的非公共接口。
interface Example1MBean {}
interface Example2MXBean {}
@MXBean
interface Example3Interface {}
@MXBean(true)
interface Example4Interface {}
|
以下示例显示了此规则不标记的接口(因为这些接口已经是公共接口或被注释为非 MXBean)。
public interface Example5MBean{}
public interface Example6MXBean{}
@MXBean(false)
interface Example7MXBean {}
|
此规则具有用于将接口可视性设置为 public的自动修订。 将定制配置复制到应用程序构建文件以启用修订自动化。
仅会标记对 MBeanServer registerMBean
和 createMBean
方法的调用,以在未标记接口的情况下
突出显示行为更改。
有关其他信息,请参阅 Package javax.management Java 文档。