Java Web Services mit Seminar „Softwaretechnik“ WS 2004/05 Lehrstuhl für Praktische Informatik an der WWU Münster Jürgen de Braaf - 05.01.2005 Inhalt Definition und Eigenschaften von Web Services Einführendes Beispiel Die drei Haupttechnologien SOAP WSDL UDDI Zusammenfassung & Ausblick 2 Definition von Web Services i. w. S.: Ein Stückchen Geschäftslogik, auf das über standardisierte Internet Protokolle wie HTTP oder SMTP zugegriffen werden kann und sich irgendwo im Internet befindet. i. e. S.: Sammelbegriff neuer Technologien wie SOAP, WSDL, UDDI, die auf standardisiertem XML basieren und nicht Teil eines proprietären Standards sind, wie zum Beispiel CGI-Skripte. 3 Eigenschaften von Web Services XML-basiert XML als Basis soll Web Services von jeglichen Plattformen, Betriebssystemen und Netzwerkprotokollen unabhängig machen. Dieser Anspruch unterscheidet Web Services eindeutig von vorherigen Technologien. Lose gekoppelt Client unabhängig vom Interface eines Web Service ändert sich das Interface, so soll der Client weiterhin den Web Service ohne Anpassung nutzen können Grobkörnig Web Services sollen grobkörnige Dienste darstellen, hinter denen viele verschiedene, einzelne feinkörnige Operationen stehen Dienste, die auf der Ebene eines gesamten Unternehmens nützlich sind. 4 Eigenschaften von Web Services (Forts.) synchrone Aufrufe Client blockiert und wartet auf die Antwort des Dienstes. asynchrone Aufrufe Client kann weiterarbeiten und Ergebnisse zu einem späteren Zeitpunkt abholen. Asynchrone Aufrufe unterstützen die lose Kopplung von Systemen. Unterstützung von Remote Procedure Calls Aufrufen entfernter Prozeduren, Funktionen und Methoden. Web Service kann Dienste selbst bereitstellen oder den eingehenden Aufruf in einen Aufruf einer EJB- oder .NETKomponente übersetzen. 5 Eigenschaften von Web Services (Forts.) Unterstützung von Dokumentenaustausch Mithilfe von XML Austausch von komplexen Dokumenten möglich z. Bsp. komplexe Bedienungsanleitung oder Bilddateien 6 Apache EXtensible Interaction System (Axis) SOAP-Engine (SOAP–Implementierung), mit der Clients, Server und Gateways erstellen werden können, die mittels des Kommunikationsprotokolls SOAP kommunizieren. enthält API, die einem viel Arbeit bei der Formulierung von SOAPAnfragen und Antworten abnimmt. stand-alone Server plug-in für den Tomcat-Server Tools zum (automatischen) Erstellen von WSDL Dokumenten 7 Einführendes Beispiel - Aktienkurse WKN CheckStockClient MyStockService Aktienwert Client Dienst 8 Einführendes Beispiel - Aktienkurse LIVE – DEMO CheckStockClient.java MyStockService.java deploy.wsdd 9 Interaktion mit einem Web Service Anwendung Dienst HTTP - Anfrage SOAP-Client SOAP SOAP Prozessor HTTP - Antwort Diskrete Geschäftslogik WSDL UDDIRegistrierungsstelle 10 Simple Object Access Protocol (SOAP) Rückgrat einer Web Service Anwendung Entwicklung wurde erst durch XML möglich SOAP wird verstanden als Kommunikationsprotokoll RPC-Mechanismus und Standard für Interoperabilität 11 SOAP – Aufbau eines Envelopes SOAP - Header SOAP - Block SOAP - Block SOAP - Body SOAP - Block SOAP - Block SOAP - Envelope 12 SOAP - Anfrage <?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> xmlns:xsd="http://www.w3.org/2001/XMLSchema" <SOAP-ENV:Header> </SOAP-ENV:Header> <SOAP-ENV:Body> <ns1:serviceStock xmlns:ns1="http://webservices.seminar"> <wkn xsi:type="xsd:string">30392</wkn> </ns1:serviceStock> </SOAP-ENV:Body> </SOAP-ENV:Envelope> 13 SOAP - Antwort <?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> xmlns:xsd="http://www.w3.org/2001/XMLSchema" <SOAP-ENV:Body> <ns1:serviceStockResponse xmlns:ns1="http://webservices.seminar"> <serviceStockReturn xsi:type="xsd:string">45.741958669707074 </serviceStockReturn> </ns1:serviceStockResponse> </SOAP-ENV:Body> </SOAP-ENV:Envelope> 14 SOAP mit Anhang (SwA) MIME - Header SOAP - Envelope SOAP - Header SOAP - Block SOAP - Block SOAP - Body SOAP - Block SOAP - Block Anhang 1 Anhang 2 15 SOAP mit Anhang (Forts.) <?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope … <SOAP-ENV:Body> <ns1:serviceStock xmlns:ns1="http://webservices.seminar"> <wkn xsi:type="xsd:string">30392</wkn> <attachment href=“cid:the-attachment“/> </ns1:serviceStock> </SOAP-ENV:Body> </SOAP-ENV:Envelope> 16 SOAP – Fault Envelope <?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope … <SOAP-ENV:Body> <SOAP-ENV:Fault> <faultcode>SOAP-ENV:Server</faultcode> <faultstring>Test Fault</faultstring> <faultactor>/axis/services/MyStockService</faultactor> <detail> … </detail> <SOAP-ENV:Fault> </SOAP-ENV:Body> </SOAP-ENV:Envelope> 17 SOAP – Message Service vs. RPC enthält keinen expliziten Methodenaufruf angesprochener Dienst parst die Nachricht wie jedes gewöhnliche XML Dokument anschließend verarbeitet Dienst die enthaltenen Daten 18 Web Service Description Language (WSDL) Anwendung Dienst HTTP - Anfrage SOAP-Client SOAP Prozessor HTTP - Antwort Diskrete Geschäftslogik WSDL UDDIRegistrierungsstelle 19 Web Service Description Language (WSDL) XML Syntax zur Beschreibung eines Web Service formuliert was ein Dienst anbietet wie man seine Operationen aufruft wo man ihn findet vergleichbar mit einer Interface Definition Language (IDL), wie z. Bsp. bei CORBA jedoch kann WSDL Diente unabhängig vom Nachrichtenformat oder Netzwerkprotokoll beschreiben 20 WSDL (Forts.) Nachrichten als abstrakte Beschreibungen der auszutauschenden Daten Porttypen als abstrakte Sammlungen der Operationen eines Dienstes Porttyp kann an konkretes Protokoll und Datenformat gebunden werden Quelltext für die Implementierung bzw. aus den Klassen kann WSDL Dokument automatisch abgeleitet und erzeugt werden WSDL2Java Java2WSDL 21 WSDL - Syntax <?xml version="1.0" encoding="UTF-8" ?> <wsdl:definitions targetNamespace="http://127.0.0.1:8080/axis/services/MyStockService" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="http://127.0.0.1:8080/axis/services/MyStockService" … <wsdl:message name="serviceStockResponse"> <wsdl:part name="serviceStockReturn" type="soapenc:string" /> </wsdl:message> <wsdl:message name="serviceStockRequest"> <wsdl:part name="arg" type="soapenc:string" /> </wsdl:message> <wsdl:portType name="MyStockService"> <wsdl:operation name="serviceStock" parameterOrder="arg"> <wsdl:input message="impl:serviceStockRequest" name="serviceStockRequest" /> <wsdl:output message="impl:serviceStockResponse" name="serviceStockResponse" /> </wsdl:operation> </wsdl:portType> … 22 WSDL – Syntax (Forts.) … <wsdl:binding name="MyStockServiceSoapBinding" type="impl:MyStockService"> <wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http" /> <wsdl:operation name="serviceStock"> … </wsdl:operation> </wsdl:binding> <wsdl:service name="MyStockServiceService"> <wsdl:port binding="impl:MyStockServiceSoapBinding" name="MyStockService"> <wsdlsoap:address location="http://127.0.0.1:8080/axis/services/MyStockService" /> </wsdl:port> </wsdl:service> </wsdl:definitions> 23 Universal Description Discovery and Intergration (UDDI) Anwendung Dienst HTTP - Anfrage SOAP-Client SOAP Prozessor HTTP - Antwort Diskrete Geschäftslogik WSDL UDDIRegistrierungsstelle 24 Universal Description Discovery and Intergration (UDDI) standardisierte Methode zum Veröffentlichen und Auffinden von Informationen über Web Services Industrie-Initiative, mit dem Ziel, ein plattformunabhängiges, offenes Framework zu schaffen, in dem Unternehmen andere Unternehmen aufsuchen können, um Geschäftstransaktionen durchführen zu können. 25 UDDI-Registrierungsstelle stellt folgende Informationen bereit: White Pages Yellow Pages grundlegende Kontaktinformationen über ein Unternehmen darunter der Name, die Adresse, Ansprechpartner und eindeutige Bezeichner wie Handelsregisternummer. Web Service kann anhand der Firma gefunden werden beschreibt Web Service mit verschiedenen Kategorien ermöglicht das Auffinden von Diensten anhand seiner Zuordnung wie Rückversicherer, Maschinenbau etc. Green Pages technische Informationen, die das Verhalten eines Dienstes beschreiben Informationen über Beziehungen innerhalb einer Gruppe von Web Services und Lokalisation des Dienstes 26 UDDI - Knoten Zukunft Software findet einen Dienst dynamisch und automatisch Gegenwart Auffinden von WS nur durch Fachwissen und manueller Suchtätigkeit, die ein entsprechender Business-Analyst mitbringt. Suchtätigkeit aus Anwendersicht vergleichbar mit InternetSuchmaschine für Gechäftsvorgänge diverse Portale wie www.xmethods.net stellen Diensteverzeichnisse zur Verfügung automatisiertes Bereitstellen und Aktualisieren von Daten in einer UDDI-Registrierungsstelle bereits jetzt möglich eingesetztes Toolkit sollte in der Lage sein die UDDIRegistrierungsstelle automatisiert zu kontaktieren und die Informationen bereitzustellen 27 UDDI – Knoten Aufbau des UDDI-Projekts spezifiert UDDI Business Registry (UBR) Public Cloud (öffentliche Wolke) Daten werden durch Replikation synchronisiert Daten können nur am Knoten, der Besitzer der Informationen ist, gelöscht werden Operatorknoten Operatorknoten Operatorknoten Public Cloud 28 UDDI – Knoten (Forts.) Firmen können private (interne) Operatorknoten betreiben private Operatorknoten können wiederum mit anderen privaten Knoten in Kontakt treten und eine private Wolke bilden Operato rknoten Operato rknoten Operato rknoten Operato rknoten Operato rknoten Private Cloud Operato rknoten Operato rknoten Operato rknoten Operato rknoten Private Cloud Private Cloud 29 UDDI - API Java unterstützt Entwickler bei dem Zugriff auf UDDI-Registrierungsstellen Java-basierte SOAP-API UDDI-Client-API JAXR-Spezifikation (Java API for XML Registries) Die UDDI-Spezifikation formuliert zwei APIs Inquiry-API Publishing-API Anfrage-URL und Veröffentlichungs-URL einer UDDIRegistrierungsstelle von SAP: http://udditest.sap.com/UDDI/api/inquiry und http://udditest.sap.com/UDDI/api/publish 30 Zusammenfassung Anwendung Dienst HTTP - Anfrage SOAP-Client SOAP Prozessor HTTP - Antwort Diskrete Geschäftslogik WSDL UDDIRegistrierungsstelle 31 Ausblick Thema Web Services hat Hype durchlebt bietet sehr viel Entwicklungspotential Im Vergleich zu vorherigen Technologien wie z.B. CORBA entwickelt sich standardisiertes, plattformunabhängiges Interaktions- und Austauschverfahren führt neue Konzepte wie UDDI-Registrierungsstellen ein dynamische Interaktion zwischen Software, die selbständig Dienste suchen und in ihre Infrastruktur einbinden solch ein Ökosystem wird zu zunehmenden Verzahnung von Softwaresystemen und im B2B Bereich zu neuen Geschäftsmodellen und -transaktionen führen. 32 Fragen? Vielen Dank für Eure Aufmerksamkeit! 33