As interfaces MBean e MXBean devem ser públicas

O Java 8 introduz uma mudança de comportamento para os requisitos de visibilidade para interfaces que são usadas para criar MBeans ou MXBeans. Todas as interfaces MBean e MXBean devem ser públicas. Antes do Java 8, as interfaces não públicas eram permitidas, embora a especificação definisse que elas deveriam ser públicas.

Configurar a propriedade de sistema jdk.jmx.mbeans.allowNonPublic reverte o subsistema de gerenciamento para usar o comportamento antigo, permitindo interfaces de gerenciamento não públicas. Essa propriedade é considerada como sendo de transição e pode ser removida em liberações subsequentes.

Para detectar interfaces MBean e MXBean não públicas, as situações a seguir são sinalizadas no código Java:

Os exemplos a seguir mostram interfaces não públicas que são sinalizadas por essa regra.

    interface Example1MBean {}

    interface Example2MXBean {}

    @MXBean interface Example3Interface {}

    @MXBean(true) interface Example4Interface {}

Os exemplos a seguir mostram interfaces que não são sinalizadas por essa regra, porque elas já são públicas ou elas estão anotadas como não sendo um MXBean.

    interface pública Example5MBean{}

    interface pública Example6MXBean{}

    @MXBean(false) interface Example7MXBean {}

Essa regra tem uma correção automatizada que configura a visibilidade da interface como pública Copie a configuração customizada para seu arquivo de construção do aplicativo para ativar a automação de correção.

Para obter informações adicionais, veja a documentação Java do Pacote javax.management.