Interfejsy MBean i MXBean muszą być publiczne

W środowisku Java 8 wprowadzono zmianę w wymaganiach dotyczących widoczności interfejsów używanych do tworzenia komponentów MBean lub MXBean. Wszystkie interfejsy MBean i MXBean muszą być publiczne. W wersjach wcześniejszych niż Java 8 dozwolone były interfejsy niepubliczne, mimo że specyfikacja wskazywała, aby były publiczne.

Ustawienie właściwości systemowej jdk.jmx.mbeans.allowNonPublic przywraca stare działanie podsystemu zarządzania, umożliwiając stosowanie niepublicznych interfejsów zarządzania. Ta właściwość jest uważana za przejściową i może ona zostać usunięta w kolejnych wersjach.

W celu wykrycia niepublicznych interfejsów MBean i MXBean w kodzie Java oznaczane są następujące miejsca:

W poniższych przykładach przedstawiono interfejsy niepubliczne, które są oznaczane przez tę regułę.

    interfejs Example1MBean {}

    interfejs Example2MXBean {}

    @MXBean interfejs Example3Interface {}

    @MXBean(true) interface Example4Interface {}

Poniższe przykłady przedstawiają interfejsy, które nie są oznaczane przez tę regułę, ponieważ są one już publiczne lub ich adnotacja wskazuje, że nie są komponentami MXBean.

    public interface Example5MBean{}

    interfejs publiczny Example6MXBean{}

    @MXBean(false) interface Example7MXBean {}

Ta reguła zawiera zautomatyzowaną poprawkę, która ustawia widoczność interfejsu na wartość public. Skopiuj konfigurację niestandardową do pliku budowania aplikacji, aby włączyć automatyzację poprawek.

Więcej informacji na ten temat zawiera dokumentacja języka Java: Pakiet javax.management.