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