Java 8 introduce un cambiamento del comportamento per i requisiti di visibilità delle interfacce utilizzate per creare MBean o MXBeans. Tutte le interfacce MBean e MXBean devono essere pubbliche. Prima di Java 8, le interfacce pubbliche erano consentite, anche se la specifica definiva che dovevano essere pubbliche.
L'impostazione della proprietà di sistema jdk.jmx.mbeans.allowNonPublic riporta il sottosistema di gestione all'utilizzo del precedente comportamento, consentendo l'utilizzo di interfacce di gestione non pubbliche.
Questa proprietà è considerata transitoria e potrebbe essere rimossa nelle prossime release.
Per rilevare le interfacce MBean e MXBean non pubbliche, nel codice Java vengono contrassegnate le seguenti situazioni:
@MXBean@MXBean(true)MXBeanMBean
Poiché il terminare il nome dell'interfaccia MBean con MBean rappresenta una convenzione piuttosto che un requisito, viene contrassegnato anche qualsiasi richiamo ai metodi MBeanServer registerMBean o createMBean per evidenziare questa differenza di Java 8 quando si creano bean di gestione.
Se le interfacce bean di gestione non seguono le convenzioni precedenti, verificare manualmente che usino le interfacce public.
Il seguente esempio riporta delle interfacce non pubbliche contrassegnate da questa regola.
interface Example1MBean {}
interface Example2MXBean {}
@MXBean
interface Example3Interface {}
@MXBean(true)
interface Example4Interface {}
|
I seguenti esempi mostrano le interfacce che non sono contrassegnate da questa regola perché sono già pubbliche o sono annotate come non un MXBean.
public interface Example5MBean{}
public interface Example6MXBean{}
@MXBean(false)
interface Example7MXBean {}
|
Questa regola ha una correzione automatizzata che imposta la visibilità dell'interfaccia su public. Copiare la configurazione personalizzata (custom configuration) nel file di build dell'applicazione per abilitare l'automazione delle correzioni.
Le chiamate a MBeanServer registerMBean
e ai metodi createMBean sono contrassegnate
solo per evidenziare la modifica del comportamento nel caso in cui
le interfacce non siano contrassegnate.
Per ulteriori informazioni, consultare la documentazione Java Package javax.management.