Institut für Informatik Universität Basel Java Apache XML (JAX) Lektion 12: Webservices I www.ifi.unibas.ch/studies 12 - 1 ist mein eBusiness skalierbar und verfügbar? Datenbank HTML client Web Application Server HTTP Internet HTML client HTTP Web Web Server Server Anforderungen: - Verfügbarkeit - Skalierbarkeit - Performance - Sicherheit “43% of all Internet users have experienced one failed purchase, 28% of all online purchases fail... 28% of consumers who experienced a failed purchase stopped shopping at that particular Web site, 23% stopped buying at that site, and 6% also stopped shopping at the retailer’s brick-and-mortar outlets.” – Boston Consulting Group Institut für Informatik Universität Basel Java Apache XML (JAX) Lektion 12: Webservices I www.ifi.unibas.ch/studies 12 - 2 1 Web Services Web Services sind eine Infrastrukturtechnologie zur schnellen und einfachen Integration heterogener Anwendungen. „Web“ steht dabei für die Kommunikation von Anwendungen über die bestehende Internetinfrastruktur (HTTP, SSL, Firewall etc.), sowohl innerhalb eines Unternehmens als auch über das Internet. „Service“ steht für ein vereinfachtes Softwarekomponentenmodell, eine wesentliche Vereinfachung gegenüber den doch häufig zu komplexen „verteilten Objekten“ (CORBA, EJB). Institut für Informatik Universität Basel Java Apache XML (JAX) Lektion 12: Webservices I Web Service All the Service describe by UDDI Service Registry Find www.ifi.unibas.ch/studies 12 - 3 http://www.ibm.com/services/uddi http://www.ibm.com/services/uddi/testregistr y http://uddi.microsoft.com http://test.uddi.mirosoft.com hp – available soon Publish WDSL -> UDDI WDSL <- UDDI SOAP on HTTP Service Requestor Service provider Bind Institut für Informatik Universität Basel Java Apache XML (JAX) Lektion 12: Webservices I www.ifi.unibas.ch/studies 12 - 4 2 SOAP – Simple Object Access Protocol SOAP UDDI Pu sh Fin d bli Service User Service Provider Bind SOAP Institut für Informatik Universität Basel • Benutzt XML • Nutzt HTTP als TransportLayer-Protokoll • Header Elemente für Kontextinformationen • Interaktion zwischen einer Client- und einer ServerAnwendung • RPC-Stil (request – response) Semantik • Fehler- und Ausnahmebehandlung Java Apache XML (JAX) Lektion 12: Webservices I www.ifi.unibas.ch/studies 12 - 5 WSDL - Web Services Definition Language WSDL • Definition der Interfaces - Neben den Operationen des Web Services wird hier auch angegeben, auf welchem Rechner im Internet der Web Service verfügbar ist. UDDI Pu Institut für Informatik Universität Basel sh Fin d bli Service User Bind SOAP Service Provider • WDSL bietet XML-Sprachregeln für die Beschreibung - was ein Webservice leistet - wo er sich befindet und - wie er aufzurufen ist Java Apache XML (JAX) Lektion 12: Webservices I www.ifi.unibas.ch/studies 12 - 6 3 UDDI - Universal Description, Discovery and Integration •dient zur Registrierung von Web Services. – neben dem Interface auch Beschreibung des Web Service sowie Daten über den Anbieter etc. UDDI UDDI Pu sh Fin d bli Service User Bind SOAP Service Provider Institut für Informatik Universität Basel •folgende Anforderungen müssen abgedeckt werden: – Datenstruktur für Web Services – Schnittstellenbeschreibung – Möglichkeit die Informationen zu finden und die technischen Informationen zu nutzen Java Apache XML (JAX) Lektion 12: Webservices I www.ifi.unibas.ch/studies 12 - 7 Web Services Technology Stack Basis Schichten sind bereits fest etabliert. Höhere Schichten befinden sich noch im Aufbau. UDDI, WSFL sind dennoch feste Bestandteile des Stacks. Weitere Konzepte: 4 Security 4 Authentifizierung 4 Quality of Service 4 Transaktions Management Institut für Informatik Universität Basel Java Apache XML (JAX) Lektion 12: Webservices I www.ifi.unibas.ch/studies 12 - 8 4 SOAP consists of three parts: The SOAP envelope construct defines an overall framework for expressing what is in a message; who should deal with it, and whether it is optional or mandatory. The SOAP encoding rules define a serialization mechanism that can be used to exchange instances of application-defined datatypes. The SOAP RPC representation defines a convention that can be used to represent remote procedure calls and responses. Quelle: http://www.w3.org/TR/2000/NOTE-SOAP-20000508 Institut für Informatik Universität Basel Java Apache XML (JAX) Lektion 12: Webservices I www.ifi.unibas.ch/studies 12 - 9 SOAP Simple Object Access Protocol Lightweight Message Protokoll Getypter Datenaustausch zwischen Applikationen Besonders geeignet für RPC Funktionalität Lose Kopplung Verteilte Architektur Transport Binding über darunterliegendes Transport Protokoll Struktur wird in XML definiert Institut für Informatik Universität Basel Java Apache XML (JAX) Lektion 12: Webservices I www.ifi.unibas.ch/studies 12 - 10 5 SOAP Envelope <xs:element name="Envelope" type="tns:Envelope" /> <xs:complexType name="Envelope" > <xs:sequence> <xs:element ref="tns:Header" minOccurs="0" /> <xs:element ref="tns:Body" minOccurs="1" /> </xs:sequence> <xs:anyAttribute namespace="##other„ processContents="lax" /> </xs:complexType> Optionaler Header Block Body Block ist notwendig Namespace: http://www.w3.org/2001/09/soap-envelope Institut für Informatik Universität Basel Java Apache XML (JAX) Lektion 12: Webservices I www.ifi.unibas.ch/studies 12 - 11 SOAP Body Body Enthält Applikationsdaten 4 RPC Daten 4 Fehlerinformation <xs:element name="Body" type="tns:Body" /> <xs:complexType name="Body" > <xs:sequence> <xs:any namespace="##any" minOccurs="0“ maxOccurs="unbounded“ processContents="lax" /> </xs:sequence> <xs:anyAttribute namespace="##any“ processContents="lax" > </xs:anyAttribute> </xs:complexType> Institut für Informatik Universität Basel Java Apache XML (JAX) Lektion 12: Webservices I www.ifi.unibas.ch/studies 12 - 12 6 SOAP RPC RPC Daten werden im SOAP Body übertragen Struktur entspricht den unter SOAP encoding vorgestellten Konzepten Voraussetzungen für RPC 4URI des Empfängerknotens 4Funktions/Methoden Name 4Funktions/Methoden Signatur 4Funktionsparameter Institut für Informatik Universität Basel Java Apache XML (JAX) Lektion 12: Webservices I www.ifi.unibas.ch/studies 12 - 13 SOAP RPC RPC Request 4 Struktur mit dem Namen der Funktion 4 Funktions Parameter müssen typisiert und benannt werden 4 Reihenfolge der Parameter entspricht Schnittstelle 4 Ein sowie Ein/Ausgabe Parameter sind möglich <env:Envelope xmlns:env="http://www.w3.org/2001/09/soap-envelope"> <env:Body > <tmp:TempInLinz.getTemp_Request> xmlns:tmp="http://www.linz_temp.at/2001/temp" > <tmp:plz>4040</tmp:plz> <tmp:strasse>Altenbergerstrasse</tmp:strasse> <tmp:hsnr>74</tmp:hsnr> </tmp:TempInLinz.getTemp_Request> </env:Body></env:Envelope> Institut für Informatik Universität Basel Java Apache XML (JAX) Lektion 12: Webservices I www.ifi.unibas.ch/studies 12 - 14 7 SOAP RPC RPC Response 4Ebenfalls typisierte, benannte Struktur 4Reihenfolge der Aus bzw. Ein/Ausgabe Parameter entspricht Schnittstelle 4Beginnend mit Rückgabewert „Result“ <env:Envelope xmlns:env="http://www.w3.org/2001/09/soap-envelope"> <env:Body > <tmp:TempInLinz.getTemp_Response> xmlns:tmp="http://www.linz_temp.at/2001/temp" > <tmp:datumZeit>10.12.2001</tmp:datumZeit> <tmp:tempCelsius>-3</tmp:tempCelsius> </tmp:TempInLinz.getTemp_Response> </env:Body> </env:Envelope> Institut für Informatik Universität Basel Java Apache XML (JAX) Lektion 12: Webservices I www.ifi.unibas.ch/studies 12 - 15 SOAP Envelope Construct (1) SOAP Message = XML Dokument mit SOAP Envelope ‡ [SOAP Header] ‡ SOAP Body Beispiel für SOAP Message in HTTP Request: POST /StockQuote HTTP/1.1 Host: www.stockquoteserver.com Content-Type: text/xml; charset="utf-8" Content-Length: nnnn SOAPAction: "Some-URI" <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <SOAP-ENV:Body> <m:GetLastTradePrice xmlns:m="Some-URI"> <symbol>DIS</symbol> </m:GetLastTradePrice> </SOAP-ENV:Body> </SOAP-ENV:Envelope> Institut für Informatik Universität Basel Java Apache XML (JAX) Lektion 12: Webservices I www.ifi.unibas.ch/studies 12 - 16 8 SOAP Envelope Construct (2) Beispiel für SOAP Message in HTTP Response: HTTP/1.1 200 OK Content-Type: text/xml; charset="utf-8" Content-Length: nnnn <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> <SOAP-ENV:Body> <m:GetLastTradePriceResponse xmlns:m="Some-URI"> <Price>34.5</Price> </m:GetLastTradePriceResponse> </SOAP-ENV:Body> </SOAP-ENV:Envelope> Institut für Informatik Universität Basel Java Apache XML (JAX) Lektion 12: Webservices I www.ifi.unibas.ch/studies 12 - 17 Simple Types Als Simple-Types übernimmt SOAP alle in der „XML Schema Part 2: Datatypes“ Spec. verwendeten „Built-in datatypes“. Beispiele für ein Schema (Fragment): <element name="age" type="int"/> <element name="height" type="float"/> <element name="displacement" type="negativeInteger"/> <element name="color"> <simpleType base="xsd:string"> <enumeration value="Green"/> Enumeration mit <enumeration value="Blue"/> Simple Types </simpleType> (außer Boolean) </element> Beispiele für Daten: <age>45</age> <height>5.9</height> <displacement>-450</displacement> <color>Blue</color> Institut für Informatik Universität Basel Java Apache XML (JAX) Lektion 12: Webservices I www.ifi.unibas.ch/studies 12 - 18 9 Compound Types Parallel zu Structs und Arrays ... Bräuchten einen eigenen Vortrag... ;-) Beispiel für Schema: <element name="Book"> <complexType> <element name="author" type="xsd:string"/> <element name="preface" type="xsd:string"/> <element name="intro" type="xsd:string"/> </complexType> </element> Beispiel für Daten: <e:Book> <author>Henry Ford</author> <preface>Prefatory text</preface> <intro>This is a book.</intro> </e:Book> Institut für Informatik Universität Basel Java Apache XML (JAX) Lektion 12: Webservices I www.ifi.unibas.ch/studies 12 - 19 WSDL Einleitung WSDL = Web Service Description Language XML-basiert Gibt Anworten auf die Fragen: 1. Wo liegt der Web-Service genau ? 2. Wie kann man mit ihm arbeiten, welche Schnittstellen hat er ? 3. Mit welchen Protokollen kann man den Web-Service verwenden ? Institut für Informatik Universität Basel Java Apache XML (JAX) Lektion 12: Webservices I www.ifi.unibas.ch/studies 12 - 20 10 WSDL allgemeines WSDL-Dokumente sind ein Vertrag; der Inhalt bildet die Grundlage für eine Kommunikation zwischen WebService und einem Client Im WSDL-Dokument sind unter anderem die MethodenSchnittstellen definiert; weiters kann man mittels einer angegebenen Adresse ein Service lokalisieren Institut für Informatik Universität Basel Java Apache XML (JAX) Lektion 12: Webservices I www.ifi.unibas.ch/studies 12 - 21 WSDL allgemeines SOAP wurde bereits als allgemeiner Nachrichtenübertragungsstandard eingeführt. Kennt man aber die Anzahl der Parameter, die Typen oder den Methodennamen nicht, kann man keine Nachricht übertragen. Beim Einsatz von WSDL erfolgt die Generierung von Proxies für Web-Services sprach- und plattformneutral, vergleichbar mit den IDL-Dateien von COM und CORBA. Institut für Informatik Universität Basel Java Apache XML (JAX) Lektion 12: Webservices I www.ifi.unibas.ch/studies 12 - 22 11 WSDL Dokumentaufbau <definition> Logisches Wurzelelement, in welchem die verschiedenen Namespaces als Attribute definiert werden <types> Datentypdefinitionen <message> Abstrakte Definition der Nutzdatenpakete, die übertragen werden. Eine Nachricht (Message) entspricht auf dieser Ebene noch nicht einer Methode oder Funktion, wie man vielleicht meinen könnte. <portType> Fasst eine Menge von Operationen zusammen <binding> Erst hier werden konkrete Protokolle (SOAP, http-GET, etc.) und Datenformate für Operationen und Nachrichten definiert. <port> Spezifikation einer Adresse für eine Bindung <service> Aggregation von zusammengehörigen Ports Institut für Informatik Universität Basel Java Apache XML (JAX) Lektion 12: Webservices I www.ifi.unibas.ch/studies 12 - 23 WSDL Zusammenspiel der Typen Typen abstrakt Nachrichten Porttypen Operationen Bindungen Operationen Services Ports konkre t Institut für Informatik Universität Basel Java Apache XML (JAX) Lektion 12: Webservices I www.ifi.unibas.ch/studies 12 - 24 12 WSDL Typen Die Std.-Typen aus XML-Schema sind vorgegeben Eigene Typen können in diesem Types-Abschnitt analog zu XML-Schema und SOAP definiert werden. BenötigteTypen für das Temperatur-Beispiel: PositionsInfo_Request Temperatur_Response plz datumZeit strasse tempCelsius hsnr Institut für Informatik Universität Basel Java Apache XML (JAX) Lektion 12: Webservices I www.ifi.unibas.ch/studies 12 - 25 WSDL Typen - Beispiel <wsdl:types> <xsd:schema targetNamespace=“http://beispiel.com“ xmlns:xsd= „http://www.w3.org/2000/10/XMLSchema“> <xsd:element name=“PositionsInfo_Request“> <xsd:complexType> <xsd:sequence> <xsd:element name=“plz“ type=“string“/> <xsd:element name=“strasse“ type=“string“/> <xsd:element name=“hsnr“ type=“string“/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name=“Temperatur_Response“> <xsd:complexType> <xsd:sequence> <xsd:element name=“datumZeit“ type=“dateTime“/> <xsd:element name=“tempCelsius“ type=““/> </xsd:sequence> </xsd:complexType> </xsd:element> </wsdl:types> Institut für Informatik Universität Basel Java Apache XML (JAX) Lektion 12: Webservices I www.ifi.unibas.ch/studies 12 - 26 13 UDDI Allgemeines UDDI = Universal Description, Discovery, and Integration Plattformunabhängiges, Erweiterbares Framework, um 4 Web-Services zentral zu registrieren 4 Web-Services bereitzustellen für andere Firmen 4 Fremde Web-Services mit gewissen Merkmalen finden und dynamisch in eigenen Web-Service einbinden Basiert auf http, XML und SOAP UDDI SOAP XML HTTP TCP/IP Institut für Informatik Universität Basel Java Apache XML (JAX) Lektion 12: Webservices I www.ifi.unibas.ch/studies 12 - 27 UDDI Background-Infos UDDI gibt lediglich eine Beschreibung der Funktionalität vor, nicht aber eine Implementierung Projekt UDDI gestartet im September 2000 Mittlerweile ca. 220 Mitglieder Institut für Informatik Universität Basel Java Apache XML (JAX) Lektion 12: Webservices I www.ifi.unibas.ch/studies 12 - 28 14 UDDI UBR - 1 UBR = UDDI Business Registry Die UBR ist eine logisch zentralisiertes, physisch aber verteiltes Service mit mehreren Wurzelknoten, die regelmäßig untereinander Daten austauschen Es genügt, wenn ein Service an einer beliebigen Instanz registriert wird, da diese die Registrierung nach oben hin weiterreicht. DNS-ähnlicher Aufbau der Informationsstruktur Institut für Informatik Universität Basel Java Apache XML (JAX) Lektion 12: Webservices I www.ifi.unibas.ch/studies 12 - 29 UDDI Business Registration White Pages Registry Data Firmen registrieren öffentliche Infos über sich selbst Servicetyp-Infos werden hier abgelegt; Programmierer, Stand.gesellschaften, Firmen Institut für Informatik Universität Basel Java Apache XML (JAX) Lektion 12: Webservices I Yellow Pages Green Pages Service Type Registrations www.ifi.unibas.ch/studies 12 - 30 15 UDDI API – Abfrage Bsp. <find_business generic='1.0' xmlns='urn:uddi-org:api'> <name>Microsoft</name> </find_business> <find_service generic='1.0' xmlns='urn:uddi-org:api' businessKey='0076B468-EB27-42E5-AC09-9955CFF462A3'> <name>UDDI Web Sites</name> </find_service> <get_serviceDetail generic='1.0' xmlns='urn:uddi-org:api'> <serviceKey>86E46AAD-82A5-454F-8957-381C2F724D6F</serviceKey> </get_serviceDetail> Institut für Informatik Universität Basel Java Apache XML (JAX) Lektion 12: Webservices I www.ifi.unibas.ch/studies 12 - 31 Java Web Services Einleitung 1/2 „The Java platform and XML are two open industrystandards that together are enabling the work in B2B ecommerce, which will allow enterprises to greatly simplify and lower the cost of information sharing and data exchange.” George Paolini, vice president of Sun Institut für Informatik Universität Basel Java Apache XML (JAX) Lektion 12: Webservices I www.ifi.unibas.ch/studies 12 - 32 16 Java Web Services JAX Übersicht 2/2 Implementierung der Kommunikation zwischen Client und Applikation Spezifiziert 5 APIs 4JAXP: XML Processing 4JAXB: XML Binding 4JAXR: Registries 4JAXM: Messaging über SOAP 4JAX-RPC: RPC über SOAP Institut für Informatik Universität Basel Java Apache XML (JAX) Lektion 12: Webservices I www.ifi.unibas.ch/studies 12 - 33 Java Web Services JAX Übersicht 3/3 Institut für Informatik Universität Basel Java Apache XML (JAX) Lektion 12: Webservices I www.ifi.unibas.ch/studies 12 - 34 17 Java Web Services JAXR 1/5 Java API for XML Registries Registries enthalten wichtige Informationen zur Kommunikation und Kollaboration von Unternehmen JAXR bietet API zum Abfragen und Bearbeiten von Registries Unterstützt Vereinigungsmenge der Konzepte komplementärer Ansätze (z.B. UDDI, ebXML) Institut für Informatik Universität Basel Java Apache XML (JAX) Lektion 12: Webservices I www.ifi.unibas.ch/studies 12 - 35 Java Web Services JAXR 2/5 Architektur Institut für Informatik Universität Basel Java Apache XML (JAX) Lektion 12: Webservices I www.ifi.unibas.ch/studies 12 - 36 18 Java Web Services JAXM 1/3 Java API for XML Messaging Nachrichtenübertragung übers Internet Übertragungsprotokoll 4 SOAP 1.1 4 SOAP with Attachments 4 Erweiterbar durch Profile wie ebXML, BizTalk, … JAXM Provider nötig für 4 Übertragung 4 Routing Institut für Informatik Universität Basel Java Apache XML (JAX) Lektion 12: Webservices I www.ifi.unibas.ch/studies 12 - 37 Java Web Services JAXM 2/3 Synchrone Kommunikation Asynchrone Kommunikation 4Client muss in Container laufen (J2EE, Servlet) Kommunikationsszenarien 4Asynchrone Anfrage 4Asynchrone Änderung mit Bestätigung 4Synchrone Anfrage 4Synchrone Änderung 4Fire and Forget Institut für Informatik Universität Basel Java Apache XML (JAX) Lektion 12: Webservices I www.ifi.unibas.ch/studies 12 - 38 19 Java Web Services JAXM 3/3 Institut für Informatik Universität Basel Java Apache XML (JAX) Lektion 12: Webservices I www.ifi.unibas.ch/studies 12 - 39 Java Web Services JAX-RPC 1/3 Java API for XML based RPC RPCs möglich durch Verwendung von SOAP Ähnliche Ansätze bereits vorhanden 4Java IDL 4CORBA 4RMI 4RMI/IIOP => Plattformunabhängigkeit durch XML Institut für Informatik Universität Basel Java Apache XML (JAX) Lektion 12: Webservices I www.ifi.unibas.ch/studies 12 - 40 20 Java Web Services JAX-RPC 2/3 Ziel der Spezifikation: Einfachheit der Schnittstelle Kapselung der SOAP Nachrichtenbildung Unterstützung von WSDL 4 WSDL2Java Compiler erzeugt Client Artefakte Unterstützung von Dynamischen Proxies 4 DII Dynamic Invocation Interface 4 Dynamic Proxy Mechanismus Institut für Informatik Universität Basel Java Apache XML (JAX) Lektion 12: Webservices I www.ifi.unibas.ch/studies 12 - 41 Java Web Services JAX-RPC 3/3 Proxy Beispiel Context ctx = new InitialContext(); com.example.StockQuoteService sqs = ctx.lookup(“java:comp/env/StockQuoteService”); com.example.StockQuoteProvider sqp = sqs.getStockQuoteProviderPort(); float quotePrice = sqp.getLastTradePrice(“ACME”); DII Beispiel javax.xml.rpc.Service service = //... get a Service instance javax.xml.rpc.Call call = service.createCall( portName, “<operationName>”); call.addParameter(“param1”, <xsd:string>, Call.PARAM_MODE_IN); call.setReturnType(<xsd:int>); Object[] params = new Object[] {“<SomeString>”}; Integer ret = (Integer) call.invoke(params); Institut für Informatik Universität Basel Java Apache XML (JAX) Lektion 12: Webservices I www.ifi.unibas.ch/studies 12 - 42 21 Java Web Services JAXM vs JAX-RPC JAXM JAX-RPC Asynchron und synchron Synchron Routing zu mehr als 1 Empfänger möglich Abstraktion der XML Schicht Hohe Komplexität durch explizite Nachrichtenbearbeitung Einfache Benutzung Lose Kopplung möglich Enge Kopplung Verlässliche Nachrichtenübertragung als geforderte Implementierung durch den JAXM Provider Hohe Flexibilität Institut für Informatik Universität Basel Java Apache XML (JAX) Lektion 12: Webservices I www.ifi.unibas.ch/studies Institut für Informatik Universität Basel Java Apache XML (JAX) Lektion 12: Webservices I www.ifi.unibas.ch/studies 12 - 43 12 - 44 22