MBean インターフェースと MXBean インターフェースはパブリックでなければならない

Java 8 では、MBean または MXBean の作成に使用するインターフェースの可視性要件の振る舞いが変更されました。 MBean インターフェースと MXBean インターフェースは、すべてパブリックでなければなりません。 Java 8 の前では、非パブリックのインターフェースが許可されていましたが、仕様ではそれらもパブリックであるべきと定義されていました。

jdk.jmx.mbeans.allowNonPublic システム・プロパティーを設定すると、非パブリック管理インターフェースを許可するという古い振る舞いを使用する管理サブシステムに戻すことができます。 このプロパティーは暫定的と見なされており、後続のリリースでは削除される可能性があります。

非パブリックの MBean インターフェースと MXBean インターフェースを検出するため、以下の場合は Java コード内でフラグが立てられます。

MBean インターフェースの名前を MBean で終わらせることは要件ではなくきまりのため、管理 Bean の作成時にこの Java 8 での違いを強調表示するために、MBeanServer registerMBeanメソッドまたは createMBean メソッドの呼び出しにもフラグが立てられます。 ご使用の管理 Bean インターフェースが上記のきまりに従っていない場合は、それらが public インターフェースを使用していることを手動で確認します。

以下の例では、この規則によってフラグが立てられる非パブリック・インターフェースを示します。

    interface Example1MBean {}

    interface Example2MXBean {}

    @MXBean
    interface Example3Interface {}

    @MXBean(true)
    interface Example4Interface {}

以下の例では、既にパブリックであるか、MXBean ではないというアノテーションが付けられているために、この規則によってフラグが立てられないインターフェースを示します。

    public interface Example5MBean{}

    public interface Example6MXBean{}

    @MXBean(false)
    interface Example7MXBean {}

このルールには、インターフェースの可視性を publicに設定する自動修正があります。 カスタム構成をアプリケーション・ビルド・ファイルにコピーして、フィックスの自動化を有効にします。

MBeanServer registerMBean および createMBean メソッドへの呼び出しは、インターフェースにフラグが立てられていない場合 の振る舞いの変更を強調表示するためにのみフラグが立てられます。

追加情報については、 javax.management パッケージに関する Java 資料を参照してください。