Java Web Services

Werbung
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
Herunterladen