Web Services (Axis)

17
Web Services (Axis) ETIS SS05

description

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). - PowerPoint PPT Presentation

Transcript of Web Services (Axis)

Page 1: Web Services (Axis)

Web Services (Axis)

ETIS SS05

Page 2: Web Services (Axis)

ETIS SS05 Nadine Fröhlich Web Services (Axis) 2

Gliederung

• Motivation

• Ablauf der Kommunikation

• Bestandteile– SOAP

– WSDL

– UDDI

• AXIS– Web Services erstellen

– Web Services nutzen

• Zusammenfassung

Page 3: Web Services (Axis)

ETIS SS05 Nadine Fröhlich Web Services (Axis) 3

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

Page 4: Web Services (Axis)

ETIS SS05 Nadine Fröhlich Web Services (Axis) 4

Ablauf der Kommunikation

WSDLWSDL

SOAP

veröffentlichenfinden

zusammenarbeiten

Provider(Service)

Requester(Client)

ServiceRegistry

UDDI

Page 5: Web Services (Axis)

ETIS SS05 Nadine Fröhlich Web Services (Axis) 5

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

Page 6: Web Services (Axis)

ETIS SS05 Nadine Fröhlich Web Services (Axis) 6

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

Page 7: Web Services (Axis)

ETIS SS05 Nadine Fröhlich Web Services (Axis) 7

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>

Page 8: Web Services (Axis)

ETIS SS05 Nadine Fröhlich Web Services (Axis) 8

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

Page 9: Web Services (Axis)

ETIS SS05 Nadine Fröhlich Web Services (Axis) 9

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

Page 10: Web Services (Axis)

ETIS SS05 Nadine Fröhlich Web Services (Axis) 10

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)

Page 11: Web Services (Axis)

ETIS SS05 Nadine Fröhlich Web Services (Axis) 11

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

Page 12: Web Services (Axis)

ETIS SS05 Nadine Fröhlich Web Services (Axis) 12

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>

Page 13: Web Services (Axis)

ETIS SS05 Nadine Fröhlich Web Services (Axis) 13

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

Page 14: Web Services (Axis)

ETIS SS05 Nadine Fröhlich Web Services (Axis) 14

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());

}

Page 15: Web Services (Axis)

ETIS SS05 Nadine Fröhlich Web Services (Axis) 15

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

Page 16: Web Services (Axis)

ETIS SS05 Nadine Fröhlich Web Services (Axis) 16

JAX-RPC

Quelle: JAX, Java APIs for XML Kick Start

Page 17: Web Services (Axis)

ETIS SS05 Nadine Fröhlich Web Services (Axis) 17

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