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)MXBeanMBeanLes 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.
interface publique Example5MBean{}
Interface publique 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.
Pour obtenir des informations supplémentaires, voir la documentation Java Package javax.management.