Thilo Frotscher, Marc Teufel, Dapeng Wang Java Web Services mit Apache Axis2 ntwickier
Vorwort 13 Wer sollte dieses Buch lesen? 14 Aufbau 14 Wichtiger Hinweis zu den Listings 16 Feedback 16 Danksagung 16 Preface 19 1 Einleitung 21 1.1 Entstehung 21 1.2 Unterstützte Standards 22 1.3 Was beinhaltet Axis2? 23 1.4 Warum Axis2 einsetzen? 24 Bessere Performance durch StAX und AXIOM 24 Flexiblere Kommunikationsinfrastruktur 24 Einfacheres Deployment von Services 24 Bessere Unterstützung während der Entwicklung 24 Erweitertes Handler-Konzept 25 Bessere Unterstützung von aktuellen Standards 25 1.5 Die Zukunft von Axis2 25 2 Web Service Grundlagen 27 2.1 SOAP 27 Nachrichtenformat 28 Verarbeitungsmodell 31 SOAP-Fault 34 Nachrichtenaustausch 36 Protokoll-Binding * 39 SOAP 1.2 vs. SOAP 1.1 41 2.2 WSDL 44 MEPs - Message Exchange Patterns 45 WSDL 1.1 46 WSDL 2.0 52 2.3 Code First vs. Contract First 54 Der Code-First-Ansatz 55 Der Contract-First-Ansatz 58 Einsatz von Contract First bei bereits bestehendem Code 61 Java Web Services mit Apache Axis2 5
3 Erste Schritte 63 3.1 Axis2 Distributionen 63 3.2 Installation von Axis2 64 Die Axis2 Web-Anwendung 64 Standard Distribution 67 3.3 Zentrale Konzepte von Axis2 69 AXIOM 69 Service-Archive 69 Message Receiver 70 Repository 71 3.4 Implementierung einfacher Web Services mit POJOs 72 3.5 Deployment von Services in einem Standalone-Server 80 3.6 Einsatz der Axis2 Web-Anwendung 81 Deployment von Web Services 81 Service-Administration 83 3.7 Entwicklung eines Clients für den SimpleHotelService 85 Direkte Verwendung der Client-API von Axis2 85 Entwicklung von Clients mit Hilfe von Codegenerierung 89 3.8 Geruhsame Nächte mit Axis Hotels 91 4 Entwicklung mit Axis2 93 4.1 Eclipse als Entwicklungsumgebung verwenden 93 Projekteinrichtung 93 Eclipse Web Tools Platform 95 4.2 Axis2 Eclipse Plug-ins 96 Code-Generator-Wizard 96 Service Archiver Wizard 96 4.3 Debugging 98 4.4 Diving into the Sources 99 Den Axis2 Quelltext sichten und browsen 100 Axis2 Quelltext erforschen - Ein kleines Beispiel 101 4.5 Werkzeuge für den Umgang mit SOAP-Nachrichten 103 Apache TCPMon 103 SOAP erforschen und lernen mit TCPMon 106 SOAPMonitor 107 5 5.1 5.2 AXIOM Einführung StAX Push vs. Pull Parsing StAX API XML parsen mit StAX 111 111 111 111 113 114
5.3 AXIOM AXIOM Architektur AXIOM API Caching 122 123 125 132 5.4 Web Service-Implementierung mit AXIOM 135 6 Client-API 141 6.1 6.2 6.3 6.4 ServiceClient Aufrufmuster Request-Response mit blockierendem API Request-Response mit nicht-blockierendem API über eine Verbindung Request-Response mit nicht-blockierendem API über zwei Verbindungen Einweg-Aufruf Zuverlässiger Einweg-Aufruf Clientseitige Konfiguration JavaBean-Properties Generische Properties HTTP Properties OperationClient 141 144 146 147 149 153 154 155 155 157 160 164 7 ' Contract First mit Axis2 169 7.1 7.2 7.3 7.4 Codegenerierung Aufruf von WSDL2Java von der Kommandozeile Axis2 Code-Generator-Wizard für Eclipse Ant-Task Implementierung und Deployment von Services Der Ordner resources Generierter Code und Implementierung des Service Paketierung und Deployment Implementierung von Service-Clients Einwegkommunikation 169 170 177 181 183 183 186 190 190 198 8 Weiterführende Aspekte der Entwicklung 203, 8.1 8-2 8.3 Fehlerbehandlung Definition von Fehlern in XML Schema und WSDL Codegenerierung Lebenszyklus von Services Session-Verwaltung Request-Session-Scope SOAP-Session-Scope Transport-Session-Scope 203 205 208 212 216 219 220 222 Java Web Services mit Apache Axis2
8.4 9 9.1 9.2 9.3 9.4 9.5 9.6 9.7 9.8 Application-Scope Session-Verwaltung mit Client-Anwendungen Codebeispiel REST Einführung SOAP oder REST? REST in Axis2 konfigurieren HTTP GET HTTP POST HTTP GET oder HTTP POST? Architektur und Konfiguration Interne Verarbeitung von SO AP-Nachrichten Flows Phasen Dispatch-Mechanismus Interne Datenstrukturen: Description und Context Description-Hierarchie Context-Hierarchie Beziehung zwischen Context- und Description-Hierarchien Laden von Konfigurationen Globale Konfiguration Parameter Message Receiver Transporte Global eingeschaltete Module und Modulkonfigurationen Standardmäßige Modulversion Phasen Target Resolver Listeners / Observers Konfiguration von Services Services und Service-Gruppen Bestimmung der Namen von Services und Service-Gruppen WSDL-Dokumente und automatische WSDL-Generierung Elemente der Datei services.xml Service-Parameter Deployment von Services Axis2 Web-Anwendung Standalone-Server Zugriff eines Service auf Context und Konfiguration Zugriff auf Ressourcen im Service-Archiv Start von Axis2 mit entferntem Reoositorv 223 224 224 230 230 231 232 233 234 243 245 246 246 251 255 257 257 259 261 262 263 264 265 265 266 266 266 267 268 270 270 271 271 272 277 279 279 280 281 281 282
10 Handler und Module 285 10.1 Handler 286 Die Schnittstelle Handler 287 Implementierung von Handlern 289 Konfiguration von Handlern 290 10.2 Module 292 Die Schnittstelle Module 293 Konfiguration von Modulen 294 Paketierung und Deployment 299 Engagement 302 Dynamisches Engagement zur Laufzeit 307 11 Data Binding 309 11.1 Grundlagen des XML Data Binding 310 11.2 Code-Generator-Framework 312 11.3 ADB - Axis Data Binding 318 ADB Schema-Compiler 318 ADB Integration in Axis2 322 Codegenerierung 323 11.4 XMLBeans 333 11.5 JiBX 340 11.6 JAXBRI 349 11.7 JAXME 352 11.8 Zusammenfassung 354 12 Message Receiver & ServiceObjectSupplier 357 12.1 Einführung 357 Blick zurück: Provider in Axis 1.x 357 Blick nach vorne: Reise durch die Axis2 Engine 358 12.2 Nachrichtenempfänger 359 Contract First 360 Message Receiver von Innen 360 12.3 Axis2 und Groovy 362 12.4 Message Receiver und WSDL 369 12.5 Enterprise JavaBeans und Axis2 371 Einführung 371 Möglichkeiten, eine EJB zu integrieren 373 Der Bankleitzahlen-Service als EJB 374 Die Realisierung von EJBMessageReceiver 379 EJB als Web Service bereitstellen 380 Java Web Services mit Apache Axis2
12.6 ServiceObjectSupplier 12.7 Spring Framework Einführung Axis2 und das Spring Framework Der Bankleitzahlen-Service als Spring-Bean SpringServletContextObjectSupplier Erforderliche Spring-Bibliothken SpringAppContextAwareObjectSupplier 12.8 Die EJBUtil Implementierung 13 MTOM & SwA 13.1 Base64 & SwA Base64 SwA 13.2 XOP&MTOM XOP MTOM SwA vs. MTOM 13.3 MTOM in Axis2 OMText MTOM Web Service mit AXIOM-API MTOM Data Binding 13.4 SwA in Axis2 13.5 Attachment-Caching 14 Transportprotokolle 14.1 Transportmechanismus TransportListener TransportSender 14.2 Aktivierung von Transportprotokollen auf Service-Ebene 14.3 HTTP Transport Receiver für Standalone-Modus SimpleHttpServer in eigene Applikationen einbetten CommonsHTTPSender 14.4 TCP 14.5 Mail Transport (SMTP) Konfiguration des Mail-Transports Web Service über Mail 14.6 JMS Installation von ActiveMQ Services mit JMS-Kommunikation Client-Anwendungen mit TMS-Kommunikation 383 385 385 386 388 393 395 396 400 409 409 410 411 414 414 418 419 420 420 421 432 441 444 447 447 448 449 450 451 451 453 454 458 460 461 466 471 471 472 475 10
15 Module für WS-* Erweiterungen 477 15.1 WS-Addressing 478 Grundlagen 478 WS-Addressing mit Axis2 480 15.2 WS-Policy 485 Grundlagen 485 Neethi: WS-Policy mit Axis2 488 15.3 WS-Security 490 Grundlagen 490 Rampart: WS-Security mit Axis2 494 Konfiguration mit WS-Policy 534 15.4 WS-ReliableMessaging 537 Grundlagen 537 Sandesha2: WS-ReliableMessaging mit Axis2 542 A B B.l B.2 B.3 C C.l C.2 D XML Schema und WS WSDL2Java Kommandozeile Ant-Task Maven-Plug-in Java2WSDL Kommandozeile Maven-Plug-in Maven 2 AAR Plug-in Stichwortverzeichnis ron Axis Hotels 557 565 565 565 565 569 569 570 573 575 Jtwi Web Servias mit Apache Axis2