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:
@MXBean@MXBean(true)MXBeanMBean
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.