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)MXBeanMBean
Porque terminar o nome da interface MBean com MBean é uma convenção, e não um
requisito, qualquer chamada dos métodos MBeanServer registerMBean
ou createMBean também é sinalizada para destacar essa diferença do
Java 8 ao criar beans de gerenciamento.
Se suas interfaces de bean de gerenciamento não seguem as convenções listadas anteriormente,
verifique manualmente se elas usam interfaces public.
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.
public interface Example5MBean{}
public interface 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.
As chamadas para os métodos MBeanServer registerMBean
e createMBean
são sinalizadas somente para destacar a mudança de comportamento no
caso de suas interfaces não serem sinalizadas.
Para obter informações adicionais, consulte a documentação Java do Pacote javax.management.