Geleitwort | 6 |
Vorwort | 8 |
Inhaltsverzeichnis | 10 |
1 Einleitung | 18 |
1.1 Zielgruppen | 18 |
1.2 Warum Web Services und nicht SOA? | 19 |
1.3 Warum mit Java? | 21 |
1.4 Didaktischer Anspruch | 21 |
2 Das Beispiel als Rückgrat des Buches | 24 |
2.1 Über den Sinn und Unsinn von Beispielen | 24 |
2.1.1 Das Fallbeispiel – autodidaktisch | 25 |
2.2 Was kann man den Kapiteln entnehmen? | 28 |
2.2.1 Beispielszenarien | 33 |
2.2.2 Die Kapitel und ihre Operationen, Nachrichten und Prozesse | 35 |
3 Historischer Abriss | 38 |
3.1 Aktuelle und artverwandte WS-Technologien | 39 |
3.1.1 Fazit oder der Begriff des Service | 43 |
3.2 Technologische Fakten | 44 |
3.2.1 WS-I Basic-Profile 1.1 | 45 |
3.3 Eine Bilanz | 46 |
3.4 Zusammenfassung | 48 |
4 Werkzeuge, Spezifikationen und Arbeitsumgebung | 50 |
4.1 Überblick | 50 |
4.2 Java API for XML Web Services – JAX-WS | 50 |
4.3 Metro Web Service Stack | 51 |
4.4 Java Development Kit und Web Services | 53 |
4.4.1 Überblick | 53 |
4.4.2 Java Endorsed Standards Override Mechanism | 54 |
4.4.3 JAX-WS RI unter J2SE 5.0 | 54 |
4.5 Dem API-Versionsdilemma entkommen – praktische Tipps | 55 |
4.6 OpenESB – GlassFish Enterprise Service Bus | 55 |
4.7 Apache-Ant-Build-Werkzeug und Ant Tasks für Web Services | 56 |
4.8 Die Eclipse-Entwicklungsumgebung | 58 |
4.9 Microsoft Visual Studio C# Express | 58 |
4.10 Zusammenfassung | 59 |
4.11 Checkliste | 59 |
5 Serviceorientierte Architektur | 60 |
5.1 Überblick | 60 |
5.2 Serviceorientierte Architektur | 60 |
5.3 Dienste | 61 |
5.4 Bestandteile, technische Ebenen | 63 |
5.5 SOA und Web Services | 65 |
5.6 Governance, SOA und Web Services | 66 |
5.7 Zusammenfassung | 68 |
6 Web-Service-Protokolle | 70 |
6.1 Einführung | 70 |
6.2 Ein kurzer Ausflug in die Welt von XML und XML-Schema | 71 |
6.2.1 XML (eXtensible Markup Language) | 72 |
6.2.2 Zusammenfasssung | 79 |
6.2.3 XML-Namensräume | 79 |
6.2.4 Zusammenfasssung | 87 |
6.2.5 XML-Schema | 87 |
6.2.6 Zusammenfassung | 108 |
6.3 SOAP als Kommunikationsprotokoll | 109 |
6.3.1 Prolog | 109 |
6.3.2 Was ist SOAP? | 109 |
6.3.3 SOAP-Versionen | 111 |
6.3.4 SOAP und Web Services | 111 |
6.3.5 Weg einer SOAP-Nachricht | 113 |
6.3.6 Aufbau einer einfachen SOAP-Nachricht | 114 |
6.3.7 SOAP-Nachrichtenverfahren | 119 |
6.3.8 SOAP und Herr Kainer | 128 |
6.3.9 SOAP-Binding | 137 |
6.4 Zusammenfassung | 144 |
6.4.1 Übungsaufgaben | 145 |
7 Web Services und die Web Service Description Language | 146 |
7.1 Überblick | 146 |
7.2 Was ist ein Web Service? | 147 |
7.3 Web Service Description Language (WSDL) | 147 |
7.3.1 Geschichte | 147 |
7.3.2 WSDL 1.1 | 148 |
7.3.3 WSDL 2.0 | 161 |
7.3.4 Welche WSDL-Version und welche Web-Service-Engine nutzen? | 170 |
7.4 Von WSDL zum Dienst – Contract-First-Ansatz | 171 |
7.4.1 Der Contract-First-Ansatz | 171 |
7.4.2 Dienst: WSDL anlegen und Java-Dienst-Stub generieren | 171 |
7.4.3 Dienst: Den Dienst schreiben | 174 |
7.4.4 Dienst: Ein einfacher Dienst-Starter | 175 |
7.4.5 Dienstenutzer: WSDL finden und Java-Part generieren | 177 |
7.4.6 Ein einfacher Dienstenutzer | 177 |
7.5 Von Java zum Dienst – Code-First-Ansatz | 180 |
7.5.1 Der Code-First-Ansatz | 180 |
7.5.2 JAX-WS-Unterstützung für den Code-First-Ansatz | 181 |
7.5.3 Einen Dienst entwickeln | 181 |
7.5.4 Ein einfacher Dienst-Starter | 185 |
7.5.5 Ein einfacher Dienstenutzer | 186 |
7.6 Versionierung von Diensten | 188 |
7.6.1 Überblick | 188 |
7.6.2 Eine Strategie | 190 |
7.7 Web-Service-Design und Governance | 193 |
7.8 Zusammenfassung | 195 |
7.9 Übungsaufgaben | 196 |
8 Nachrichteninhalte beeinflussen – Handler | 198 |
8.1 Überblick | 198 |
8.2 Handler und Handlerkette | 198 |
8.2.1 Was sind Handler? | 198 |
8.2.2 Was zu beachten ist | 200 |
8.2.3 JAX-WS-Technologie und Handler | 202 |
8.3 Handler-Typen | 202 |
8.3.1 Handler auf Ebene der vollständigen Nachricht | 203 |
8.3.2 Handler auf Ebene der Nutzdaten | 205 |
8.4 Das Beispiel: Konfiguration und Laufzeit | 207 |
8.5 Zusammenfassung | 208 |
8.6 Übungsaufgaben | 208 |
9 Vom lokalen System zum Enterprise Service Bus | 210 |
9.1 Überblick | 210 |
9.2 Der Enterprise Service Bus | 211 |
9.3 Unser ESB: OpenESB oder auch GlassFish Enterprise Service Bus | 212 |
9.4 Installation und Konfiguration in unsere Eclipse-Umgebung | 213 |
9.5 Ein Beispiel: ATM-Dienst im Enterprise Service Bus | 215 |
9.5.1 Den Diensteanbieter entwickeln | 216 |
9.5.2 Dienst installieren und testen | 219 |
9.5.3 Den Dienstenutzer vorbereiten | 220 |
9.5.4 Den Dienstenutzer entwickeln | 224 |
9.6 Logging von HTML-Header und SOAP-Nachrichten | 239 |
9.7 Haken und Ösen | 240 |
9.8 Zusammenfassung | 241 |
10 Metadaten und Interoperabilität von Diensten | 242 |
10.1 Überblick | 242 |
10.2 Richtlinien an Dienste formulieren: WS-Policy | 242 |
10.2.1 Ziele von WS-Policy | 242 |
10.2.2 WS-Policy im Detail | 244 |
10.3 Routing der Nachrichten: WS-Addressing | 247 |
10.3.1 Überblick | 247 |
10.3.2 Spezifikation | 249 |
10.3.3 Adressangaben in unserem Beispiel | 250 |
10.4 Bootstrapping, Metadaten und Transfer | 252 |
10.4.1 Austausch von Metadaten: WS-Transfer | 252 |
10.4.2 Austausch der Metadaten: WS-MetadataExchange | 253 |
10.5 Web Service Interoperability Technologies (WSIT) und Metro | 255 |
10.5.1 Bestandteile | 255 |
10.5.2 Ein illustrierendes Beispiel | 258 |
10.5.3 Ausblick | 266 |
10.6 Zusammenfassung | 267 |
10.7 Übungsaufgaben | 267 |
11 Message Optimization | 268 |
11.1 Überblick | 268 |
11.2 XML-binary Optimized Packaging (XOP) | 268 |
11.3 SOAP Message Transmission Optimization Mechanism | 270 |
11.4 Policies für SOAP MTOM | 271 |
11.5 Ein Beispiel: Einen Kredit beantragen | 272 |
11.5.1 Kreditantrag – Standardvariante | 272 |
11.5.2 Kreditantrag – MTOM-Variante | 276 |
11.6 Zusammenfassung | 278 |
11.7 Übungsaufgaben | 279 |
12 Reliable Messaging Technology | 280 |
12.1 Überblick | 280 |
12.2 Die Technologie | 280 |
12.3 Policies für das Reliable Messaging | 282 |
12.3.1 Standard-Policies | 282 |
12.3.2 Erweiterungen der Hersteller | 283 |
12.4 Garantierte Nachrichtenübertragung und der ATM-Dienst | 284 |
12.5 Zusammenfassung | 289 |
12.6 Übungsaufgaben | 289 |
13 Web-Service-Sicherheit | 290 |
13.1 Einführung | 290 |
13.1.1 Die Struktur des Kapitels | 291 |
13.2 Basisbegriffe | 292 |
13.2.1 WS-Security und seine Bedeutung | 292 |
13.2.2 Integrität und Diskretion | 294 |
13.2.3 Rolle des WS-Security-Standards | 295 |
13.2.4 PKI – oder das Schlüsselerlebnis | 296 |
13.2.5 XML-Encryption und XML-Signature | 301 |
13.3 Nachrichtensicherheit mit SSL/TLS | 302 |
13.3.1 SSL/TLS mit dem GlassFish ESB | 303 |
13.4 Präparation des GlassFish ESB | 305 |
13.4.1 Installation und Aktualisierung der GlassFish-Server-SSL-Zertifikate | 306 |
13.4.2 Installation und Aktualisierung der GlassFish-Client-SSL-Zertifikate | 308 |
13.4.3 Konfiguration eines autorisierten GlassFish-Benutzers | 310 |
13.5 Beispiel: SSL-Verschlüsselung für Diensteanbieter und -nutzer | 313 |
13.5.1 Diensteanbieter | 314 |
13.5.2 Dienstenutzer | 321 |
13.5.3 Zusammenfassung | 328 |
13.6 Beispiel: Authentifizierung von Benutzernamen mittels symmetrischer Verschlüsselung | 328 |
13.6.1 Diensteanbieter | 329 |
13.6.2 Dienstenutzer | 335 |
13.6.3 Zusammenfassung | 340 |
13.7 Beispiel: Nachrichtensicherung über Zertifikate | 341 |
13.7.1 Diensteanbieter | 342 |
13.7.2 Dienstenutzer | 346 |
13.8 Zusammenfassung | 350 |
13.8.1 Checkliste | 350 |
13.8.2 Übungsaufgaben | 352 |
14 Web Service Transaktionen | 354 |
14.1 Überblick | 354 |
14.2 Transaktionen | 354 |
14.3 Web Services Transactions (WS-Transaction) | 355 |
14.3.1 WS-Coordination | 356 |
14.3.2 WS-AtomicTransaction | 357 |
14.3.3 WS-BusinessActivity | 360 |
14.4 Hinter den Kulissen – Verbindungen und Nachrichten | 361 |
14.5 Web Services und Transaction-Policy | 362 |
14.6 Zusammenspiel von Dienst und Ressourcen | 364 |
14.7 Erweiterung des ATM-Dienstes | 365 |
14.7.1 Operationen transaktional sichern – Teil 1 | 365 |
14.7.2 Der Dienstenutzer | 369 |
14.8 Zusammenfassung | 371 |
14.9 Übungsaufgaben | 371 |
15 Business-Prozesse | 372 |
15.1 Überblick | 372 |
15.2 Prozesse und Dienste | 373 |
15.3 Business Process Excecution Language – BPEL | 374 |
15.4 Erweiterung des ATM-Beispiels | 377 |
15.4.1 Das Beispiel | 377 |
15.5 Zusammenfassung | 383 |
15.6 Übungsaufgaben | 383 |
16 REST | 384 |
16.1 REST? Der Rest von was? | 384 |
16.2 Abgrenzung und Vergleich zu SOAP | 385 |
16.2.1 Methoden | 387 |
16.2.2 Ressourcen | 388 |
16.2.3 Standards | 388 |
16.2.4 Nachrichten | 389 |
16.2.5 Status und Session | 390 |
16.2.6 Sicherheit | 391 |
16.2.7 Vor- und Nachteile | 392 |
16.3 REST und Herr Kainer | 393 |
16.3.1 Java API for RESTful Services | 394 |
16.3.2 Installation der REST-Bibliotheken | 395 |
16.3.3 Beispiel: Anzeige von Fördermöglichkeiten | 395 |
16.3.4 Zusammenfassung | 398 |
17 Web Services ohne Web und SOA | 400 |
17.1 Typische Problemfälle | 401 |
17.2 Reifegradmodelle | 403 |
17.3 Governance | 406 |
17.4 Wiederverwendung | 408 |
17.5 Herausforderungen | 412 |
17.5.1 Technische Herausforderungen | 413 |
17.5.2 Menschliche Herausforderungen | 417 |
17.6 Checkliste? | 418 |
17.6.1 Fazit | 421 |
A Unterschiede zwischen SOAP Version 1.1 und 1.2 | 424 |
A.1 Dokumentstruktur | 424 |
A.2 Zusätzliche oder geänderte Syntax | 424 |
A.3 SOAP-Bindung an HTTP | 425 |
B Web-Service-Standards im Überblick | 427 |
C Lösungen zu den Übungsaufgaben | 429 |
C.1 Lösungen zu Kapitel 6 | 429 |
C.2 Lösungen zu Kapitel 7 | 431 |
C.3 Lösungen zu Kapitel 8 | 434 |
C.4 Lösungen zu Kapitel 10 | 435 |
C.5 Lösungen zu Kapitel 11 | 436 |
C.6 Lösungen zu Kapitel 12 | 437 |
C.7 Lösungen zu Kapitel 13 | 438 |
C.8 Lösungen zu Kapitel 14 | 439 |
C.9 Lösungen zu Kapitel 15 | 440 |
Literaturverzeichnis | 442 |
Index | 446 |