OSGi für Praktiker - Prinzipien, Werkzeuge und praktische Anleitungen auf dem Weg zur `kleinen SOA`

Bernd Weber

OSGi für Praktiker

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

2010

274 Seiten

Format: PDF, Online Lesen

E-Book: €  31,99

E-Book kaufen

E-Book kaufen

ISBN: 9783446424371

 

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

 

© 2009-2024 ciando GmbH