Las interfaces MBean y MXBean deben ser públicas

En Java 8 hay un cambio de comportamiento respecto a los requisitos de visibilidad para las interfaces utilizadas para crear MBeans o MXBeans. Todas las interfaces MBean y MXBean deben ser públicas. En las versiones anteriores a Java 8, estaban permitidas las interfaces no públicas, aunque la especificación definía que deben ser públicas.

Cuando se establece la propiedad del sistema jdk.jmx.mbeans.allowNonPublic, el subsistema de gestión adopta de nuevo el comportamiento antiguo, y se permite el uso de interfaces de gestión no públicas. Esta propiedad se considera que es de transición y podría eliminarse en releases subsiguientes.

Para detectar interfaces MBean y MXBean no públicas, se señalan las situaciones siguientes en el código Java:

Debido a que finalizar el nombre de la interfaz MBean con MBean es un convenio más que un requisito, también se marcan todas las invocaciones de los métodos MBeanServer registerMBean y createMBean para resaltar esta diferencia de Java 8 cuando crea beans de gestión. Si sus interfaces de bean de gestión no siguen los convenios indicados anteriormente, verifique manualmente que utilizan interfaces de tipo public.

Los ejemplos siguientes muestran interfaces no públicas que están señaladas por esta regla.

    interface Example1MBean {}

    interface Example2MXBean {}

    @MXBean
    interface Example3Interface {}

    @MXBean(true)
    interface Example4Interface {}

Los ejemplos siguientes muestran interfaces que no son señaladas por la regla debido a que son públicas o están anotadas como distintas de MXBean.

    public interface Example5MBean{}

    public interface Example6MXBean{}

    @MXBean(false)
    interface Example7MXBean {}

Esta regla tiene un arreglo automatizado que establece la visibilidad de la interfaz en public. Copie la configuración personalizada en el archivo de compilación de la aplicación para habilitar la automatización de arreglos.

Las llamadas a los métodos MBeanServer registerMBean y createMBean solo se marcan para resaltar el cambio de comportamiento en caso de que las interfaces no estén marcadas.

Para obtener más información, consulte la documentación de Java de Package javax.management.