A Java 8 bevezet egy viselkedésváltozást az MBean vagy MXBean létrehozására szolgáló felületek láthatósági követelményeivel kapcsolatban. Az összes MBean és MXBean felületnek nyilvánosnak kell lennie. A Java 8 előtt a nem nyilvános felületek engedélyezettek voltak, habár a specifikáció azt határozta meg, hogy nyilvánosnak kellene lenniük.
A jdk.jmx.mbeans.allowNonPublic rendszertulajdonság
beállítása visszaállítja a felügyeleti alrendszert, hogy a régi
viselkedést használja, és engedélyezze a nem nyilvános felügyeleti
felületeket.
A tulajdonságot átmenetinek kell tekinteni és előfordulhat,
hogy eltávolításra kerül a későbbi kiadásokban.
A nem nyilvános MBean és MXBean felületek észleléséhez a következő helyzetek vannak megjelölve a Java kódban:
@MXBean annotációval ellátott nem nyilvános felületek@MXBean(true) annotációval ellátott nem nyilvános
felületekMXBean végződésű névvel rendelkező nem nyilvános
felületekMBean végződésű névvel rendelkező nem nyilvános
felületek
Mivel az MBean felület nevének MBean végződése inkább
megállapodás, mint követelmény, az MBeanServer registerMBean
vagy a createMBean metódusok is meg vannak jelölve annak
kiemeléséhez, hogy ez egy Java 8 különbség, amikor felügyeleti komponenseket hoz létre.
Ha a felügyeleti komponens felületek nem követik a korábban felsorolt
megállapodásokat, akkor kézzel ellenőrizze, hogy ezek public
módosítóval rendelkező felületek-e.
A következő példák a szabály által megjelölt nem nyilvános felületeket mutatnak be.
interface Example1MBean {}
interface Example2MXBean {}
@MXBean
interface Example3Interface {}
@MXBean(true)
interface Example4Interface {}
|
A következő példák olyan felületeket mutatnak be, amelyeket a szabály nem jelöl meg, mert már nyilvánosak, vagy meg vannak jelölve, mint nem MXBean-ek.
public interface Example5MBean{}
public interface Example6MXBean{}
@MXBean(false)
interface Example7MXBean {}
|
Ez a szabály rendelkezik egy automatikus javítást, amely beállítja a felület láthatóságát nyilvánosértékre. Másolja az egyéni konfigurációt az alkalmazás összeépítési fájljába a javítás automatizálásához.
Az MBeanServer registerMBean
és a createMBean
módszerek hívása csak azért van megjelölve, hogy kiemelje a viselkedésváltozást,
ha az interfészek nincsenek megjelölve.
További információkért tekintse meg a javax.management csomag Java dokumentációját.