Standardowy obiekt mhean ma poprawione metadane, które nie zmieniają się w trakcie trwania komponentu MBean. Dynamiczne MBeans definiują swoje metadane w locie i mogą modyfikować i ponownie publikować swoje metadane. Pomyśl o tej źle sformułowanej analogii do Javy: Załóżmy, że napisałeś klasę, która podała liczbę plików w katalogu. Standardowa metoda klasy może wyglądać następująco:
public int getFileCount(String directoryName)
Z drugiej strony, wersja dynamiczna MBean tej klasy ruszy bez żadnych metod, ale kiedy zaczyna się, skanuje katalogi dostępne i tworzy nowa metoda dla każdego katalogu znaleziono:
public int getFileCountDir1();
public int getFileCountDir2();
....
public int getFileCountDirN();
Więc to nie jest bardzo przydatny setup, ale załóżmy, że chciał stworzyć MBean że wyświetlane są wszystkie właściwości systemowe JVM za. No cóż ... Właściwości systemu zmieniają się ... i nie ma rozsądnego sposobu na sprawdzenie, które klucze właściwości zostaną zdefiniowane z wyprzedzeniem, aby lepiej odzwierciedlały dynamiczny komponent MBean.
Plusy i minusy naprawdę sprowadzają się do:
- Standardowe MBean'ami są łatwe do tworzenia, a istniejące instancje klasy mogą być opakowane i wystawiony jako standardowe MBean'ami.
- Dynamiczne MBeans są fajne, gdy służą użytecznemu celowi, ale są wymiernie większym wysiłkiem do wdrożenia.