Interfeţele MBean şi MXBean trebuie să fie publice

Java 8 introduce o modificare de comportament pentru cerinţele de vizibilitate pentru interfeţele care sunt folosite pentru a crea MBean-uri sau MXBean-uri. Toate interfeţele MBean şi MXBean trebuie să fie publice. Anterior versiunii Java 8, au fost permise interfeţe non-publice, deşi caietul de sarcini a definit că ar trebui să fie publice.

Setarea proprietăţii de sistem jdk.jmx.mbeans.allowNonPublic face ca subsistemul de gestionare să folosească vechiul comportament, permiţând interfeţe de gestionare non-publice. Această proprietate este considerată a fi de tranziţie şi ar putea fi înlăturată în ediţiile ulterioare.

Pentru a detecta interfeţe non-publice MBean şi MXBean, sunt semnalate următoarele situaţii în codul Java:

Pentru că încheierea numelui de interfaţă MBean cu MBean este mai degrabă o convenţie decât o cerinţă, orice invocare a metodei MBeanServer registerMBean sau a metodei createMBean este de asemenea semnalată pentru a evidenţia această diferenţă de Java 8 când creaţi bean-urile de gestionare. Dacă interfeţele dumneavoastră de bean-uri de gestionare nu respectă convenţiile menţionate anterior, verificaţi manual că utilizează interfeţe public-e.

Următoarele exemple indică interfeţe non-publice care sunt semnalate de această regulă.

    interface Example1MBean {}

    interface Example2MXBean {}

    @MXBean
    interface Example3Interface {}

    @MXBean(true)
    interface Example4Interface {}

Următoarele exemple indică interfeţe care sunt semnalate de această regulă deoarece sunt deja publice sau sunt adnotate ca nefiind un MXBean.

    public interface Example5MBean{}

    public interface Example6MXBean{}

    @MXBean(false)
    interface Example7MXBean {}

Această regulă are un fix automat care stabilește vizibilitatea interfeței la public. Copiați configurația personalizată pe fișierul de build al aplicației pentru a activa automatizarea corectării.

Sunt semnalate apelurile la metodele MBeanServer registerMBean și createMBean doar pentru a evidenția modificarea de comportament în cazul în care interfețele nu sunt semnalate.

Pentru informaţii suplimentare, vedeţi documentaţia Java Package javax.management.