Il existe dans Java 8 un changement de comportement concernant les exigences de visibilité pour les interfaces utilisées pour la création des beans MBean ou MXBean. Toutes les interfaces MBean et MXBean doivent être publiques. Avant Java 8, les interfaces non publiques étaient autorisées, bien que la spécification exigeait que les interfaces soient publiques.
Si vous indiquez la propriété système jdk.jmx.mbeans.allowNonPublic, le sous-système de gestion utilise
alors l'ancien comportement, autorisant les interfaces de gestion non publiques.
Cette propriété est considérée comme provisoire et peut être retirée dans les versions suivantes.
Pour détecter les interfaces MBean et MXBean non publiques, les situations suivantes sont marquées dans le code Java :
@MXBean@MXBean(true)MXBeanMBean
Etant donné que le nom d'interface MBean se termine par MBean est
une convention et non une exigence, tout appel des méthodes MBeanServer registerMBean
ou createMBean est également marqué afin de mettre en évidence cette différence Java 8
lorsque vous créez des beans de gestion.
Si les interfaces de bean de gestion ne suivent pas les conventions précédemment
répertoriées, vérifiez manuellement qu'elles utilisent les interfaces public.
Les exemples suivants présentent des interfaces non publiques marquées par cette règle.
interface Example1MBean {}
interface Example2MXBean {}
@MXBean
interface Example3Interface {}
@MXBean(true)
interface Example4Interface {}
|
Les exemples suivants présentent les interfaces qui sont pas marquées par cette règle car elles sont déjà publiques ou qu'elles sont annotées comme n'étant pas un bean MXBean.
public interface Example5MBean{}
public interface Example6MXBean{}
@MXBean(false)
interface Example7MXBean {}
|
Cette règle comporte un correctif automatisé qui définit la visibilité de l'interface sur public. Copiez la configuration personnalisée vers votre fichier de génération d'application pour activer l'automatisation des correctifs.
Les appels aux méthodes MBeanServer registerMBean
et createMBean
sont marqués uniquement pour mettre en évidence le changement de comportement au
cas où vos interfaces ne seraient pas marquées.
Pour plus d'informations, voir la documentation Java Package javax.management.