Praktikum aus Softwareentwicklung 2 Web Services Java Praktikum – SS 2009 – Gerald.Ehmayer@borland.com 1 Praktikum aus Softwareentwicklung 2 Web Services • Einführung – • JAX – • Definition, Eigenschaften, Anwendungen.... Überblick, Architektur... JAX-RPC – Übersicht, Architektur… Java Praktikum – SS 2009 – Gerald.Ehmayer@borland.com 2 Praktikum aus Softwareentwicklung 2 Web Services Einführung Definition • „...eine über das Internet zugängliche ProgrammierSchnittstelle, basierend auf Internet-Technologien„ • „Mittels HTTP Adresse eindeutig identifizierbar.“ • „Gemeinsame Nutzung von Programmfunktionen über Rechnergrenzen.“ Java Praktikum – SS 2009 – Gerald.Ehmayer@borland.com 3 Praktikum aus Softwareentwicklung 2 Web Services Einführung Anwendungsbeispiele (B2B) • Lagerbestand von Händler abfragen – – • Buchen von Flügen – • • ISBN Artikelbezeichnung Reisebüros bieten aktuelle Flüge verschiedener Gesellschaften (zentral) Abfragen an Suchmaschinen Collaboration Plattformen – – Hersteller/Zulieferer... http://www.covisint.com/ Java Praktikum – SS 2009 – Gerald.Ehmayer@borland.com 4 Praktikum aus Softwareentwicklung 2 Web Services Einführung Kommunikation Lose Kopplung: HTTP - zustandsloses Kommunikationsprotokoll XML - "neutrales" Beschreibungs- und Nachrichtenformat Java Praktikum – SS 2009 – Gerald.Ehmayer@borland.com 5 Praktikum aus Softwareentwicklung 2 Web Services Einführung Basistechnologien Java, VB, .NET Java, VB, .NET Stellt HTTP Verbindung her HTTP-Listener DOM, SAX DOM, SAX HTTP: XML: TCP/IP, UDP SOAP, WSDL Eine Komponente, die Anwendungsfunktionalität bereit stellt Java Praktikum – SS 2009 – Gerald.Ehmayer@borland.com 6 Praktikum aus Softwareentwicklung 2 Web Services Einführung Service Orientierte Architektur (SOA) Java Praktikum – SS 2009 – Gerald.Ehmayer@borland.com 7 Praktikum aus Softwareentwicklung 2 Architektur Technologie Stack UDDI – Universal Description, Discovery and Integration WSDL – Webservice Description Language SOAP – Simple Object Access Protocoll Java Praktikum – SS 2009 – Gerald.Ehmayer@borland.com 8 Praktikum aus Softwareentwicklung 2 Web Services Einführung Links • Apache – – • IBM – • http://msdn.microsoft.com/webservices Sun Microsystems – • http://www-106.ibm.com/developerworks/webservices Microsoft – • http://ws.apache.org/axis/java/index.html http://ws.apache.org/axis2/ http://java.sun.com/webservices W3C – http://www.w3.org/2002/ws Java Praktikum – SS 2009 – Gerald.Ehmayer@borland.com 9 Praktikum aus Softwareentwicklung 2 Web Services • Einführung – • JAX-RPC – • Definition, Eigenschaften, Anwendungen.... Übersicht, Architektur…. JAX – Überblick, Architektur.... Java Praktikum – SS 2009 – Gerald.Ehmayer@borland.com 10 Praktikum aus Softwareentwicklung 2 JAX-RPC Übersicht • • • Java API for XML based RPC RPC = Remote Procedure Call Programmierschnittstelle – – Für Entwicklung von Web Services Für Entwicklung von Web Services Clients Java Praktikum – SS 2009 – Gerald.Ehmayer@borland.com 11 Praktikum aus Softwareentwicklung 2 JAX-RPC Vorfahren und Verwandte • • • • RPC – Remote Procedure Call – Sun RPC (NFS - Nework File System) – C/C++ IIOP – Internet Inter-ORB Protocol – CORBA - Common Object Request Broker Architecture – Ziel ist Sprachunabhängigkeit – OMG Standard http://www.omg.org/ DCOM – Distributed Component Object Model – Objektorientiertes RPC-System von Microsoft, COM Erweiterung – .NET Remoting und Enterprise Services ab MS Vista integriert RMI – Remote Method Invocation – 100% Java, Serialisierung (fast) beliebiger Objekte Java Praktikum – SS 2009 – Gerald.Ehmayer@borland.com 12 Praktikum aus Softwareentwicklung 2 JAX-RPC Client/Server Schnittstelle • • • • Protokoll basiert auf SOAP API “versteckt” hohe Komplexität Ein Service X implementiert ein Interface welches ein oder mehrere Remote Prozeduren des Services beschreibt Client verwendet Stub Objekt zum Aufrufen von Methoden des Service Objekts Tie Java Praktikum – SS 2009 – Gerald.Ehmayer@borland.com 13 Praktikum aus Softwareentwicklung 2 JAX-RPC Client/Server Schichten Java Praktikum – SS 2009 – Gerald.Ehmayer@borland.com 14 Praktikum aus Softwareentwicklung 2 JAX-RPC WSDL • Web Service Description Language – • • Service Beschreibung in XML Server stellt WSDL zur Verfügung Client Tool „versteht“ WSDL – Generiert Client API (Java, .NET, C++) Java Praktikum – SS 2009 – Gerald.Ehmayer@borland.com 15 Praktikum aus Softwareentwicklung 2 JAX-RPC Service: Java/WSDL Mapping Java Praktikum – SS 2009 – Gerald.Ehmayer@borland.com 16 Praktikum aus Softwareentwicklung 2 JAX-RPC Daten: Type Mappings Java Praktikum – SS 2009 – Gerald.Ehmayer@borland.com 17 Praktikum aus Softwareentwicklung 2 JAX-RPC Entwicklungsschritte Entwicklung des Webservices • 1. 2. 3. Implementierung: Codierung des „service endpoint interface“ Build (otpional): Generierung, Übersetzung und Verpackung der Dateien welche für den Service benötigt werden – kann auch zur Laufzeit erfoglen, wie bei Axis via Reflection Deploy: abhängig von Distribution (JAR, WAR, deployment descriptor…) Java Praktikum – SS 2009 – Gerald.Ehmayer@borland.com 18 Praktikum aus Softwareentwicklung 2 JAX-RPC Arten von Clients • 3 Arten von Webservice Clients – – – Static stub: die Stub-Klasse wird vor der Laufzeit erzeugt. Die Stub Klasse wird als statischer Proxy verwendet Dynamic proxy: die Stub-Klasse wird zur Laufzeit erzeugt und kann auch als dynamischer Proxy bezeichnet werden Dynamic invocation interface (DII): mit diesen Interface können Remote Procedures auch dann aufgerufen werden, wenn die Signatur oder der Service bis zur Laufzeit nicht bekannt sind. Diese Clients sind kompliziert zu entwickeln und man benötigt genau Kenntnisse von WSDL Dokumenten Java Praktikum – SS 2009 – Gerald.Ehmayer@borland.com 19 Praktikum aus Softwareentwicklung 2 JAX-RPC Alernative REST REpresentational State Transfer RESTful Web Services Service Requests • • • HTTP (GET, POST) Kein WSDL - keine Methoden und Typ Informationen Dokument Format nicht definiert: XML, JSON... Clients APIs können nicht generiert werden – – – – ● Yahoo Web Services ● http://developer.yahoo.com/answers/ Java Praktikum – SS 2009 – Gerald.Ehmayer@borland.com 20 Praktikum aus Softwareentwicklung 2 JAX-RPC Java Implementierungen • • • • Apache Axis – Axis 1 – Axis 2 Sun JAX-WS – https://jax-ws.dev.java.net/ – NetBeans – Ab Java 6 integriert XFire – http://xfire.codehaus.org/ – MyEclipse Alle basieren auf JAX-RPC Java Praktikum – SS 2009 – Gerald.Ehmayer@borland.com 21 Praktikum aus Softwareentwicklung 2 Web Services • Einführung – • JAX-RPC – • Definition, Eigenschaften, Anwendungen.... Übersicht, Architektur… JAX – Überblick, Architektur.... Java Praktikum – SS 2009 – Gerald.Ehmayer@borland.com 22 Praktikum aus Softwareentwicklung 2 JAX Überblick • • JAX – Java API‘s for XML Unterteilung in 2 Arten: – Prozedur-orientiert • • – JAX-RPC – Java API for XML-based RPC JAXR – Java API for XML Registries Dokumenten-orientiert • • • JAXP – Java API für XML Processing JAXB – Java Architecture for XML Binding SAAJ – SOAP with Attachments API for Java (SAAJ ist eine Implementation von JAXM – Java API for XML Messaging Java Praktikum – SS 2009 – Gerald.Ehmayer@borland.com 23 Praktikum aus Softwareentwicklung 2 JAX Architektur Java Praktikum – SS 2009 – Gerald.Ehmayer@borland.com 24 Praktikum aus Softwareentwicklung 2 JAX JAXP • JAXP – Java API für XML Processing – – – SAX API– Simple API for XML DOM API – Document Object Model XSLT API – XML Transformations • • XML Stylesheet Language (XSL) bestimmt wie die XML Daten angezeigt werden XSLT benutzt die Formatangaben von XSL für die Transformation Java Praktikum – SS 2009 – Gerald.Ehmayer@borland.com 25 Praktikum aus Softwareentwicklung 2 JAX JAXB – Bind Process Java Praktikum – SS 2009 – Gerald.Ehmayer@borland.com 26 Praktikum aus Softwareentwicklung 2 JAX JAXR - Registries • • • • • Java API for XML Registries Registries sind Verzeichnisse von Services Generische API zum Abfragen/Bearbeiten von Registries, die JAXR Provider bereitstellen Unterstützt Vereinigungsmenge der Konzepte komplementärer Ansätze (z.B. UDDI, ebXML) Package: javax.xml.registry Java Praktikum – SS 2009 – Gerald.Ehmayer@borland.com 27 Praktikum aus Softwareentwicklung 2 JAX JAXR - Architketur Java Praktikum – SS 2009 – Gerald.Ehmayer@borland.com 28 Praktikum aus Softwareentwicklung 2 JAX SOAP • • • • • • • Simple Object Access Protocol Lightweight Message Protokoll Getypter Datenaustausch zwischen Applikationen Nachrichtenstruktur wird in XML definiert Besonders geeignet für RPC Funktionalität Lose Kopplung Transport Binding über darunterliegendes Transport Protokoll - HTTP Java Praktikum – SS 2009 – Gerald.Ehmayer@borland.com 29 Praktikum aus Softwareentwicklung 2 JAX SOAP Java Praktikum – SS 2009 – Gerald.Ehmayer@borland.com 30 Praktikum aus Softwareentwicklung 2 JAX SOAP • • • Spezifikation SOAP W3C Spezifikation: http://www.w3.org Umfasst: – – – – SOAP envelope – Struktur eine SOAP Nachricht SOAP encoding – deserialisierungs Regeln SOAP binding Framework – Binding an ein bestimmtes Transport Protokoll SOAP RPC Java Praktikum – SS 2009 – Gerald.Ehmayer@borland.com 31 Praktikum aus Softwareentwicklung 2 Ende der 8. Übung Java Praktikum – SS 2009 – Gerald.Ehmayer@borland.com 32