Seminarunterlage Version: 4.03 Version 4.03 vom 2. Januar 2017
Dieses Dokument wird durch die veröffentlicht.. Alle Rechte vorbehalten. Alle Produkt- und Dienstleistungs-Bezeichnungen sind Warenzeichen oder eingetragene Warenzeichen der jeweiligen Firmen und beziehen sich auf Eintragungen in den USA oder USA-Warenzeichen. Weitere Logos und Produkt- oder Handelsnamen sind eingetragene Warenzeichen oder Warenzeichen der jeweiligen Unternehmen. Kein Teil dieser Dokumentation darf ohne vorherige schriftliche Genehmigung der weitergegeben oder benutzt werden. Die besitzt folgende Geschäftsstellen Adressen der Karl-Schurz-Str. 19a D-33100 Paderborn Tel.: (+49) 0 52 51 / 10 63-0 An der alten Ziegelei 5 D-48157 Münster Tel.: (+49) 02 51 / 9 24 35 00 Welser Straße 9 D-86368 Gersthofen Tel.: (+49) 08 21 / 507 492 0 Kreuzberger Ring 13 D-65205 Wiesbaden Tel.: (+49) 06 11 / 7 78 40 00 Wikingerstraße 18-20 D-51107 Köln Tel.: (+49) 02 21 / 8 70 61 0 Internet: http://www.ordix.de Email: seminare@ordix.de Seite 2 Version: 4.03
Inhaltsverzeichnis 1 Grundlagen... 8 1.1 AGENDA... 9 1.2 Alter Wein in neuen Schläuchen?... 10 1.3 Die Entstehung von Webservices... 11 1.4 Klassische C/S Anwendungen vs. Webservices... 12 1.5 Web-Anwendungen vs. Webservices... 13 1.6 Probleme ohne Webservices... 14 1.7 Was sind Webservices?... 15 1.8 Merken... 16 1.9 Fazit Warum Webservices?... 17 1.10 SOA (Service Oriented Architectur)... 18 1.11 Was ist ein Dienst?... 19 1.12 WS-I Basic-Profile... 20 1.13 Technologische Aspekte... 21 1.14 Metro Java Webservice Stack... 22 1.15 JDK vs. Metro... 23 2 XML Dokumente... 24 2.1 HTML... 25 2.2 Warum reicht HTML nicht aus?... 26 2.3 XML... 27 2.4 Auszeichnungssprachen... 28 2.5 HTML vs. Generische Auszeichnungssprachen... 29 2.6 SGML... 30 2.6.1 Anwendungen von SGML... 31 2.6.2 Warum XML und nicht HTML/SGML?... 32 2.7 Was bedeutet Erweiterbarkeit?... 33 2.8 Anwendungsspezifische Standards... 34 2.9 Was ist ein XML-Dokument?... 35 2.10 Grundbausteine von XML... 36 2.11 XML-Elemente... 37 2.12 Inhalt von XML-Elementen... 38 2.12.1 Unstrukturierter Inhalt... 39 2.12.1.1 PCDATA... 40 2.12.1.2 CDATA... 41 2.12.2 Strukturierter Inhalt... 42 2.12.3 Gemischter Inhalt... 43 2.12.4 Leerer Inhalt... 44 2.12.4.1 Warum leere Elemente?... 45 2.13 XML-Attribute... 46 2.13.1 Attribut statt Element... 47 2.13.2 Element statt Attribut... 48 2.13.3 Attribut oder Element verwenden... 49 2.13.4 Reservierte Attribute... 50 2.14 XML-Deklaration... 51 2.14.1 XML-Deklaration: Zeichenkodierung... 52 2.15 Wohlgeformte XML-Dokumente... 53 2.16 Namenskonventionen... 54 2.16.1 Namensräume Namenskonflikte... 55 2.16.2 Auflösung durch Präfixe... 56 2.16.3 Namensräume Allgemein... 57 2.16.4 Namensräume in XML... 58 2.16.5 Standard Namensraum... 59 2.16.6 Beispiel: Namensräume... 60 2.16.7 Beispiel: Überschreibung vom Standard Namensraum... 61 2.16.8 Standard-Namensräume: Gültigkeit... 62 3 W3C-Schema... 63 Version: 4.03 Seite 3
3.1 Vorteile von W3C-Schemata... 64 3.2 Die Beispiel-DTD... 65 3.3 Äquivalentes W3C-Schema... 66 3.4 Allgemeines über W3C-Schema... 67 3.5 W3C-Schema, Wurzel Element... 68 3.6 Ziel-Namensraum... 69 3.7 Instanz eines Schemas... 70 3.8 Beispiel: XML-Dokument... 71 3.9 Beispiel: Standard Namensraum... 72 3.10 Beispiel: schemalocation... 73 3.11 Beispiel: W3C-Schema und XML-Dokument... 74 3.12 Schema, Element mit Strukturierten Inhalt... 75 3.13 Schema, Benannte Datentypen... 76 3.14 Schema, Anonyme Datentypen... 77 3.15 Dokument-Typen und Datentypen... 78 3.16 Mit Datentypen ist es einfacher... 79 3.17 Schema Datentypen, Deklaration vs. Definition... 80 3.18 Verschiedene Arten von Schema Datentypen... 81 3.19 Einfache vs. komplexe Datentypen... 82 3.20 Anonyme vs. benannte Datentypen... 83 3.21 Globale vs. lokale Deklarationen von Datentypen... 84 4 SOAP 1.2 Webservice s... 85 4.1 Was ist SOAP?... 86 4.2 Wozu SOAP?... 87 4.3 SOAP-Nachricht?... 88 4.4 Beispiel: SOAP Nachricht... 89 4.5 SOAP Versionen... 90 4.6 SOAP Version und Envelope-Namensraum... 91 4.7 Fazit - SOAP Nachricht... 92 4.8 SOAP Nachricht (SOAP v.1.1)... 93 4.9 SOAP Nachricht (SOAP v 1.2)... 94 4.10 Nachrichteninhalt (Body)... 95 4.11 Briefkopf (Header)... 96 4.12 Beispiel: SOAP Nachricht mit Header und Body... 97 4.13 Erweiterung von SOAP-Nachrichten... 98 4.14 Hypothetisches Beispiel... 99 4.15 SOAP 1.2 Encoding...100 4.15.1 SOAP 1.2 Literal Encoding... 100 4.15.2 Literal Encoding im Schema, RPC und Document... 101 4.15.3 SOAP-Nachricht mit RPC Style... 102 4.15.4 SOAP-Nachricht, RPC-Ergebnis (1/2)... 103 4.15.5 Beispiel: SOAP-Nachricht mit Style rpc/literal... 104 4.15.6 Beispiel: SOAP-Nachricht mit Style rpc/encoded... 105 4.15.7 SOAP-Nachricht mit Style document/literal... 106 4.15.8 Beispiel: SOAP-Nachricht mit Style document/literal... 107 4.15.9 Beispiel: SOAP-Nachricht mit Style document/encoded... 108 4.15.10 Beispiel: SOAP-Nachricht mit Style document/literal wrapped... 109 4.15.11 SOAP Encoding SOAP Arrays... 110 4.15.12 Beispiel: Kodierung von Fehlermeldungen... 111 4.15.13 Elemente des SOAP 1.2 Fault Blocks... 112 4.16 Verarbeitung von SOAP-Nachrichten...113 4.16.1 SOAP Processing Model (Nachrichtenverarbeitung)... 113 4.16.2 Arten von SOAP-Knoten... 114 4.16.3 Roles, Identifizierung von SOAP-Knoten... 115 4.16.4 SOAP-Knoten und Header-Blöcke... 116 4.16.5 Role, Attribut-Werte... 117 4.16.6 mustunderstand, Attribut-Werte... 118 4.16.7 Zuständigkeiten vom Empfänger... 119 4.16.8 Zuständigkeiten von Zwischenknoten... 120 Seite 4 Version: 4.03
4.16.9 Zuständigkeiten vom Endknoten... 121 4.16.10 Beispiel: Header-Blöcke... 122 4.16.11 Wozu Festlegung der Zuständigkeiten?... 123 4.17 Übertragung von SOAP-Nachrichten...124 4.17.1 Protokoll-Bindung (Binding)... 124 4.17.2 Anforderungen an Protokoll-Bindung... 125 4.17.3 WS-I BP 1.1 - Standardisierte Protokolle... 126 4.17.4 Beispiel: SOAP 1.2 über HTTP-POST (Anfrage)... 127 4.17.5 Beispiel: SOAP über HTTP-POST (Antwort)... 128 4.17.6 Beispiel: SOAP 1.2 über HTTP-GET... 129 4.18 Vor- und Nachteile von SOAP...130 4.18.1 SOAP Vorteile... 130 4.18.2 SOAP Nachteile... 131 5 WSDL...132 5.1 Webservices und WSDL...133 5.2 WSDL?...134 5.3 Wozu dient WSDL?...135 5.4 WSDL Versionen...136 5.5 WSDL 1.1 Elemente...137 5.6 Fazit WSDL 1.1 Aufbau...138 5.7 Abstrakte Schnittstellen und Binding...139 5.8 WSDL 1.1, WS-I BP 1.1 Namensräume...140 5.9 Beispiel: GoogleSearch.wsdl...141 5.10 WSDL 1.1, Prinzipieller Aufbau - <definitions>...143 5.11 WSDL 1.1, Prinzipieller Aufbau - <types>...144 5.12 Beispiel...145 5.13 Beispiel: Import der XSD...146 5.14 WSDL 1.1, Prinzipieller Aufbau - <message>...147 5.15 WSDL 1.1, Prinzipieller Aufbau - <part>...148 5.16 Modellierung von part-elemente in Nachrichten...149 5.17 WSDL 1.1, Prinzipieller Aufbau - <porttype>...150 5.18 WSDL 1.1, Prinzipieller Aufbau operation...151 5.19 WSDL 1.1, Prinzipieller Aufbau <input>, <output>...152 5.20 Interaktionsmuster - Message Exchange Pattern...153 5.21 Fehlermeldungen - Message Exchange Pattern...154 5.22 WSDL 1.1, Prinzipieller Aufbau Datentyp, Nachrichten, Porttypes...155 5.23 WSDL 1.1, Prinzipieller Aufbau - <binding>...156 5.24 Binding Struktur ohne konkretes Protokoll...157 5.25 Binding - Erweiterungselemente, soap:binding...158 5.26 soap:operation...159 5.27 soap:header...160 5.28 soap:body...161 5.29 soap:body encoded...162 5.30 WSDL 1.1, Prinzipieller Aufbau - <service>...163 5.31 Service...164 5.32 WSDL 1.1 vs. WSDL 2.0...165 5.33 Vorteile von WSDL...166 5.34 Nachteile von WSDL...167 6 JAX-WS...168 6.1 Webservices Frameworks...169 6.2 Webservices Frameworks...170 6.3 JAX-WS?...171 6.4 JAX-WS Allgemein Entwicklung von Webservices...172 6.5 JAX-WS Allgemein Realisierungsstrategien...173 6.6 Realisierungsstrategie - Bottom / Up...174 6.7 Realisierungsstrategie - Bottom / Up...175 6.8 JAX-WS Runtime in JRE 6...176 6.9 JAX-WS Runtime in Tomcat 6...177 Version: 4.03 Seite 5
6.10 Beispiel: sun-jaxws.xml...178 6.11 sun-jaxws.xml, Weitere Endpoint-Attribute...179 6.12 Beispiel: web.xml...180 6.13 Realisierungsstrategie Top / Down...181 6.14 Realisierungsstrategie Top / Down...182 6.15 JAX-WS Allgemein Client...184 6.16 JAX-WS Clients Entwickeln...185 6.17 Beispiel: JAX-WS Client (Synchron)...186 6.18 JAX-WS Oneway Methoden...187 6.19 JAX-WS, Asynchrone Clients...188 6.20 Beispiel: JAX-WS Client (Asynchron mit globalem Binding)...189 6.21 Beispiel: JAX-WS Client (Asynchron mit spezifischem Binding)...190 6.22 JAX-WS Annotationen...191 6.22.1 JAX-WS Annotations... 191 6.22.2 @Webservice... 192 6.22.3 @SOAPBinding... 193 6.22.4 Beispiel: @WebService, @SOAPBinding... 194 6.22.5 @WebMethod... 195 6.22.6 Beispiel: @WebMethod... 196 6.22.7 @WebParam... 197 6.22.8 Beispiel: @WebParam... 198 6.22.9 @WebResult... 199 6.22.10 Beispiel: @WebResult... 200 6.22.11 @WebFault... 201 6.22.12 Beispiel: @WebFault (1/3)... 203 6.22.13 Beispiel: @WebFault (2/3)... 204 6.22.14 Beispiel: @WebFault (3/3)... 205 6.22.15 @M TOM... 206 6.22.16 Beispiel: @MTOM... 207 6.23 Handler...208 6.23.1 Was sind Handler?... 208 6.23.2 JAX-WS Handler... 209 6.23.3 JAX-WS Handler programmieren... 210 6.23.4 Beispiel: Logischer Handler... 211 6.23.5 Beispiel: SOAP Handler... 212 6.23.6 JAX-WS Handler im POJO aktivieren... 213 6.23.7 Zusammenfassung - JAX-WS Webservice Provider/Consumer... 214 7 JAX-RS / Re st...216 7.1 Realisierungsstrategien JAX-RS...217 7.2 Webservice mit JAX-RS...218 7.3 Beispiel...219 7.4 Projektstruktur...220 7.5 Konfiguration JAX-RS Servlet...221 7.6 Beispiel: REST Service...222 7.7 WADL...223 7.8 REST Service Client...224 7.9 JAX-RS Annotationen...225 7.10 Template Parameter...226 7.11 Template-Parameter @Path("{Template}")...227 7.12 Template Parameters @Path("{Template :.+}")...228 7.13 @Path : Sub-resource locator...229 7.14 Beispiel...230 7.15 REST - CRUD Operationen...231 7.16 Beispiel...232 7.17 Request Parameter...233 7.18 @QueryParam...234 7.19 @FormParam...235 7.20 @HeaderParam...236 7.21 Context Parameter...237 Seite 6 Version: 4.03
7.22 @Context / UriInfo...238 7.23 @Context / HttpHeaders...239 7.24 MIME Typ mit @Consumes, @Produces MediaType...240 7.25 Response...241 7.26 Builder...242 7.27 ResponseBuilder...243 7.28 Beispiel...244 7.29 Jersey Client API Basics...246 7.30 XML JSON...247 7.31 POJO JSON support web.xml...248 7.32 Server...249 7.33 Client...250 Version: 4.03 Seite 7