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:

Da die Verwendung von MBean am Ende des MBean-Schnittstellennamens eher eine Konvention als eine Voraussetzung ist, werden auch alle Aufrufe der Methoden MBeanServer registerMBean und createMBean gekennzeichnet, um diesen Unterschied in Java 8 beim Erstellen von Management-Beans hervorzuheben. Wenn Ihre Management-Bean-Schnittstellen den zuvor aufgelisteten Konventionen nicht entsprechen, prüfen Sie manuell, ob öffentliche (public) Schnittstellen verwendet werden.

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

    interface Example1MBean {}

    interface Example2MXBean {}

    @MXBean
    interface Example3Interface {}

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

    public interface Example5MBean{}

    public interface Example6MXBean{}

    @MXBean(false)
    interface 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.

Aufrufe von MBeanServer registerMBean und die Methoden createMBean werden nur markiert, um die Verhaltensänderung hervorzuheben, falls Ihre Schnittstellen nicht markiert sind.

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