Az MBean és MXBean felületnek nyilvánosnak kell lennie

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:

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.