JBoss Fuse - Apache Karaf

In diesem Kapitel werden wir über Apache Karaf und warum es als leichter OSGi-Container bezeichnet wird, sowie über seine Vorteile und andere wichtige Funktionen sprechen.

Das JVM-Problem

Die virtuelle JVM- oder Java-Maschine fungiert nicht als tatsächliche virtuelle Maschine. Eine Maschine, mit der Sie Komponenten, die in ihr ausgeführt werden, im laufenden Betrieb stoppen, starten oder neu starten können. Es kann manchmal Hot-Bereitstellungen auf Klassenebene zulassen, aber es gibt keine Möglichkeit, eine Komponente Ihrer Anwendung in Ihrer virtuellen Maschine bereitzustellen oder die Bereitstellung aufzuheben, ohne sie neu zu starten.

Um dieses Problem zu lösen und Modularität in Java-Anwendungen zu ermöglichen, verwendet Fuse eine OSGi-basierte Laufzeit, die als Apache Karaf bekannt ist.

OSGi

Die OSGi-Technologie besteht aus einer Reihe von Spezifikationen, die ein dynamisches Komponentensystem für Java definieren. Diese Spezifikationen ermöglichen ein Entwicklungsmodell, bei dem Anwendungen (dynamisch) aus vielen verschiedenen (wiederverwendbaren) Komponenten bestehen.

Vorteile von OSGi

  • Reduced Complexity - Die Anwendung besteht aus zusammenarbeitenden Komponenten, die ihre Implementierungsdetails voreinander verbergen, was zu einer geringeren Komplexität führt.

  • Reusability - Viele Komponenten können dieselbe in einem Container bereitgestellte Komponente nutzen.

  • Deployment - OSGi bietet Unterstützung für das schnelle Starten, Stoppen und Aktualisieren von Komponenten mit seinen Lifecycle-Management-APIs ohne Neustart des Containers.

Bundles Vs Features

Es folgt der Vergleich zwischen Bundles und Features.

Bündel

Bundles entsprechen OSGi, Jars sind JVM. Bundles sind Artefakte, die in einem OSGi-Container bereitgestellt werden können. Die Bundles sind Komponenten, die zusammenarbeiten oder unabhängig voneinander eine Anwendung bilden.

Diese Bundles können zur Laufzeit installiert, deinstalliert, aktualisiert, gestartet oder gestoppt werden, ohne den Container neu zu starten.

Eigenschaften

Mit Funktionen können mehrere Bundles zusammen bereitgestellt werden. Manchmal ist es sinnvoller, Bundles in Gruppen bereitzustellen. Mithilfe von Funktionen können wir eine Gruppe von Bundles mit nur einem Befehl bereitstellen.

Warum noch ein Container?

Apache Karaf ist eine OSGi-basierte Laufzeit. Hier werden unsere Anwendungspakete ausgeführt. Fuse verwendet Apache Karaf als Laufzeit, in der Bundles ausgeführt werden und zusammenarbeiten, um Geschäftsfunktionen bereitzustellen.

Karaf basiert auf Felix und Equinox, die OSGi Frameworks sind.

Karaf Architektur

Apache Karaf fügt der grundlegenden OSGi-Laufzeit die folgenden zusätzlichen Funktionen hinzu.

Hot Deployment

Karaf unterstützt Hot Deployment. Es enthält ein Hot-Deployment-Verzeichnis. Alles, was in diesem Verzeichnis abgelegt wird, wird automatisch bereitgestellt und in Karaf als Bundle installiert.

Protokollierung

Karaf bietet eine zentralisierte Protokollierung, indem Protokolle für alle Bundles in erstellt werden $Fuse_home/data/log. Wir können die Logger-Konfiguration in bearbeitenorg.ops4j.pax.logging.cfg im $Fuse_home/etc directory.

Admin-Konsole

Karaf bietet eine ausgeklügelte und übersichtliche Admin-Konsole für die Interaktion mit der laufenden Sicherungsinstanz. Es enthält auch einen vorinstallierten Befehlssatz, mit dem Komponenten (Bundle) zur Laufzeit verwaltet und überwacht werden können. Diese Konsole ist erweiterbar, sodass wir der Konsole neue Befehle hinzufügen können, indem wir der Konsole neue Bundles hinzufügen.

SSH-Zugriff

Karaf ermöglicht den Remotezugriff auf diese Admin-Konsole mit SSH. Jeder mit gültigen Anmeldeinformationen kann über das SSH-Terminal eine Verbindung zur Karaf-Administratorkonsole herstellen.