170 likes | 317 Views
Web Services (Axis). ETIS SS05. Gliederung. Motivation Ablauf der Kommunikation Bestandteile SOAP WSDL UDDI AXIS Web Services erstellen Web Services nutzen Zusammenfassung. Motivation - Web Service (WS).
E N D
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)
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)
Ablauf der Kommunikation UDDI Service Registry veröffentlichen finden WSDL WSDL Requester (Client) SOAP Provider (Service) zusammenarbeiten Web Services (Axis)
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)
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)
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)
WSDL • plattform-, programmiersprachen-, protokollunabhängiger XML-Standard 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)
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)
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)
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)
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)
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)
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)
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)
JAX-RPC Quelle: JAX, Java APIs for XML Kick Start Web Services (Axis)
Literatur • Wikipedia • http://de.wikipedia.org/wiki/SOAP • http://de.wikipedia.org/wiki/Web_Service • http://ivs.cs.uni-magdeburg.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)