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