SlideServe
Menu
Préférences
© SlideServe · v2026

OSGi Tutorial

mada avatar
20 diapositives · 370 Views · Sep 01, 2014

OSGi Tutorial. Das OSGi Service Framework. Dynamisches Modulsystem für Java Dynamische Integration und Fernmanagement von Softwarekomponenten ( Bundles ) Services Verfügbarkeit, Skalierbarkeit, Security Eingebettete Systeme bis Enterprise Applications Grundlage u.a. von Eclipse

OSGi Tutorial - slide 1
01 / 20OSGi Tutorial
1 / 17

Télécharger la présentation

OSGi Tutorial
Une image / un lien ci-dessous est fourni (tel quel) pour télécharger la présentation

Politique de téléchargement : le contenu du site vous est fourni TEL QUEL pour votre information et votre usage personnel ; il ne peut être vendu, concédé sous licence ni partagé sur d’autres sites sans l’accord de son auteur.Le contenu vous est fourni TEL QUEL, pour votre information et votre usage personnel uniquement. Téléchargez la présentation en cliquant sur ce lien. Lors du téléchargement, si vous ne parvenez pas à télécharger une présentation, l’éditeur a peut-être supprimé le fichier de son serveur.Pendant le téléchargement, si vous ne parvenez pas à obtenir une présentation, le fichier a peut-être été supprimé par l’éditeur.

F I N

Plus de contenu associé

