Web Services (Axis) ETIS SS05 Gliederung • Motivation • Ablauf der Kommunikation • Bestandteile – SOAP – WSDL – UDDI • AXIS – Web Services erstellen – Web Services nutzen • Zusammenfassung Web Services (Axis) ETIS SS05 Nadine Fröhlich 2 Motivation - Web Service (WS) • Software-Anwendung im Internet, die durch standardbasierte Protokolle wie HTTP nutzbar ist • durch Uniform Resource Identifier (URI) eindeutig identifizierbar • Beschreibung, Verzeichnisdienste und Nachrichtenaustausch XML-basiert • als Middleware im Bereich E-Business von zunehmender Bedeutung • bekannte Beispiele: Web Services von google, amazon, ebay Web Services (Axis) ETIS SS05 Nadine Fröhlich 3 Ablauf der Kommunikation UDDI Service Registry finden Requester (Client) Web Services (Axis) WSDL WSDL veröffentlichen SOAP zusammenarbeiten ETIS SS05 Nadine Fröhlich Provider (Service) 4 Wichtige Bestandteile • SOAP – Simple Object Access Protocol (bis SOAP1.2) – Protokollstandard des W3C zur Kommunikation • WSDL – Web Service Description Language – Sprache zur Beschreibung der unterstützten Methoden und Parameter • UDDI – Universal Description, Discovery, and Integration – Verzeichnisdienst zur Registrierung von Web Services – ermöglicht dynamisches Finden von Web Service Web Services (Axis) ETIS SS05 Nadine Fröhlich 5 SOAP • Protokoll zum Datenaustausch in dezentralisierter, verteilter Umgebungen – Basiert auf XML Datenrepräsentation und Internet-Protokollen zur Nachrichten-Übertragung (gängig: SOAP über HTTP + TCP) – Standardisiert, plattform-, programmiersprachenunabhängig, robust, skalierbar – durch XML: etwas Overhead und geringere Performance • Struktur: – Envelope: oberstes Element, umschließt gesamte Nachricht – Header (optional): Metainformationen der Nachricht (Routing, Verschlüsselung, Zugehörigkeit zu einer Transaktion) – Body: Nutzdaten, die vom Empfänger interpretiert werden – Evtl. Anhänge - abhängig von Transportprotokoll an Nachricht gehängt Web Services (Axis) ETIS SS05 Nadine Fröhlich 6 SOAP <?xml version="1.0" encoding=“utf-8“?> <soap:Envelope xmlns:soap=“http://schemas.xmlsoap.org/soap/envelope“> <soap:Header> <Digest>xyz</Digest> </soap:Header> <soap:Body> <StockReport> <Symbol>IBM</Symbol> <Prise>65.42</Prise> </StockReport> </soap:Body> </soap:Envelope> Web Services (Axis) ETIS SS05 Nadine Fröhlich 7 WSDL • plattform-, programmiersprachen-, protokollunabhängiger XMLStandard zur WS-Beschreibung (für Nachrichtenaustausch) • Inhalt: funktionelle Angaben zum Interface, Zugangsprotokoll, Deployment-Details, Zugriffsinformationen • Hauptelemente: – types: Definition der Datentypen zum message-Austausch – messages: Abstrakte Definitionen übertragener Daten – portType: Menge von abstrakten Arbeitsschritten – binding: Bestimmt konkretes Protokoll + Datenformat für Arbeitsschritte und Mitteilungen – ports: Spezifizieren Adresse für binding (i.d.R. URI) – services: Zusammenfassung verwandter Ports • mit WSDL auf Server verfügbare Funktionen bestimmenbar Web Services (Axis) ETIS SS05 Nadine Fröhlich 8 UDDI • Verzeichnisdienst - zentrale Rolle für dynamische WS – Services beschreiben (mittels WSDL), finden und integrieren – plattformunabhängig, Kommunikation über SOAP • Drei Arten der Informationen über WS: – White Pages - eine Art Telefonbuch • Namensregister der Anbieter + Detailangaben und Kontaktinformationen – Yellow Pages - Branchenverzeichnis • Suche gemäß Taxonomie (Ort, Dienstart,...) , verweist auf White Pages – Green Pages • Informationen über Geschäftsmodell und Geschäftsprozesse des Unternehmens, technische Details zu angebotenen WS Web Services (Axis) ETIS SS05 Nadine Fröhlich 9 AXIS • Open source Implementierung von SOAP – Von Apache Software Foundation – Basiert auf SAX • Anwendung, u.a. – Implementierung + Bereitstellung von Web-Services – Entwicklung von Clients • Unterstützte Standards – SOAP – WSDL – JAX-RPC-Spezifikation (Simple API for XML-based RPC) – SAAJ (SOAP with Attachments for Java) Web Services (Axis) ETIS SS05 Nadine Fröhlich 10 AXIS - Eigene Web Services erstellen I • JWS-Dateien – Als WS zu veröffentlichende Java-Klasse Endung .jws geben – .jws in Wurzelverzeichnis von axis kopieren – Bei erstem Aufruf über URL automatisches Kompilieren + Ausführen – begrenzt Konfigurationsmöglichkeiten, Packagenutzung… • AdminClient + Web Service Deployment Descriptor (WSDD) – .class-Datei zu veröffentlichenden WS in axis\WEB-INF\classes kopieren – Mit WSDD (XML-basierte Konfigurationsdatei) • Beschreibung Deployment-Vorgang + • Verhalten von Axis bei Ausführung des WS Web Services (Axis) ETIS SS05 Nadine Fröhlich 11 AXIS - Eigene Web Services erstellen II • WSDD-Datei wird Admin-Client zugeführt und damit wird Web Service in Laufzeitumgebung eingebracht • Bsp.-WSDD-Datei: <deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"> <service name="MyService" provider="java:RPC"> <parameter name="className" value="bsp.MyService"/> <parameter name="allowedMethods" value="*"/> </service> </deployment> Web Services (Axis) ETIS SS05 Nadine Fröhlich 12 AXIS - Web Services nutzen I • Über URL-Eingabe im Browser http://localhost:8080/axis/services/Version?method=getVersion • Client schreiben – Instanzierung der Klassen Service und Call, um damit: • Metadaten zum Aufruf des Service zu speichern und • Methoden bereitzustellen, mit denen sich der Service aufrufen lässt – URL (Endpoint) des Services angeben – Aufzurufende Methode angeben – Aufruf des Web-Service mit Methode invoke Web Services (Axis) ETIS SS05 Nadine Fröhlich 13 AXIS - Web Services nutzen II try { String endpoint = "http://localhost:8080/axis/services/echo"; Service service = new Service(); Call call = (Call) service.createCall(); call.setTargetEndpointAddress( new java.net.URL(endpoint) ); call.setOperationName(new QName("echoString")); String ret = (String) call.invoke( new Object[] { "Peter" } ); System.out.println("Hello " + ret); } catch (Exception e) { System.err.println(e.toString()); } Web Services (Axis) ETIS SS05 Nadine Fröhlich 14 Zusammenfassung • Vorteile – Kostenvorteile, da basierend auf offenen Standards (Lizenzkosten) und allgegenwärtigen internetbasierten Technologien – HTTP-Protokoll zur Datenübertragung: selten Probleme mit Firewalls (Gegensatz: CORBA, RMI) – nicht an HTTP gebunden (SMTP, FTP möglich) – offene und flexible Architektur, unabhängig von Plattformen, Programmiersprachen und Protokollen • Nachteile – Sicherheitsaspekte - wichtige Web Services verschlüsseln! – Geringere Performance: XML, Parsen und Dateigröße – relativ viel Know How erforderlich Web Services (Axis) ETIS SS05 Nadine Fröhlich 15 JAX-RPC Quelle: JAX, Java APIs for XML Kick Start Web Services (Axis) ETIS SS05 Nadine Fröhlich 16 Literatur • Wikipedia – http://de.wikipedia.org/wiki/SOAP – http://de.wikipedia.org/wiki/Web_Service • http://ivs.cs.unimagdeburg.de/~schmiete/lehre/vorlesung/ss_05_md.html • http://www.torsten-horn.de/techdocs/soap.htm • T. Bayer, T. Frotscher, M. Teufel, D. Wang, Die Achse des Guten, Javamagazin 07/04. • http://ws.apache.org/axis/ • http://www.w3.org/2002/ws/ • A. Chowdhury, P. Choudhary, JAX, Java APIs for XML Kick Start, Sams, 2002. http://www.developer.com/java/ent/article.php/2109561 Web Services (Axis) ETIS SS05 Nadine Fröhlich 17