Untergeordnete Seiten
  • Eigene Initalisierungslogik beim Start von jadice server ausführen
Zum Ende der Metadaten springen
Zum Anfang der Metadaten

Das Problem

Gelegentlich gibt es die Anforderung, dass bei der Initialisierung von jadice server eigene zusätzliche Einstellungen getroffen werden sollen oder Standardeinstellungen, die nicht konfigurativ sondern nur programmatisch getroffen werden können, überschrieben werden sollen. Dazu ist es notwendig, eigenen Code zu implementieren und ihn beim Start von jadice server auszuführen. Wie soll dieser jedoch in jadice server eingebunden werden? Und wie wird sichergestellt, dass dieser zum richtigen Zeitpunkt ausgeführt wird?

Die Lösung

Die Architektur von jadice server baut auf das Spring-Framework auf. Alle Kernkomponenten werden in XML deklariert und beim Start der Anwendung durch eine BeanFactory instanziiert und in ihren Lebenszyklus gebracht. Folglich muss die eigene Ladelogik hieran ebenfalls teilnehmen.

Wie man sich in die Spring-Konfiguration und deren Lebenszyklus einhängen kann, ist ganz einfach. Dazu benötigt man zunächst die Klasse, die die eigene Initialisierungslogik implementiert. Diese muss zum einen das Interface Lifecycle implementieren, damit sie am Spring-Lebenszyklus teilnehmen kann. Zum anderen benötigt sie eine Abhängigkeit zur Klasse JadiceServer, damit sichergestellt wird, dass diese Logik nach Abschluss der regulären Initialisierung ausgeführt wird; dazu verwenden wir in diesem Beispiel den Dependency-Injection-Mechanismus über die @Autowired-Annotation.

Ein Minimal-Beispiel, das diese Voraussetzungen erfüllt, sieht so aus:

Beispielklasse zur Einbindung zusätzlicher Initialisierungslogik von jadice server

Durch die Methode stop(), die vom Interface Lifecylce vorgegeben wird, ist es zusätzlich möglich, eigene Aufräumarbeiten vorzunehmen, wenn jadice server beendet wird.

Nachdem diese Klasse kompiliert und in einer eigenen jar-Datei paketiert wurde, reicht es aus, diese jar-Datei in den Klassenpfad von jadice server durch Kopieren in den Ordner <jadice-server>/server-lib/ aufzunehmen. In der XML-Konfiguration von Spring kann diese Klasse als normale Bean deklariert werden:

Bean-Deklaration der oben implementierten Klasse

Am besten wird diese Deklaration in einer eigenen XML-Datei durchgeführt, die mittels <import>-Element in die Datei <jadice-server>/server-config/application/server.xml eingebunden wird. Damit kann auch zukünftig nachvollzogen werden, welche Bestandteile produktseitig geliefert werden und an welchen Stellen eigene Ergänzungen vorgenommen wurden.