Was sind Web Services? - Hu

Werbung
Vorstellung Phase 3
Web Services
Praktikum Informationsintegration
13.1.2005
Agenda
l
Phase 3
l
l
l
l
Web-Service-Aufgaben
Dokumentation
Wettbewerb
Web-Services
l
l
Einführung
Implementierung
13.1.2005
Praktikum Informationsintegration
2
1
Bisher, Phase 2
Einkauf
Kunde
WebShop
Schnittstelle
Integriertes
Schema
Phase 2
Webshop, Daten lesen
und schreiben, Verkaufen,
Handel mit einem Shop
Inventar Rechnung
13.1.2005
Versand
Praktikum Informationsintegration
3
Jetzt, Phase 3
Einkauf
Kunde
Kunde
Einkauf
WebShopService
Phase 3
Schnittstelle
Service anbieten, Handel
zwischen mehreren Shops
Integriertes
Schema
Inventar
13.1.2005
WebWebShopShop
Service
WebShopSchnittstelle
Service
Einkauf
Integriertes
Schema
Schnittstelle
Integriertes
Schema
Inventar Rechnung
Rechnung
Einkauf
Versand
Praktikum Informationsintegration
Inventar
Rechnung
Versand
Versand
4
2
Phase 3 - Überblick
l
Phase 3 besteht aus 3 Teilen
l
Web-Services erstellen, ohne
Funktionalität, zu Testzwecken (5 P.)
l
l
Volle Funktionalität (20 P.)
l
l
Abgabe, Mittwoch, 26.1.2005
Abgabe, Mittwoch, 9.2.2005
Dokumentation (5 P.)
l
Abgabe, Mittwoch, 9.2.2005
Achtung: diesmal harte deadlines!
13.1.2005
Praktikum Informationsintegration
5
Phase 3 - Wettbewerb
l
Simulation eines Geschäftstages
l
l
l
l
Phase 1: Waren verteilen
l
l
l
Kaufen und Verkaufen
Weiterverkaufen
Ziel: Geschickt Gewinn erwirtschaften
Aus Zentrallager einkaufen (festes Budget)
Liste mit Waren vorhanden
Phase 2: Waren zurückkaufen
l
l
Zufällige Produkte reihum bei den Firmen
Zum Listenpreis, entweder aus Lager oder als
Wiederverkauf
13.1.2005
Praktikum Informationsintegration
6
3
Web-Services Funktionalität
l
l
5 eigene Web-Services anbieten
2+ Web-Services nutzen
l
l
l
Protokoll
Einkaufen (Zentrallager)
Web Services anderer Firmen nutzen
l
l
10 andere !?
Integration?
13.1.2005
Praktikum Informationsintegration
7
Web-Services
l
Erster Teil
l
l
l
l
l
l
„Leerer“ Web-Service („Dummy“)
Keine Funktionalität
Bekannt machen
Testzwecke
Gruppenpasswort
Technologie erlernen
13.1.2005
Praktikum Informationsintegration
8
4
Service (1)
l
Lager räumen
l
l
void lagerLeeren()
Funktionalität
l
l
l
Lager leeren
Alle Produkte in allen Lagern löschen
Gewinne auf null setzen
13.1.2005
Praktikum Informationsintegration
9
Service (2)
l
Produkte einkaufen / Lager füllen
l
l
void produkteKaufen(long budget)
Funktionalität
l
l
l
l
Budget in Eurocent
Beliebig Bücher und CDs kaufen
Aus Zentrallager, Web-Service von uns
gestellt (Signatur, URL kommt)
Liste aller Produkte von uns gestellt
13.1.2005
Praktikum Informationsintegration
10
5
Service (3)
l
Produktinformationen abrufen
l
l
ProduktInformation produktInfo(String
produktName)
Funktionalität
l
Lagerbestand zu Endverkaufspreis
public class ProduktInformation {
public int anzahl; // Anzahl in Stück
public long preis; // Preis in Eurocent
}
13.1.2005
Praktikum Informationsintegration
11
Service (4)
l
Produkt kaufen
l
l
long bestellung(String produktName, long preis,
int anzahl, String firmenName)
Funktionalität
l
l
l
l
l
l
Verkaufen (return Rechn.-Nr.)
Nicht verkaufen (return -1)
Stück, Preis, Käufer
Transaktion protokollieren
Daten aktualisieren (Lager, Gewinn)
Als Zwischenhändler agieren
13.1.2005
Praktikum Informationsintegration
12
6
Service (5)
l
Gewinn mitteilen
l
l
long gewinn()
Funktionalität
l
Gibt den erwirtschafteten Gewinn zurück
13.1.2005
Praktikum Informationsintegration
13
Transaktionsprotokoll (1)
l
Verkaufsprotokoll
l
l
void verkauf(String verkaufsFirmenName, String
verkaufsPasswort, einkaufsFirmenName, String
produktName, int anzahl, long einzelpreis)
Funktionalität
l
l
Protokolliert Verkauf eines Produkts
Testen ob „geschummelt“ wird
13.1.2005
Praktikum Informationsintegration
14
7
Transaktionsprotokoll (2)
l
Einkaufsprotokoll
l
l
void einkauf(String einkaufsFirmenName, String
einkaufsPasswort, verkaufsFirmenName, String
produktName, int anzahl, long einzelpreis)
Funktionalität
l
l
Protokolliert Einkauf eines Produkts
Testen ob „geschummelt“ wird
13.1.2005
Praktikum Informationsintegration
15
Weiteres
l
Ablauf Abgabe
l
l
l
l
Szenario
Kaufen und Verkaufen
Weiteres nächste Woche
Dokumentation schreiben
l
Einzelheiten nächste Woche
13.1.2005
Praktikum Informationsintegration
16
8
Web Services
Einführung
Übersicht
l
Was sind Web-Services?
l
l
Web-Service Technologien
l
l
l
Allgemeines
SOAP
WSDL
Implementierung
l
Wie geht das mit Java und Tomcat?
13.1.2005
Praktikum Informationsintegration
18
9
Integrationsebenen (1)
Präsentationsebene
Prozeßebene
Anwendungslogikebene
Präsentationsfragmente
Portlets
Dienste
Dienstschnittstelle, -semantik
Dienstfindung, -orchestrierung
Informationsebene
Informationsquellen
Datenmodell, Schema,
semantische Heterogenität
Technische Ebene
Netzwerkprotokolle, RPC
Darstellungssyntax
Quelle: VL Informationsintegration und Web-Portale, Uni Karlsruhe
13.1.2005
Praktikum Informationsintegration
19
Integrationsebenen (2)
l
Bislang: Informationsperspektive
l
l
l
l
Einzubindende Anbieter sind Informationsquellen
Interaktion mit den externen Quellen läuft über das
Anfrage-Ergebnis-Paradigma
Es existiert eine zentrale Stelle, an der alle
Informationen zusammenlaufen
Hauptprobleme
l
l
Wie überwinde ich die technische Heterogenität?
Wie überwinde ich die semantische Heterogenität?
§
§
Anfrageübersetzung
Schemaintegration
Quelle: VL Informationsintegration und Web-Portale, Uni Karlsruhe
13.1.2005
Praktikum Informationsintegration
20
10
Integrationsebenen (2)
l
Jetzt: Dienstintegration
l
Einzubindende Anbieter sind Dienste
l
l
l
l
Kapselung von Daten und Funktionalität hinter einer
Schnittstelle, die die Funktion eines Vertrages hat
Dienst-/Methodenaufrufe vom Dienstnehmer an den
Dienstgeber als Interaktionsparadigma
Autonomen Dienste soll durch eine Infrastruktur die
gegenseitige Nutzung ermöglicht werden
=> Dienstorientierte Architekturen
Hauptprobleme
l
l
l
l
Wie
Wie
Wie
Wie
mache ich Dienste interoperabel?
finde ich benötigte Dienste?
beschreibe ich Dienste?
kombiniere/aggregiere ich Dienste?
Quelle: VL Informationsintegration und Web-Portale, Uni Karlsruhe
13.1.2005
Praktikum Informationsintegration
21
Bisher, Phase 2
Kunde
Einkauf
WebShop
Schnittstelle
Integriertes
Schema
Phase 2
Webshop, Daten lesen
und schreiben, Verkaufen,
Handel mit einem Shop
Inventar Rechnung
13.1.2005
Praktikum Informationsintegration
Versand
22
11
Jetzt, Phase 3
Einkauf
Kunde
WebShopService
Einkauf
WebShopService
Phase 3
Schnittstelle
Schnittstelle
Service anbieten, Handel
zwischen mehreren Shops
Integriertes
Schema
Integriertes
Schema
Inventar
13.1.2005
Rechnung
Versand
Inventar
Rechnung
Einkauf
Versand
Praktikum Informationsintegration
23
Dienstorientierte
Architektur
Dienstverzeichnis
(service registry)
publish
find
Dienstnehmer
(service requestor, client)
bind
invoke
Dienstgeber
(service provider, server)
Quelle: VL Informationsintegration und Web-Portale, Uni Karlsruhe
13.1.2005
Praktikum Informationsintegration
24
12
Was sind Web Services?
l
Web Services sind
l
l
l
l
l
l
verteilte,
lose gekoppelte und
wiederverwendbare Software-Komponenten, auf die
über Standard-Internetprotokolle
programmatisch zugegriffen werden kann.
Pragmatisch: Dienste, die mittels SOAP angesprochen
werden können
l
und (meist) mittels WSDL beschrieben werden
Quelle: VL Informationsintegration und Web-Portale, Uni Karlsruhe
13.1.2005
Praktikum Informationsintegration
25
Geschichte
l
1997/98
l
l
1999
l
l
l
stark von Microsoft dominierte Entwicklung, die aber zunächst aufgrund
anderer Prioritäten (XML Data u.a.) verschoben wurde
SOAP 1.0
Hinzukommen von IBM
2000
l
l
l
offizielle Submission von SOAP 1.1 ans W3C
Gründung der XML Protocol Arbeitsgruppe am W3C
UDDI-Spezifikation (Ariba, IBM, Microsoft)
l
2001
l
2002
l
2003
l
l
l
WSDL Submission
BPEL4WS (IBM, Microsoft) aus WSFL und XLANG
SOAP 1.2, WSDL 2.0 Working Draft
Quelle: VL Informationsintegration und Web-Portale, Uni Karlsruhe
13.1.2005
Praktikum Informationsintegration
26
13
Technik
l
l
l
SOAP
(Simple Object Access Protocol)
l Aufrufprotokoll
l unterschiedliche Transportprotokolle: HTTP, SMTP
WSDL
(Web Services Description Language)
l Schnittstellenbeschreibung
UDDI
(Universal Description, Discovery and Integration)
l Dienstbeschreibung und Auffindung
l universeller Verzeichnisdienst für Dienstleistungen
Quelle: VL Informationsintegration und Web-Portale, Uni Karlsruhe
13.1.2005
Praktikum Informationsintegration
27
SOAP, WSDL, UDDI
Registry
UDDI
UDDI
Client
SOAP
WSDL
UDDI
Web Service
Quelle: VL Informationsintegration und Web-Portale, Uni Karlsruhe
13.1.2005
Praktikum Informationsintegration
28
14
SOAP Überblick
l
l
In XML kodierter entfernter Methodenaufruf
(RPC) bzw. Nachrichtenaustauschprotokoll
Beliebiges Transportprotokoll, z.B.
l
l
l
synchrone Aufrufe über HTTP:
Aufrufer wartet auf die Dienstantwort
klassischer RPC
asynchrone Aufrufe über SMTP (Mail):
Entkopplung von Aufruf und Antwort
Messaging
Kodierungsregeln für Datentypen
l
Standard-Regeln entstammen XML Schema
Quelle: VL Informationsintegration und Web-Portale, Uni Karlsruhe
13.1.2005
Praktikum Informationsintegration
29
Nachricht
l
SOAP-Envelope
l
SOAP-Header
z.B. Authentifizierung, Routing, Logging,
Transaktionsnummern
l Metadaten über den Aufruf
l
l
SOAP-Body
die eigentliche Methode, die aufgerufen
werden soll
l die Parameter
l bzw. die ausgetauschte Nachricht
l
Quelle: VL Informationsintegration und Web-Portale, Uni Karlsruhe
13.1.2005
Praktikum Informationsintegration
30
15
SOAP Beispiel
l
l
Aufruf
Antwort
<soap:Envelope>
<soap:Body>
<xmlns:m="http://www.stock.org/stock" />
<m:GetStockPrice>
<m:StockName>IBM</m:StockName>
</m:GetStockPrice>
</soap:Body>
</soap:Envelope>
<soap:Envelope>
<soap:Body>
<xmlns:m="http://www.stock.org/stock" />
<m:GetStockPriceResponse>
<m:Price>34.5</m:Price>
</m:GetStockPriceResponse>
</soap:Body>
</soap:Envelope>
Quelle: VL Informationsintegration und Web-Portale, Uni Karlsruhe
13.1.2005
Praktikum Informationsintegration
31
WSDL Überblick
l
l
l
Welche Operationen bietet der Dienst an?
Welche Parameter haben die Operationen
l Struktur der Aufrufnachricht
l Struktur des Ergebnisses
l Rückgriff auf XML Schema
Wo und wie kann ich einen Dienst erreichen?
l Adresse
l Informationen über das Protokoll
l
l
l
z.B. SOAP, auch mehrere Protokolle!
verwendetes Transportprotokoll: HTTP, SMTP etc.
aber: keine semantische Dienstbeschreibung
Quelle: VL Informationsintegration und Web-Portale, Uni Karlsruhe
13.1.2005
Praktikum Informationsintegration
32
16
WSDL Aufbau
Port
Port
Port
andere Protokollbindung
SOAP-Binding
Operationen (Abstrakte Schnittstelle, PortType)
mit ihrer Signatur
Messages + Schema
Definition von Datenstrukturen
Quelle: VL Informationsintegration und Web-Portale, Uni Karlsruhe
13.1.2005
Praktikum Informationsintegration
33
WSDL
Beispiel
<definitions>
<types>
<xsd:schema> Typdefinitionen </xsd:schema>
</types>
<message name="..."> Nachrichtendefinition </message>
<portType name="...">
<operation>
<input message="..."/> <output message="..."/>
</operation>
</portType>
<binding name="...">
<operation name="..."><input><soap:body ...></input></operation>
</binding>
<service name="...">
<port name="..." binding="...">
<soap:address location="..." />
</port>
</service>
</definitions>
Quelle: VL Informationsintegration und Web-Portale, Uni Karlsruhe
13.1.2005
Praktikum Informationsintegration
34
17
Typdefinitionen
<definitions name="GoogleSearch„ targetNamespace="urn:GoogleSearch„ …. >
<types>
<xsd:schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="urn:GoogleSearch">
…
Eingebettete
<xsd:complexType name="ResultElement">
XML Schema<xsd:all>
<xsd:element name="summary" type="xsd:string"/>
Definitionen!
<xsd:element name="URL" type="xsd:string"/>
<xsd:element name="snippet" type="xsd:string"/>
<xsd:element name="title" type="xsd:string"/>
<xsd:element name="cachedSize" type="xsd:string"/>
<xsd:element name="relatedInformationPresent" type="xsd:boolean"/>
<xsd:element name="hostName" type="xsd:string"/>
<xsd:element name="directoryCategory" type="typens:DirectoryCategory"/>
<xsd:element name="directoryTitle" type="xsd:string"/>
</xsd:all>
</xsd:complexType>
13.1.2005
Praktikum Informationsintegration
35
Typdefinitionen (2)
<xsd:complexType name="ResultElementArray">
<xsd:complexContent>
<xsd:restriction base="soapenc:Array">
<xsd:attribute ref="soapenc:arrayType„ wsdl:arrayType="typens:ResultElement[]"/>
</xsd:restriction>
</xsd:complexContent>
Spezieller Typ
</xsd:complexType>
für Arrays!
<xsd:complexType name="GoogleSearchResult">
<xsd:all>
<xsd:element name="resultElements"
type="typens:ResultElementArray"/>
<xsd:element name="searchQuery"
type="xsd:string"/>
…
</xsd:all>
</xsd:complexType>
…
</xsd:schema>
</types>
13.1.2005
Praktikum Informationsintegration
36
18
Nachrichten
<message name="doGoogleSearch">
<part name="key"
type="xsd:string"/>
<part name="q"
type="xsd:string"/>
<part name="start"
type="xsd:int"/>
<part name="maxResults" type="xsd:int"/>
<part name="filter"
type="xsd:boolean"/>
<part name="restrict"
type="xsd:string"/>
<part name="safeSearch" type="xsd:boolean"/>
<part name="lr"
type="xsd:string"/>
<part name="ie"
type="xsd:string"/>
<part name="oe"
type="xsd:string"/>
</message>
Mehrere Teile,
pro Teil ein
Schematyp
<message name="doGoogleSearchResponse">
<part name="return"
type="typens:GoogleSearchResult"/>
</message>
13.1.2005
Praktikum Informationsintegration
37
Operationen
l
Schnittstellendefinition
l
l
Name der Methode, Eingabe- und Ausgabeparameter
Fehlerbehandlung
l
<fault name="..." message="...">
<portType name="GoogleSearchPort">
…
<operation name="doGoogleSearch">
<input message="typens:doGoogleSearch"/>
<output message="typens:doGoogleSearchResponse"/>
</operation>
</portType>
13.1.2005
Praktikum Informationsintegration
38
19
Protokollbindung
<binding name="GoogleSearchBinding" type="typens:GoogleSearchPort">
<soap:binding style="rpc"
transport="http://schemas.xmlsoap.org/soap/http"/>
…
<operation name="doGoogleSearch">
<soap:operation soapAction="urn:GoogleSearchAction"/>
<input>
<soap:body use="encoded"
namespace="urn:GoogleSearch"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</input>
<output>
<soap:body use="encoded"
namespace="urn:GoogleSearch"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</output>
</operation>
</binding>
13.1.2005
Praktikum Informationsintegration
39
Ports
l
Festlegen der konkreten Netzwerkadresse
<service name="GoogleSearchService">
<port name="GoogleSearchPort" binding="typens:GoogleSearchBinding">
<soap:address location="http://api.google.com/search/beta2"/>
</port>
</service>
13.1.2005
Praktikum Informationsintegration
40
20
Web Services
Implementierung
Implementierung
l
Diverse Toolkits, die helfen
l
l
l
l
AXIS (Apache)
JWSDP (Sun)
ETTK (IBM)
Anbindung an Servlet-Container
l
Hier: Tomcat
13.1.2005
Praktikum Informationsintegration
42
21
Aufrufarten
Inventar
Integriertes
Schema
Kunde
Ergebnis
zurückgeben
13.1.2005
WebShopService
Inventar
Browser
Dienst
Anwendung
RPC
Versand
Firma XYZ
Methodenaufruf
Rechnung
2)
Ergebnisnachricht
WebShopService
Integriertes
Schema
Browser
Dienst
Anwendung
MHS
Schnittstelle
Einkaufsnachricht
Versand
Firma XYZ
Rechnung
Kunde
Schnittstelle
1)
Praktikum Informationsintegration
43
4 Möglichkeiten
RPC
Nachrichten basiert
• Interface und Implementierung
aus WSDL generieren
• Service dynamisch erzeugen
• Methode aufrufen
• Ergebnis bekommen, Antwort
interpretieren
• Client erstellen
• SOAP-Nachricht erstellen
• Verbindung zu Port aufbauen
• SOAP-Nachricht schicken
• SOAP-Antwort empfangen,
Antwort interpretieren
• Java Interface definieren
• Implementierung erstellen
• Deployment Deskriptor
erstellen
•WSDL, WAR-Datei automatisch
generieren
• Tomcat bekanntgeben
• Servlet erstellen
• WSDL erstellen
• Tomcat bekanntgeben
Technologien: JAX-RPC, SAAJ
13.1.2005
Client,
Aufruf
Server
Technologien: JAXM, JAXB, SAAJ
Praktikum Informationsintegration
44
22
Web Services in Tomcat
HTTP-Server/Tomcat
Automatische
Generierung
Java-Interface
+
Java-Klasse
Datenbank
Methodenaufruf (RPC)
WSDL
Client
13.1.2005
JSPServlet
JDBC
Praktikum Informationsintegration
45
Implementierung
l
Verwendete Techniken
l
l
Java
Java Web Service Toolkit
l
l
l
l
Sun Microsystems
Ist installiert
Pfade?
Skripte?
13.1.2005
Praktikum Informationsintegration
46
23
Pfadstruktur
<firmaXY>/
jsp/
WEB-INF/
web.xml
src/
Quellen Web-Service
build.xml
jaxrpc-ri.xml
ws.sh
Ant Build-Skript
Vorlage Deployment-Descriptor
Skript zur Erstellung des Service
build/
z.B. WAR-Archiv Web-Servcice
(temporär)
13.1.2005
Praktikum Informationsintegration
47
Anpassen
l
web.xml
l
l
jaxrpc-ri.xml
l
l
l
Name der Firma, Beschreibung
Endpoint
Endpoint-Mapping
build.xml und ws.sh
l
Eigentlich nichts, evtl. Pfade, shell…
Alle vier Dateien liegen zum
Download auf der Webseite!
13.1.2005
Praktikum Informationsintegration
48
24
Web-Service
Interface
package mac;
import java.rmi.Remote;
import java.rmi.RemoteException;
public interface HelloServiceIF extends Remote {
public String sayHello(String name) throws RemoteException;
} //end of interface
In <firmaXY>/src anlegen
(auf package achten…)
13.1.2005
Praktikum Informationsintegration
49
Web-Service
Implementierung
package mac;
import java.rmi.RemoteException;
public class HelloServiceImpl implements HelloServiceIF {
public String sayHello(String name) throws RemoteException {
return "Guten Tag, "+name+"!";
} //end of sayHello
} //end of class
In <firmaXY>/src anlegen
(auf package achten…)
13.1.2005
Praktikum Informationsintegration
50
25
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD
Web Application 2.3//EN"
"http://java.sun.com/j2ee/dtds/web-app_2_3.dtd">
<web-app>
<display-name>Hallo Webservice</display-name>
<description>
Ein WebService (JAX-RPC) der Guten Tag sagt
</description>
</web-app>
13.1.2005
Praktikum Informationsintegration
51
jaxrpc-ri.xml
<?xml version="1.0" encoding="UTF-8"?>
<webServices xmlns="http://java.sun.com/xml/ns/jax-rpc/ri/dd"
version="1.0"
targetNamespaceBase="http://www.informatik.huberlin.de/mac/spinat"
typeNamespaceBase="http://www.informatik.huberlin.de/mac/spinat"
urlPatternBase="/ws">
<endpoint name="HelloSTest"
displayName="Hello Service"
description="Einfacher Hello Service fuers Praktikum"
interface="mac.HelloServiceIF"
implementation="mac.HelloServiceImpl"/>
<endpointMapping
endpointName="HelloSTest"
urlPattern="/hello"/>
</webServices>
13.1.2005
Praktikum Informationsintegration
52
26
Ablauf (1)
l
Wo ist was installiert?
l
l
l
Dateien anlegen, Klassen schreiben
l
l
../jwsdp/jwsdp-1.5/
../jwsdp/jwstutorial15/
<firmaXY>/src/…
ws.sh ausführen
l
l
l
Nutzt build.xml, kompiliert Klassen
Erstellt WSDL und WAR-Archiv in /build
Entpackt WAR-Archiv in /WEB-INF
13.1.2005
Praktikum Informationsintegration
53
Ablauf (2)
l
Web-Service Infos ansehen
l
http://spinat:50080/<firmaXY>/hello
13.1.2005
Praktikum Informationsintegration
54
27
Ablauf (3)
l
WSDL anzeigen
public String sayHello(String)
13.1.2005
Praktikum Informationsintegration
55
Ausblick
l
Diese Woche
l
l
l
l
l
HelloService implementieren
Ablauf durchgehen
Rumpf-WS implementieren
Strategien überlegen, Ideen sammeln
Nächste Woche
l
l
Implementierung Teil 2
Rest Phase 3
13.1.2005
Praktikum Informationsintegration
56
28
Fragen?
l
l
l
Probleme?
Fragen?
Unklarheiten?
13.1.2005
Praktikum Informationsintegration
57
29
Herunterladen