Интерфейсы MBean и MXBean должны быть public

В Java 8 изменены требования к области видимости интерфейсов для создания объектов MBean или MXBean. Все интерфейсы MBean и MXBean должны быть public. До Java 8 были допустимы интерфейсы не public, хотя по спецификации они должны были быть public.

Системное свойство jdk.jmx.mbeans.allowNonPublic позволяет вернуть прежнее поведение подсистемы управления, разрешающее использовать интерфейсы управления без спецификатора public. Это свойство считается переходным и может быть удалено в последующих выпусках.

Для поиска интерфейсов MBean и MXBean без спецификатора public в коде Java помечается следующее:

В следующих примерах показаны интерфейсы не public, которые помечаются этим правилом.

    интерфейс Example1MBean { }

    интерфейс Example2MXBean { }

    Интерфейс@MXBean
     Example3Interface { }

    Интерфейс@MXBean(true) Example4Interface { }

В следующих примерах показаны интерфейсы, которые не помечаются этим правилом, поскольку они уже имеют спецификатор public или в их аннотации указано, что они не MXBean.

    открытый интерфейс Example5MBean{}

    открытый интерфейс Example6MXBean{}

    @MXBean(false) интерфейс Example7MXBean { }

У этого правила есть автоматизированное исправление, которое задает видимость интерфейса для public. Скопировать пользовательская конфигурация в файл компоновки приложения, чтобы включить автоматизацию исправлений.

См. документацию Java для пакета javax.management.