MBean 和 MXBean 接口必须为公共接口

Java 8 为用于创建 MBean 或 MXBean 的接口引入了可视性要求的行为更改。所有 MBean 和 MXBean 接口都必须为公共接口。 在 Java 8 之前,虽然规范定义了接口应该为公共接口,但也允许使用非公共接口。

设置 jdk.jmx.mbeans.allowNonPublic 系统属性会将管理子系统还原为使用旧的行为,从而允许使用非公共管理接口。该属性被视为过渡属性,并且可能会在后续发行版中移除。

为了检测非公共 MBean 和 MXBean 接口,将在 Java 代码中标记以下情况:

因为以 MBean 结束 MBean 接口名称是约定而不是要求,所以当您创建管理 bean 时,还将标记对 MBeanServer registerMBeancreateMBean方法的任何调用以突出显示此 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 registerMBeancreateMBean 方法的调用,以在未标记接口的情况下 突出显示行为更改。

有关其他信息,请参阅 Package javax.management Java 文档。