Hallo, OSGi, Teil 2: Einführung in Spring Dynamic Modules

Wenn Sie in letzter Zeit Ihr Ohr am Boden hatten, haben Sie wahrscheinlich viel über die serviceorientierte Anwendungsentwicklung mit OSGi und Spring Dynamic Modules gehört. In diesem zweiten Artikel in der Hello, OSGi-Reihe erfahren Sie, warum Spring DM eine so aufregende Option für Entwickler ist, die bereits mit der Spring-Konfiguration vertraut sind und die Modularität, einfache Versionierung und Unterstützung des Anwendungslebenszyklus von OSGi nutzen möchten.

OSGi, auch als Dynamic Module System für Java bekannt, legt einen modularen Ansatz für die Entwicklung von Java-Anwendungen sowie eine Reihe standardisierter Methoden zum Verwalten von Abhängigkeiten zwischen Modulen fest. Mit dem Projekt Spring Dynamic Modules für OSGi Service Platforms (Spring DM) können Sie Spring-Anwendungen erstellen, die in einem OSGi-Container bereitgestellt werden können. Für Java-Unternehmensentwickler, die mit dem Programmier- und Konfigurationsmodell von Spring vertraut sind, ist Spring DM eine einfachere Möglichkeit, sich mit dem modularen Ansatz von OSGi für die Anwendungsentwicklung vertraut zu machen. Spring DM ermöglicht Spring-Entwicklern nicht nur den Zugriff auf das modulare Framework und die dynamische Konfiguration von OSGi, sondern bietet auch die für die meisten OSGi-Anwendungen erforderliche Codierung auf niedriger Ebene, sodass Sie sich auf die Geschäftslogik Ihrer Anwendung konzentrieren können.

Der erste Artikel in dieser Reihe ("Hallo, OSGi, Teil 1: Bundles für Anfänger") führte einen Standardansatz für die OSGi-Entwicklung unter Verwendung der OSGi-API und der Open-Source-Implementierung des Equinox-Containers ein. Sie haben die OSGi-Architektur, insbesondere Container und Bundles, kennengelernt und erste Erfahrungen mit der Entwicklung einer OSGi-basierten Hello World-Anwendung gesammelt. Das Anwendungsbeispiel ging nicht sehr tief, da das Ziel einfach darin bestand, die Grundlagen von OSGi zu erfassen.

In diesem Artikel erstellen Sie eine weitere Hello World-Anwendung, diesmal mit dem Spring DM-Framework. Sie erfahren, was Spring DM ist und wie es die Trennung der Anwendungslogik in Module durch OSGi sowie die Laufzeitdurchsetzung von Modulgrenzen nutzt. Außerdem erfahren Sie, wie Sie mit Spring DM Folgendes tun:

  • Installieren, aktualisieren und deinstallieren Sie Module dynamisch in einem laufenden System.
  • Erstellen Sie serviceorientierte Anwendungen (SOAs), indem Sie Dienste, die von anderen Modulen in einem System bereitgestellt werden, dynamisch erkennen und verwenden.
  • Verwenden Sie die Spring- DataSourceKlasse, um Komponenten innerhalb und zwischen Systemmodulen zu instanziieren, zu konfigurieren, zusammenzusetzen und zu dekorieren.

Wie Sie sehen werden, befreit Sie die Verwendung von Spring DM von der Arbeit und sogar von der härteren Arbeit, zu verstehen, was mit OSGi unter der Haube passiert. Auf diese Weise können Sie tiefer in Ihre Anwendungslogik eintauchen und dies früher im Entwicklungsprozess tun.

Um den Beispielen in diesem Artikel zu folgen, benötigen Sie eine Entwicklungsumgebung, die aus Eclipse 3.3 und Spring Dynamic Modules besteht. Für die letzte Übung benötigen Sie außerdem ein RDBMS wie Apache Derby. Im Folgenden finden Sie weitere Informationen zum Einrichten Ihrer Spring DM-Entwicklungsumgebung in Eclipse 3.3.

OSGi und das Spring Framework

Derzeit nimmt die Popularität von OSGi stark zu. Mehrere Anwendungsserver wurden neu verpackt, um das modulare Framework von OSGi zu nutzen, darunter IBMs WebSphere Application Server, BEAs microService Architecture (mSA) und JOnAS 5, ein Open-Source-Anwendungsserver, der von Grund auf auf einer OSGi-Architektur basiert. JBoss hat kürzlich seine Arbeit an einem OSGi-basierten Klassenladeprogramm und seine Absicht angekündigt, eine Implementierung der OSGi-Kernspezifikation zu erstellen. Am wichtigsten ist vielleicht, dass die OSGi-Container- / Laufzeitkomponenten-Engine der Eclipse Foundation, Equinox, kürzlich auf den Projektstatus der obersten Ebene angehoben wurde, wo sie als Grundlage für die neue Eclipse Runtime-Initiative dienen wird.

Noch bevor OSGi seinen gegenwärtigen Anstieg der Popularität erreichte, war die Rede davon, es mit Spring zu kombinieren. Dieser Vortrag führte schließlich zum Projekt Spring Dynamic Modules für OSGi Service Platforms. Die Funktionalität von Spring DM kann in zwei Hauptkomponenten unterteilt werden: Erstens werden Spring Framework-JARs in Form von OSGi-Bundles bereitgestellt. Wie Sie aus dem vorherigen Artikel in dieser Reihe wissen, sind OSGi-Bundles nichts anderes als JAR-Dateien (Java Archive), die zusätzliche Einträge in einer META-INF/MANIFEST.MFDatei enthalten, die als Bereitstellungsdeskriptor für ein OSGi-Bundle fungiert. (Beachten Sie, dass Sie eine JAR-Datei nicht direkt bereitstellen können, wenn Sie OSGi verwenden. Sie müssen sie im OSGi-Bundle-Format verpacken.)

Zweitens bietet Spring DM drei OSGi-spezifische Spring Bundles / JARs:

  • org.springframeork.osgi.bundle.extender
  • org.springframeork.osgi.bundle.core
  • org.springframeork.osgi.bundle.io

Mit Spring DM erstellte Anwendungen werden anders erstellt als mit Spring Framework. Wenn Sie eine Spring- Anwendung erstellen, definieren Sie Ihre Konfigurationsinformationen in einer oder mehreren Spring-Konfigurationsdateien, bei denen es sich hauptsächlich um XML-Dateien handelt. Das Spring-Framework verwendet diese Konfigurationsdateien, um beim Start der Anwendung ein Anwendungskontextobjekt zu erstellen. Nachdem der Anwendungskontext erstellt wurde, wird er zum Instanziieren, Konfigurieren, Zusammenstellen und Dekorieren von Objekten in der Anwendung verwendet.