Transcription de la présentation
  1. OSGiTutorial

  2. Das OSGi Service Framework • Dynamisches Modulsystem für Java • Dynamische Integration und Fernmanagement von • Softwarekomponenten (Bundles) • Services • Verfügbarkeit, Skalierbarkeit, Security • Eingebettete Systeme bis Enterprise Applications • Grundlage u.a. von Eclipse • OSGiAlliance • Bis 2004 Open Service Gateway Initiative • IBM, Oracle, Sun, Nokia, … • Verschiedene Implementierungen • Equinox, Felix, Knopflerfish, …

  3. Das OSGi Service Framework • Container für Applikationen und Services • Applikationen teilen sich eine Java VM • Applikationsmanagement • Life Cycle, Java Pakete, Security, Abhängigkeiten • Service Registry • Benachrichtigungen über Veränderungen • Bundles • Services System-Bundles (OSGi) Support –Bundles (OSGi-Plattform z.B. Equinox) Applikations- Bundles (Benutzerdefiniert) OSGi Service Framework Java VM

  4. OSGiBundles • OSGi Verpackung für • Applikation • Bibliothek • Beliebige Ressourcen • Dynamischer Lebenszyklus Uninstall Install Uninstalled Installed Uninstall Resolved Start Stopping Stop Starting Active explizit Automatisch

  5. OSGiBundle Interna • Normale JAR-Datei • Erweiterte Manifest-Datei • META-INF/MANIFEST.MF • Beschreibt das Bundle • Name, Version, … • Definiert Abhängigkeiten • Java-Packages • Andere Bundles • Definiert Package-Exporte • Activator zur Initialisierung/Shutdown (Optional) • Normale Java Klasse • In der Manifest-Datei definiert • Kann Services bereitstellen

  6. Hands-On (Teil 1) OSGiBundles

  7. Zusammenspiel von Bundles • Das OSGi Framework verwaltet die Abhängigkeiten • Lazy-Loading (-Starting) von Bundles • Bundles starten nur, wenn alle Abhängigkeiten aufgelöst werden können • Java-Packages exportieren • im Bundle vorhandene Packages • im Classpath vorhandene Packages • Java-Packages anderer Bundles Importieren • Vorteile: Lose Kopplung, Spezifisches Matching • Nachteile: • Alle Imports müssen angegeben werden • nur Code/Resource Abhängigkeiten • Importieren anderer Bundles • Vorteile: Nicht-Code Abhängigkeiten, Bequem • Nachteile: Starke Kopplung, Packages können verdeckt werden

  8. OSGi Class Loading • Jedes Bundle besitzt einen eigenen ClassLoader!! • Zugriff nur auf • java.* • Eigene Klassen / Klassen im Classpath des Bundles • Importierte Packages • Exportierte Packages importierter Bundles • Mehrere Versionen eines Bundles können gleichzeitig geladen sein

  9. OSGi Class Loading – Schwierigkeiten Beispiel Bundle A Bundle B classpath: library.jar import: B classpath: library.jar export: B A ClassCastException { ABC var; B.Foo.bar(var); } B bar(x : ABC) Foo library.jar lib ABC …

  10. OSGi Class Loading – Schwierigkeiten – Lösung Bundle A Bundle B import: B, lib export: B import: lib A { ABC var; B.Foo.bar(var); } B bar(x : ABC) Foo library.jar Bundle C lib classpath: library.jar export: lib ABC …

  11. OSGi Class Loading - Schwierigkeiten • Schwierigkeiten mit nicht-OSGi Bibliotheken/Applikationen • „Hacks“ zum dynamischen Laden von Implementierungen wie Class.forName, … führen zu Exceptions • Tricks zum Umgehen der Probleme • Thread.currentThread().setContextClassLoader(…) • Externer Zugriff auf Klassen eines eingebetteten OSGi-Frameworks sehr kompliziert!

  12. Hands-On (Teil 2) Bundle Abhängigkeiten

  13. Fragment Bundles • Hinzufügen neuer Übersetzungen • erfordert neue Property Dateien in aurich.translation.impl • Problem bei fremden Bundles • Lösung: Fragment-Bundles • Erweitern den Classpath eines Bundles • Besitzen keinen eigenen Life-Cycle • Können aber dynamisch hinzugefügt werden • Wird genutzt für: • Bereitstellen von Konfigurationen/Ressourcen • Implementierung von Produktvarianten • Insbes. Plattformspezifische Implementierungen

  14. Hands-On (Teil 3) Fragment-Bundles

  15. OSGi Services • Werden Spezifiziert durch ein Java-Interface • Können in verschiedenen Bundles implementiert werden • Normale Java Objekte • Bundle registriert Service • Andere Bundles nutzen Service • Klare Trennung von Spezifikation und Implementierung • Zentrale Service-Registry • Dynamisches Registrieren/Deregistrieren von Services

  16. OSGi Standard Services • OSGi definiert eine Menge von Standard Services • Wird von der OSGi Umgebung (z.B. equinox) mitgeliefert • Config-Admin-Service • Metatype-Service • User-Admin-Service • Preferences-Service • Log-Service • Http-Service • … diverse weitere insbes. für Mobile-Plattformen

  17. Service Registry • Zentrale Stelle • zur Anmeldung von Services • zum Auffinden von Services • Services können über Properties beschrieben werden • Immer vorhanden: objectClass • Beliebige weitere definierbar • Filter auf Properties zum Finden von Services • LDAP Notation • (& (objectClass=org.eclipse.console.CommandProvider) (author=*Mustermann*))

  18. Benutzen von Services • BundleContext • Wird einem Bundle-Activator in der Start-Methode übergeben • Ermöglicht Zugriff auf das Framework • Bundle-Events • Service-Events • ServiceTracker • Kapselt das Suchen und Tracken von Services • Declarative Services • Einfache deklarative Konfiguration von bereitgestellten/zu nutzenden Services • Kümmert sich um das automatische Auflösen von Service-Abhängigkeiten

  19. Hands-On (Teil 3) OSGi Services

  20. Fazit • Dynamisches Modulsystem für Java • Kommt mit relativ wenigen Klassen/Interfaces aus • Bundles • Einfache .jar Dateien mit speziellen Attributen in der Manifest.mf • Life-Cycle Management • Abhängigkeitsmanagement • Services • Lose Koppelung • Dynamik • Viele Standardservices schon vorhanden • Declarative Services zum komfortablen Management • ClassLoading „tricky“