MBean- und MXBean-Schnittstellen müssen öffentlich sein

In Java 8 wurde das Verhalten in Bezug auf die Sichtbarkeitsanforderungen für Schnittstellen, die zum Erstellen von MBeans oder MXBeans verwendet werden, geändert. Alle MBean- und MXBean-Schnittstellen müssen öffentlich sein. Vor Java 8 wurden nicht öffentliche Schnittstellen zugelassen, obwohl sie laut Spezifikation öffentlich sein müssen.

Durch Setzen der Systemeigenschaft jdk.jmx.mbeans.allowNonPublic wird das Managementsubsystem auf das alte Verhalten zurückgesetzt, das die Verwendung nicht öffentlicher Managementschnittstellen zulässt. Diese Eigenschaft ist als Übergangslösung bestimmt und wird möglicherweise in einem der nachfolgenden Releases entfernt.

Zur Erkennung nicht öffentlicher MBean- und MXBean-Schnittstellen werden die folgenden Situationen im Java-Code gekennzeichnet:

Die folgenden Beispiele veranschaulichen von dieser Regel gekennzeichnete nicht öffentliche Schnittstellen.

    Schnittstelle Example1MBean {}

    Schnittstelle Example2MXBean {}

    @MXBean Schnittstelle Example3Interface {}

    @MXBean(true) Schnittstelle Example4Interface {}

Die folgenden Beispiele veranschaulichen Schnittstellen, die von dieser Regeln nicht gekennzeichnet werden, weil sie bereits öffentlich sind oder weil sie als Nicht-MXBean annotiert sind.

    Öffentliche Schnittstelle Example5MBean{}

    Öffentliche Schnittstelle Example6MXBean{}

    @MXBean(false) Schnittstelle Example7MXBean {}

Diese Regel hat einen automatisierten Fix, der die Sichtbarkeit der Schnittstelle auf publicsetzt. Kopieren Sie die angepasste Konfiguration in die Builddatei Ihrer Anwendung, um die Fixautomatisierung zu aktivieren.

Weitere Informationen finden Sie in der Java-Dokumentation zum Paket javax.management.