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