Zum Hauptinhalt springen
Nicht aus der Schweiz? Besuchen Sie lehmanns.de

OSGi für Praktiker (eBook)

Prinzipien, Werkzeuge und praktische Anleitungen auf dem Weg zur `kleinen SOA`

(Autor)

eBook Download: PDF
2010 | 1. Auflage
274 Seiten
Carl Hanser Fachbuchverlag
978-3-446-42437-1 (ISBN)

Lese- und Medienproben

OSGi für Praktiker -  Bernd Weber
Systemvoraussetzungen
31,99 inkl. MwSt
(CHF 31,25)
Der eBook-Verkauf erfolgt durch die Lehmanns Media GmbH (Berlin) zum Preis in Euro inkl. MwSt.
  • Download sofort lieferbar
  • Zahlungsarten anzeigen

Dieses Praxisbuch führt Sie in die Welt von OSGi ein und vermittelt Ihnen alles, was Sie wissen müssen, um OSGi erfolgreich in Ihrem Projekt einzusetzen. Es unterstützt Sie bei der Auswahl der Werkzeuge und der geeigneten Realisierungsvarianten und nicht zuletzt bei der Migration bestehender Applikationen. Die Themen reichen von der Beschreibung des zentralen bnd-Tools von Peter Kriens über die Kollaboration von Spring und OSGi bis zu Betriebsüberwachung mittels JMX, von verteilten OSGi-Systemen bis zum dynamischen Rich Client. Der Build-Prozess wird ausführlich beschreiben, da er eine zentrale Rolle in der Software-Erstellung einnimmt und enormes Effektivitäts-Potential hat. Und natürlich kommt auch das Testen nicht zu kurz. Die Test-getriebene Entwicklung ist wie überall auch für OSGi-Bundles Pflicht. Egal, ob Sie OSGi erst kennen lernen wollen oder Ihr OSGi-Know-how vertiefen wollen, Sie finden in diesem Buch aktuelle und kompetente Informationen, die Sie direkt in Ihrem Projekt anwenden können.

Bernd Weber ist Consultant bei der Trivadis GmbH. Seine Schwerpunkte sind Systemintegration und -migration, Software-Architekturen, Open Source Software und OSGi.Patrick Baumgartner ist Senior Software Consultant und Partner bei der Swiftmind GmbH mit Fokus auf Software-Architektur und agile Entwicklung mit Java/JEE, Spring und OSGi.Prof. Dr. Oliver Braun ist Professor für Programmierung und verteilte Systeme an der Fachhochschule Schmalkalden und beschäftigt sich mit Haskell, Scala und Java.

