Mit JAVA 5 wurde eine Reihe sehr nützlicher Funktionalitäten in die Runtime aufgenommen. Dies sind beispielsweise das java.util.concurrent-Framework, Annotations, Generics und natürlich JMX. Interessant ist nun das JMX-Framework, welches ermöglicht, Informationen über eine Applikation mittels eines standardisierten Interface (JSR-3 und JSR-160) auch außerhalb der Anwendung zur Verfügung zu stellen. Es existieren eine Reihe von JMX-Clients wie beispielsweise die in den JDK integrierte JConsole. Alternativen gibt es ebenfalls zur Genüge. Beispielsweise VisualVM, für welches ein JMX MBean Plugin existiert, oder MC4J.
Wir arbeiten daher an einer Möglichkeit, um den aktuellen Zustand der jadice document platform und deren Module und Komponenten mittels JMX zu propagieren. Derzeit sind wir in der Proof-Of-Concept Phase und möchten die bisherige Idee vorstellen.
Um das Exponieren von Informationen über die jadice document platform einfach und flexibel zu gestalten, arbeiten wir an einer Pseudo-DSL (=Domain Specific Language), die möglichst aussagekräftig beschreiben soll, welche Daten exponiert werden und zusätzlich die JMX API deutlich vereinfachen:
Viewer v = //...
MBeanServer mbs = ManagementFactory.getPlatformMBeanServer()
ManagementConfiguration.on(mbs)
.addModule(SupportUtilsManagementModule.get())
.addModule(ViewerManagementModule.manage(v,"MyViewer"))
.start();
Die Management Logik wird hierbei in Module gruppiert. Jedes dieser Module kann ein oder mehrere MBeans einem MBeanServer zuweisen. Das ViewerManagementModule beispielsweise erzeugt ein MBean mit lesendem und teilweise schreibendem Zugriff auf einige Properties des Viewer. So ist es beispielsweise möglich, den aktuellen Zoom-Faktor über eine JMX Console zu ändern.
Wie bereits erwähnt, befindet sich diese Management-Erweiterung in einem Proof-Of-Concept Stadium. Für Ideen, Anforderungen oder auch einfach nur Lob sind wir jederzeit offen.