Ein Standard-MBean hat feste Metadaten, die sich während der Lebensdauer des MBeans nicht ändern. Dynamische MBeans definieren ihre Metadaten im laufenden Betrieb und können ihre Metadaten modifizieren und erneut veröffentlichen. Denken Sie über diese [schlecht] erfundene Analogie zu Java nach: Nehmen wir an, Sie haben eine Klasse geschrieben, in der die Anzahl der Dateien in einem Verzeichnis aufgelistet ist. Eine Standard-Klasse Methode könnte wie folgt aussehen:
public int getFileCount(String directoryName)
Auf der anderen Seite, die dynamischen MBean Version dieser Klasse ohne Methoden beginnen würde, aber wenn er startet, es scannt die Verzeichnisse zur Verfügung und schafft eine neue Methode für jedes Verzeichnis gefunden:
public int getFileCountDir1();
public int getFileCountDir2();
....
public int getFileCountDirN();
das ist also nicht eine sehr nützliche Einrichtung, aber nehmen Sie eine MBean schaffen wollte, dass alle JVM-Systemeigenschaften angezeigt. Nun .... Systemeigenschaften ändern sich ... und es gibt keine vernünftige Möglichkeit zu wissen, welche Eigenschaftsschlüssel im Voraus definiert werden, so dass dies eine bessere Darstellung dessen darstellt, wofür ein dynamisches MBean gut ist.
Die Vor- und die Nachteile wirklich kommen zu:
- Standard-MBeans sind einfach zu erstellen und bestehende Klasseninstanzen als Standard MBeans gewickelt und ausgesetzt werden kann.
- Dynamische MBeans sind cool, wenn sie einen nützlichen Zweck erfüllen, aber sie sind messbar mehr Aufwand zu implementieren.