2013-04-25 14 views

Odpowiedz

7

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:

  1. Standardowe MBean'ami są łatwe do tworzenia, a istniejące instancje klasy mogą być opakowane i wystawiony jako standardowe MBean'ami.
  2. Dynamiczne MBeans są fajne, gdy służą użytecznemu celowi, ale są wymiernie większym wysiłkiem do wdrożenia.