
OSGi für Praktiker
Beschreibung
Alles über E-Books | Antworten auf Fragen rund um E-Books, Kopierschutz und Dateiformate finden Sie in unserem Info- & Hilfebereich.
Weitere Details
Weitere Ausgaben
Andere Ausgaben

Personen
Inhalt
2 - Vorwort der Autoren [Seite 14]
3 - Die Autoren [Seite 16]
4 - 1 Einleitung [Seite 18]
4.1 - 1.1 Die OSGi-Service-Plattform [Seite 19]
4.1.1 - 1.1.1 Bundles [Seite 19]
4.1.2 - 1.1.2 Das OSGi-Framework [Seite 21]
4.2 - 1.2 Geschichte [Seite 35]
4.3 - 1.3 OSGi Enterprise Design [Seite 36]
4.3.1 - 1.3.1 Distributed OSGi [Seite 37]
4.3.2 - 1.3.2 JMX-Management [Seite 39]
4.4 - 1.4 OSGi vs. SOA [Seite 40]
4.5 - 1.5 Über dieses Buch [Seite 41]
5 - 2 OSGi-Implementierungen [Seite 46]
5.1 - 2.1 Die OSGi Alliance [Seite 47]
5.1.1 - 2.1.1 Vollmitglieder [Seite 47]
5.1.2 - 2.1.2 Assoziierte Unternehmen [Seite 48]
5.1.3 - 2.1.3 Unterstützer [Seite 48]
5.2 - 2.2 Zertifizierte Produkte [Seite 48]
5.3 - 2.3 Open Source-Implementierungen [Seite 49]
5.3.1 - 2.3.1 Eclipse Equinox [Seite 49]
5.3.2 - 2.3.2 Knopflerfish [Seite 52]
5.3.3 - 2.3.3 Apache Felix [Seite 54]
5.4 - 2.4 OSGi und das Spring-Framework [Seite 57]
5.5 - 2.5 Fazit [Seite 59]
6 - 3 JobTimer - Bundle-Grundlagen [Seite 62]
6.1 - 3.1 Voraussetzungen [Seite 63]
6.1.1 - 3.1.1 Projekt aufsetzen mit Maven [Seite 63]
6.1.2 - 3.1.2 Verwenden als Eclipse-Projekt [Seite 65]
6.1.3 - 3.1.3 POM-Datei anpassen [Seite 66]
6.2 - 3.2 JobTimer implementieren [Seite 68]
6.3 - 3.3 Verpacken als Bundle [Seite 71]
6.3.1 - 3.3.1 Verwendung von bnd wrap [Seite 72]
6.3.2 - 3.3.2 Verwendung von bnd build [Seite 73]
6.4 - 3.4 Bundles installieren und starten [Seite 76]
6.4.1 - 3.4.1 Starten der Plattform [Seite 76]
6.4.2 - 3.4.2 Installieren von Bundles [Seite 77]
6.4.3 - 3.4.3 Bundle Repositories [Seite 79]
6.4.4 - 3.4.4 Starten von Bundles [Seite 80]
6.4.5 - 3.4.5 Auflösen von Abhängigkeiten [Seite 80]
6.4.6 - 3.4.6 Herunterfahren der Plattform [Seite 82]
6.5 - 3.5 Fazit [Seite 82]
7 - 4 GateKeeper - OSGi-Projekt aufsetzen [Seite 84]
7.1 - 4.1 Voraussetzungen [Seite 84]
7.1.1 - 4.1.1 PAX-Werkzeuge [Seite 85]
7.1.2 - 4.1.2 Bundle-Automatik [Seite 85]
7.1.3 - 4.1.3 Master POM erstellen [Seite 86]
7.1.4 - 4.1.4 Bereitstellen der Bundles [Seite 88]
7.1.5 - 4.1.5 Startreihenfolge [Seite 92]
7.2 - 4.2 Erstellen des GateKeeper-Bundles [Seite 93]
7.2.1 - 4.2.1 Erstellen des Maven-Moduls [Seite 93]
7.2.2 - 4.2.2 Verwenden der Eclipse IDE [Seite 94]
7.2.3 - 4.2.3 GateKeeper implementieren [Seite 96]
7.2.4 - 4.2.4 Metadaten definieren [Seite 98]
7.3 - 4.3 Fazit [Seite 99]
8 - 5 Enunciator - Declarative Services [Seite 102]
8.1 - 5.1 Voraussetzungen [Seite 102]
8.1.1 - 5.1.1 Tücken optionaler Auflösung [Seite 103]
8.2 - 5.2 Erstellen des Enunciator-Bundles [Seite 104]
8.2.1 - 5.2.1 Erstellen des Maven-Moduls [Seite 104]
8.2.2 - 5.2.2 Enunciator implementieren [Seite 105]
8.2.3 - 5.2.3 Dienst deklarieren [Seite 108]
8.2.4 - 5.2.4 Installieren des Bundles [Seite 110]
8.3 - 5.3 Deklaration einer Komponente [Seite 111]
8.3.1 - 5.3.1 Attribute einer Komponente [Seite 111]
8.3.2 - 5.3.2 Kind-Elemente einer Komponente [Seite 112]
8.4 - 5.4 GateKeeper erweitern [Seite 114]
8.4.1 - 5.4.1 Zugriff auf das Enunciator-Package [Seite 114]
8.4.2 - 5.4.2 Lifecycle-Methoden erweitern [Seite 115]
8.4.3 - 5.4.3 Dynamischer Aufruf [Seite 116]
8.4.4 - 5.4.4 Exkurs: ServiceTrackerCustomizer [Seite 117]
8.4.5 - 5.4.5 Installieren des erweiterten Bundles [Seite 119]
8.5 - 5.5 Ausführen der Bundles [Seite 120]
8.5.1 - 5.5.1 Ausführen mit PAX Provision [Seite 120]
8.5.2 - 5.5.2 Ausführen mit dem PAX Runner Plugin [Seite 121]
8.6 - 5.6 Fazit [Seite 123]
9 - 6 Migration - Java-Archive zu Bundles erweitern [Seite 124]
9.1 - 6.1 Analyse des Java-Archivs [Seite 124]
9.1.1 - 6.1.1 Ermitteln von Abhängigkeiten mit Hilfe von bnd [Seite 125]
9.1.2 - 6.1.2 Analyse der Abhängigkeiten [Seite 126]
9.1.3 - 6.1.3 Laufzeitumgebung [Seite 126]
9.2 - 6.2 Standardmigration [Seite 128]
9.2.1 - 6.2.1 Festlegen der Metadaten [Seite 128]
9.2.2 - 6.2.2 Durchführen der Migration [Seite 130]
9.2.3 - 6.2.3 Bereitstellung [Seite 131]
9.3 - 6.3 Beistellungsmigration [Seite 131]
9.3.1 - 6.3.1 Aufnahme von Ressourcen [Seite 132]
9.3.2 - 6.3.2 Festlegen der Metadaten [Seite 134]
9.3.3 - 6.3.3 Durchführen der Migration [Seite 134]
9.3.4 - 6.3.4 Bereitstellung [Seite 135]
9.4 - 6.4 Transitive Migration [Seite 136]
9.4.1 - 6.4.1 Festlegen der Metadaten [Seite 136]
9.4.2 - 6.4.2 Migration der BouncyCastle-Archive [Seite 137]
9.4.3 - 6.4.3 Gemeinsame Migration aller BouncyCastle-Archive [Seite 139]
9.4.4 - 6.4.4 Festlegen der Metadaten [Seite 140]
9.4.5 - 6.4.5 Durchführen der Migration [Seite 140]
9.4.6 - 6.4.6 Bereitstellung [Seite 141]
9.5 - 6.5 Versionen und Versionsbereiche [Seite 141]
9.5.1 - 6.5.1 Referenzierung über Versionen [Seite 142]
9.5.2 - 6.5.2 Konventionen [Seite 142]
9.6 - 6.6 Fazit [Seite 143]
10 - 7 Worker - Fragmente und Integrationstests [Seite 144]
10.1 - 7.1 Voraussetzungen [Seite 144]
10.2 - 7.2 Die WorkerService-API [Seite 145]
10.2.1 - 7.2.1 Schnittstellendefinition [Seite 145]
10.2.2 - 7.2.2 POM-Datei [Seite 146]
10.3 - 7.3 WorkerService implementieren [Seite 147]
10.3.1 - 7.3.1 Vorüberlegungen [Seite 147]
10.3.2 - 7.3.2 Der Quellcode [Seite 147]
10.3.3 - 7.3.3 Komponente deklarieren [Seite 153]
10.3.4 - 7.3.4 POM-Datei anpassen [Seite 154]
10.4 - 7.4 GateKeeper erweitern [Seite 155]
10.5 - 7.5 Laufzeitverhalten [Seite 158]
10.5.1 - 7.5.1 Bundle stop [Seite 159]
10.5.2 - 7.5.2 Bundle start [Seite 160]
10.5.3 - 7.5.3 Bundle update [Seite 160]
10.5.4 - 7.5.4 Bundle refresh [Seite 161]
10.6 - 7.6 Fragmente [Seite 162]
10.6.1 - 7.6.1 Verwendung im Projekt [Seite 162]
10.6.2 - 7.6.2 Erstellung des Bundles [Seite 163]
10.6.3 - 7.6.3 Festlegen der Metadaten [Seite 163]
10.6.4 - 7.6.4 Test des Fragments [Seite 163]
10.7 - 7.7 Integrationstest mit PAX Exam [Seite 164]
10.7.1 - 7.7.1 Test-Bundle erstellen [Seite 165]
10.7.2 - 7.7.2 POM-Datei anpassen [Seite 165]
10.7.3 - 7.7.3 Generierter Integrationstest [Seite 168]
10.7.4 - 7.7.4 Einfacher Integrationstest [Seite 168]
10.7.5 - 7.7.5 Erweiterter Integrationstest [Seite 171]
10.8 - 7.8 Fazit [Seite 177]
11 - 8 SkilledWorker - Blueprint Services [Seite 178]
11.1 - 8.1 Voraussetzungen [Seite 179]
11.2 - 8.2 Erstellen des SkilledWorker-Bundles [Seite 179]
11.2.1 - 8.2.1 Erstellen des Maven-Moduls [Seite 179]
11.2.2 - 8.2.2 Verwenden der Eclipse IDE [Seite 180]
11.2.3 - 8.2.3 SkilledWorker implementieren [Seite 180]
11.3 - 8.3 Blueprint Services [Seite 186]
11.4 - 8.4 Spring Dynamic Modules for OSGi [Seite 189]
11.4.1 - 8.4.1 GateKeeper erweitern [Seite 192]
11.4.2 - 8.4.2 Services filtern [Seite 193]
11.5 - 8.5 Fazit [Seite 195]
12 - 9 WebMonitor - Webapplikationen mit OSGi [Seite 198]
12.1 - 9.1 Voraussetzungen [Seite 198]
12.2 - 9.2 Erstellen des WebMonitor-Webbundles [Seite 199]
12.2.1 - 9.2.1 Anpassen des POMs [Seite 199]
12.2.2 - 9.2.2 Services und Controller bereitstellen [Seite 201]
12.2.3 - 9.2.3 JSP View erzeugen [Seite 205]
12.2.4 - 9.2.4 Manifest anpassen [Seite 206]
12.2.5 - 9.2.5 OSGi-spezifisches web.xml [Seite 207]
12.3 - 9.3 Fazit [Seite 209]
13 - 10 Remote Services - Informationen über Distanz austauschen [Seite 210]
13.1 - 10.1 Voraussetzungen [Seite 210]
13.2 - 10.2 Erstellen des RemoteLogServer-Bundles [Seite 211]
13.2.1 - 10.2.1 Erstellen des Maven-Moduls [Seite 211]
13.2.2 - 10.2.2 Implementierung des RemoteLogServices [Seite 211]
13.3 - 10.3 Bundles starten mit PAX Runner [Seite 213]
13.3.1 - 10.3.1 Installation von PAX Runner [Seite 214]
13.3.2 - 10.3.2 Starten des RemoteLogServer mit PAX Runner [Seite 214]
13.4 - 10.4 Webservice testen [Seite 215]
13.5 - 10.5 Remote Service konsumieren [Seite 216]
13.6 - 10.6 Enunciator mit Fragment erweitern [Seite 216]
13.7 - 10.7 GossipMonger starten [Seite 217]
13.8 - 10.8 Fazit [Seite 220]
14 - 11 Police - System-Monitoring im laufenden Betrieb [Seite 222]
14.1 - 11.1 Installation der Apache Felix Web Console [Seite 222]
14.2 - 11.2 Konfiguration der Web Console [Seite 225]
14.2.1 - 11.2.1 Benutzer/Passwort ändern [Seite 225]
14.2.2 - 11.2.2 HTTP-Ports anpassen [Seite 226]
14.3 - 11.3 Fazit [Seite 227]
15 - 12 Big Brother - Überwachung und Steuerung von außen [Seite 228]
15.1 - 12.1 JobTimer-Intervall über JMX verändern [Seite 228]
15.2 - 12.2 JobTimer-Interval im Bundle-Cache persistieren [Seite 232]
15.3 - 12.3 Fazit [Seite 235]
16 - 13 Launcher - Starten von OSGi-Anwendungen [Seite 236]
16.1 - 13.1 Framework Launching API [Seite 236]
16.1.1 - 13.1.1 Schnittstellen [Seite 237]
16.1.2 - 13.1.2 Framework Eigenschaften [Seite 237]
16.2 - 13.2 Erstellen des Launchers [Seite 239]
16.2.1 - 13.2.1 Maven-Projekt erstellen [Seite 239]
16.2.2 - 13.2.2 Der Launcher im Quelltext [Seite 239]
16.2.3 - 13.2.3 Framework starten [Seite 244]
16.2.4 - 13.2.4 FrameworkFactory definieren [Seite 244]
16.2.5 - 13.2.5 Framework konfigurieren [Seite 245]
16.2.6 - 13.2.6 Infrastrukturmaßnahmen [Seite 245]
16.2.7 - 13.2.7 Applikations-Bundles [Seite 250]
16.3 - 13.3 Launcher bereitstellen [Seite 251]
16.3.1 - 13.3.1 Abhängigkeiten kopieren [Seite 251]
16.3.2 - 13.3.2 Manifest erweitern [Seite 252]
16.3.3 - 13.3.3 Assembly erstellen [Seite 252]
16.3.4 - 13.3.4 Launcher testen [Seite 253]
16.3.5 - 13.3.5 Bereitgestellte ApplicationBundles [Seite 254]
16.4 - 13.4 Fazit [Seite 254]
17 - 14 Aliens - Bundles from Outer (Java) Space [Seite 256]
17.1 - 14.1 Scala [Seite 256]
17.2 - 14.2 ScalaModules [Seite 258]
17.3 - 14.3 Das Chirp-Bundle [Seite 260]
17.4 - 14.4 Fazit [Seite 265]
18 - Stichwortverzeichnis [Seite 266]
Kapitel 4 GateKeeper – OSGi-Projekt aufsetzen (S. 67-68)
In diesem Kapitel werden die Grundlagen für die Einrichtung von OSGi-Projekten vermittelt. Das Resultat dieses Kapitels ist ein Gesamtprojekt namens GossipMonger sowie ein darin enthaltenes Bundle, welches als OSGi EventHandler auf das Taktsignal des JobTimers hört und zum Anlass nimmt, in einem Verzeichnis nach Dateien zu sehen. Sind solche vorhanden, gibt es eine entsprechende Meldung aus. Dieses Pförtner-Bundle soll auf den Namen „GateKeeper“ hören.
Alle Bundles sollen automatisch per Maven erstellt und in einer Laufzeitumgebung gestartet werden. Zunächst wird ein Maven Super-POM erstellt, um dieses und die noch kommenden GossipMonger-Module vernünftig verwalten zu können. Das JobTimer- Bundle wird als Abhängigkeit importiert, um anschließend mit PAX Provision einen sehr bequemen Weg zur Bestückung der OSGi-Plattform mit allen notwendigen Bundles gehen zu können. Das neue GossipMonger-Modul namens Gate- Keeper wird per pax-create-bundle generiert und als Maven-Projekt in Eclipse importiert. Schließlich wird der GateKeeper als EventHandler implementiert, am Framework registriert und mit PAX Provision samt der übrigen beteiligten Bundles gestartet.
4.1 Voraussetzungen
Kapitel 3 hat gezeigt, dass einige Eigenschaften und auch manches Verhalten des JobTimer-Teilprojekts für andere Teile des GossipMonger-Projekts nützlich sein dürften. Zudem ist der Automatisierungsgrad des Erstellungsprozesses noch verbesserungsfähig, vor allem im Hinblick auf das eigentliche Ziel der automatisierten Bundle-Erstellung und dessen Installation in das lokale Maven-Repository. Die manuelle Erweiterung der JobTimer JAR-Datei um OSGi-Header mittels des bnd-Werkzeugs sollte folglich in den Maven-Erstellungslauf integriert werden.
4.1.1 PAX-Werkzeuge
Diese Aufgaben werden gelöst durch die Verwendung des maven-bundle-plugin von Apache Felix1, welches das bnd-Werkzeug zur Ergänzung von JARs um OSGi-Header nutzt, und durch die Generalisierung der Standardvorgaben für die Projektmodule in einem GossipMonger Master POM. Für dieses und die weiteren Module des GossipMonger-Projekts werden Teile des PAX-Werkzeugkastens verwendet, insbesondere PAX Construct2 zum Generieren und Einbinden von Bundles sowie das ebenfalls darin befindliche PAX Provision zur Bestückung der OSGi-Plattform. Die PAX-Werkzeuge werden von der OPS4JCommunity3 zur Verfügung gestellt, die auf den etwas sperrigen Namen „Open Participation Software for Java“ hört und sich nicht nur die Bereitstellung offener und freier Software auf die Fahnen geschrieben hat, sondern auch das Mitarbeiten daran ebenso offen nach dem Vorbild der Wikipedia gestalten möchte.
Systemvoraussetzungen
Dateiformat: PDF
Kopierschutz: Wasserzeichen-DRM (Digital Rights Management)
Systemvoraussetzungen:
- Computer (Windows; MacOS X; Linux): Verwenden Sie zum Lesen die kostenlose Software Adobe Reader, Adobe Digital Editions oder einen anderen PDF-Viewer Ihrer Wahl (siehe E-Book Hilfe).
- Tablet/Smartphone (Android; iOS): Installieren Sie bereits vor dem Download die kostenlose App Adobe Digital Editions oder die App PocketBook (siehe E-Book Hilfe).
- E-Book-Reader: Bookeen, Kobo, Pocketbook, Sony, Tolino u.v.a.m.
Das Dateiformat PDF zeigt auf jeder Hardware eine Buchseite stets identisch an. Daher ist eine PDF auch für ein komplexes Layout geeignet, wie es bei Lehr- und Fachbüchern verwendet wird (Bilder, Tabellen, Spalten, Fußnoten). Bei kleinen Displays von E-Readern oder Smartphones sind PDF leider eher nervig, weil zu viel Scrollen notwendig ist. Mit Wasserzeichen-DRM wird hier ein „weicher” Kopierschutz verwendet. Daher ist technisch zwar alles möglich – sogar eine unzulässige Weitergabe. Aber an sichtbaren und unsichtbaren Stellen wird der Käufer des E-Books als Wasserzeichen hinterlegt, sodass im Falle eines Missbrauchs die Spur zurückverfolgt werden kann.
Weitere Informationen finden Sie in unserer E-Book Hilfe.