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 rápido que establece la visibilidad de la interfaz
en public.
No existe ningún arreglo rápido para las llamadas a los métodos
MBeanServer registerMBean y createMBean pues esos
métodos se señalizan solamente para resaltar el cambio de comportamiento
si no se señalizan las interfaces.
Para obtener más información, consulte la documentación de Java de Package javax.management.