Foreword 12
Vorwort der Autoren 14
Die Autoren 16
1 Einleitung 18
1.1 Die OSGi-Service-Plattform 19
1.1.1 Bundles 19
1.1.2 Das OSGi-Framework 21
1.2 Geschichte 35
1.3 OSGi Enterprise Design 36
1.3.1 Distributed OSGi 37
1.3.2 JMX-Management 39
1.4 OSGi vs. SOA 40
1.5 Über dieses Buch 41
2 OSGi-Implementierungen 46
2.1 Die OSGi Alliance 47
2.1.1 Vollmitglieder 47
2.1.2 Assoziierte Unternehmen 48
2.1.3 Unterstützer 48
2.2 Zertifizierte Produkte 48
2.3 Open Source-Implementierungen 49
2.3.1 Eclipse Equinox 49
2.3.2 Knopflerfish 52
2.3.3 Apache Felix 54
2.4 OSGi und das Spring-Framework 57
2.5 Fazit 59
3 JobTimer – Bundle-Grundlagen 62
3.1 Voraussetzungen 63
3.1.1 Projekt aufsetzen mit Maven 63
3.1.2 Verwenden als Eclipse-Projekt 65
3.1.3 POM-Datei anpassen 66
3.2 JobTimer implementieren 68
3.3 Verpacken als Bundle 71
3.3.1 Verwendung von bnd wrap 72
3.3.2 Verwendung von bnd build 73
3.4 Bundles installieren und starten 76
3.4.1 Starten der Plattform 76
3.4.2 Installieren von Bundles 77
3.4.3 Bundle Repositories 79
3.4.4 Starten von Bundles 80
3.4.5 Auflösen von Abhängigkeiten 80
3.4.6 Herunterfahren der Plattform 82
3.5 Fazit 82
4 GateKeeper – OSGi-Projekt aufsetzen 84
4.1 Voraussetzungen 84
4.1.1 PAX-Werkzeuge 85
4.1.2 Bundle-Automatik 85
4.1.3 Master POM erstellen 86
4.1.4 Bereitstellen der Bundles 88
4.1.5 Startreihenfolge 92
4.2 Erstellen des GateKeeper-Bundles 93
4.2.1 Erstellen des Maven-Moduls 93
4.2.2 Verwenden der Eclipse IDE 94
4.2.3 GateKeeper implementieren 96
4.2.4 Metadaten definieren 98
4.3 Fazit 99
5 Enunciator – Declarative Services 102
5.1 Voraussetzungen 102
5.1.1 Tücken optionaler Auflösung 103
5.2 Erstellen des Enunciator-Bundles 104
5.2.1 Erstellen des Maven-Moduls 104
5.2.2 Enunciator implementieren 105
5.2.3 Dienst deklarieren 108
5.2.4 Installieren des Bundles 110
5.3 Deklaration einer Komponente 111
5.3.1 Attribute einer Komponente 111
5.3.2 Kind-Elemente einer Komponente 112
5.4 GateKeeper erweitern 114
5.4.1 Zugriff auf das Enunciator-Package 114
5.4.2 Lifecycle-Methoden erweitern 115
5.4.3 Dynamischer Aufruf 116
5.4.4 Exkurs: ServiceTrackerCustomizer 117
5.4.5 Installieren des erweiterten Bundles 119
5.5 Ausführen der Bundles 120
5.5.1 Ausführen mit PAX Provision 120
5.5.2 Ausführen mit dem PAX Runner Plugin 121
5.6 Fazit 123
6 Migration – Java-Archive zu Bundles erweitern 124
6.1 Analyse des Java-Archivs 124
6.1.1 Ermitteln von Abhängigkeiten mit Hilfe von bnd 125
6.1.2 Analyse der Abhängigkeiten 126
6.1.3 Laufzeitumgebung 126
6.2 Standardmigration 128
6.2.1 Festlegen der Metadaten 128
6.2.2 Durchführen der Migration 130
6.2.3 Bereitstellung 131
6.3 Beistellungsmigration 131
6.3.1 Aufnahme von Ressourcen 132
6.3.2 Festlegen der Metadaten 134
6.3.3 Durchführen der Migration 134
6.3.4 Bereitstellung 135
6.4 Transitive Migration 136
6.4.1 Festlegen der Metadaten 136
6.4.2 Migration der BouncyCastle-Archive 137
6.4.3 Gemeinsame Migration aller BouncyCastle-Archive 139
6.4.4 Festlegen der Metadaten 140
6.4.5 Durchführen der Migration 140
6.4.6 Bereitstellung 141
6.5 Versionen und Versionsbereiche 141
6.5.1 Referenzierung über Versionen 142
6.5.2 Konventionen 142
6.6 Fazit 143
7 Worker – Fragmente und Integrationstests 144
7.1 Voraussetzungen 144
7.2 Die WorkerService-API 145
7.2.1 Schnittstellendefinition 145
7.2.2 POM-Datei 146
7.3 WorkerService implementieren 147
7.3.1 Vorüberlegungen 147
7.3.2 Der Quellcode 147
7.3.3 Komponente deklarieren 153
7.3.4 POM-Datei anpassen 154
7.4 GateKeeper erweitern 155
7.5 Laufzeitverhalten 158
7.5.1 Bundle stop 159
7.5.2 Bundle start 160
7.5.3 Bundle update 160
7.5.4 Bundle refresh 161
7.6 Fragmente 162
7.6.1 Verwendung im Projekt 162
7.6.2 Erstellung des Bundles 163
7.6.3 Festlegen der Metadaten 163
7.6.4 Test des Fragments 163
7.7 Integrationstest mit PAX Exam 164
7.7.1 Test-Bundle erstellen 165
7.7.2 POM-Datei anpassen 165
7.7.3 Generierter Integrationstest 168
7.7.4 Einfacher Integrationstest 168
7.7.5 Erweiterter Integrationstest 171
7.8 Fazit 177
8 SkilledWorker – Blueprint Services 178
8.1 Voraussetzungen 179
8.2 Erstellen des SkilledWorker-Bundles 179
8.2.1 Erstellen des Maven-Moduls 179
8.2.2 Verwenden der Eclipse IDE 180
8.2.3 SkilledWorker implementieren 180
8.3 Blueprint Services 186
8.4 Spring Dynamic Modules for OSGi 189
8.4.1 GateKeeper erweitern 192
8.4.2 Services filtern 193
8.5 Fazit 195
9 WebMonitor – Webapplikationen mit OSGi 198
9.1 Voraussetzungen 198
9.2 Erstellen des WebMonitor-Webbundles 199
9.2.1 Anpassen des POMs 199
9.2.2 Services und Controller bereitstellen 201
9.2.3 JSP View erzeugen 205
9.2.4 Manifest anpassen 206
9.2.5 OSGi-spezifisches web.xml 207
9.3 Fazit 209
10 Remote Services – Informationen über Distanz austauschen 210
10.1 Voraussetzungen 210
10.2 Erstellen des RemoteLogServer-Bundles 211
10.2.1 Erstellen des Maven-Moduls 211
10.2.2 Implementierung des RemoteLogServices 211
10.3 Bundles starten mit PAX Runner 213
10.3.1 Installation von PAX Runner 214
10.3.2 Starten des RemoteLogServer mit PAX Runner 214
10.4 Webservice testen 215
10.5 Remote Service konsumieren 216
10.6 Enunciator mit Fragment erweitern 216
10.7 GossipMonger starten 217
10.8 Fazit 220
11 Police – System-Monitoring im laufenden Betrieb 222
11.1 Installation der Apache Felix Web Console 222
11.2 Konfiguration der Web Console 225
11.2.1 Benutzer/Passwort ändern 225
11.2.2 HTTP-Ports anpassen 226
11.3 Fazit 227
12 Big Brother – Überwachung und Steuerung von außen 228
12.1 JobTimer-Intervall über JMX verändern 228
12.2 JobTimer-Interval im Bundle-Cache persistieren 232
12.3 Fazit 235
13 Launcher – Starten von OSGi-Anwendungen 236
13.1 Framework Launching API 236
13.1.1 Schnittstellen 237
13.1.2 Framework Eigenschaften 237
13.2 Erstellen des Launchers 239
13.2.1 Maven-Projekt erstellen 239
13.2.2 Der Launcher im Quelltext 239
13.2.3 Framework starten 244
13.2.4 FrameworkFactory definieren 244
13.2.5 Framework konfigurieren 245
13.2.6 Infrastrukturmaßnahmen 245
13.2.7 Applikations-Bundles 250
13.3 Launcher bereitstellen 251
13.3.1 Abhängigkeiten kopieren 251
13.3.2 Manifest erweitern 252
13.3.3 Assembly erstellen 252
13.3.4 Launcher testen 253
13.3.5 Bereitgestellte ApplicationBundles 254
13.4 Fazit 254
14 Aliens – Bundles from Outer (Java) Space 256
14.1 Scala 256
14.2 ScalaModules 258
14.3 Das Chirp-Bundle 260
14.4 Fazit 265
Stichwortverzeichnis 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.

Erscheint lt. Verlag 1.1.2010
Verlagsort München
Sprache deutsch
Themenwelt Mathematik / Informatik Informatik Programmiersprachen / -werkzeuge
Schlagworte Praxisbuch • Projektmanagement • Spring
ISBN-10 3-446-42437-7 / 3446424377
ISBN-13 978-3-446-42437-1 / 9783446424371
Informationen gemäß Produktsicherheitsverordnung (GPSR)
Haben Sie eine Frage zum Produkt?
PDFPDF (Wasserzeichen)

DRM: Digitales Wasserzeichen
Dieses eBook enthält ein digitales Wasser­zeichen und ist damit für Sie persona­lisiert. Bei einer missbräuch­lichen Weiter­gabe des eBooks an Dritte ist eine Rück­ver­folgung an die Quelle möglich.

Dateiformat: PDF (Portable Document Format)
Mit einem festen Seiten­layout eignet sich die PDF besonders für Fach­bücher mit Spalten, Tabellen und Abbild­ungen. Eine PDF kann auf fast allen Geräten ange­zeigt werden, ist aber für kleine Displays (Smart­phone, eReader) nur einge­schränkt geeignet.

Systemvoraussetzungen:
PC/Mac: Mit einem PC oder Mac können Sie dieses eBook lesen. Sie benötigen dafür einen PDF-Viewer - z.B. den Adobe Reader oder Adobe Digital Editions.
eReader: Dieses eBook kann mit (fast) allen eBook-Readern gelesen werden. Mit dem amazon-Kindle ist es aber nicht kompatibel.
Smartphone/Tablet: Egal ob Apple oder Android, dieses eBook können Sie lesen. Sie benötigen dafür einen PDF-Viewer - z.B. die kostenlose Adobe Digital Editions-App.

Buying eBooks from abroad
For tax law reasons we can sell eBooks just within Germany and Switzerland. Regrettably we cannot fulfill eBook-orders from other countries.

Mehr entdecken
aus dem Bereich
Apps programmieren für macOS, iOS, watchOS und tvOS

von Thomas Sillmann

eBook Download (2025)
Carl Hanser Verlag GmbH & Co. KG
CHF 40,95
Apps programmieren für macOS, iOS, watchOS und tvOS

von Thomas Sillmann

eBook Download (2025)
Carl Hanser Verlag GmbH & Co. KG
CHF 40,95