Praktikum aus Softwareentwicklung 2 Web Services Java Praktikum – SS 2010 – [email protected] 1 Praktikum aus Softwareentwicklung 2 Web Services • Einführung – • JAX-RPC – • Definition, Eigenschaften, Anwendungen.... Überblick, Architektur... JAX – Übersicht, Architektur… Java Praktikum – SS 2010 – [email protected] 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 2010 – [email protected] 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 2010 – [email protected] 4 Praktikum aus Softwareentwicklung 2 Web Services Einführung Kommunikation Lose Kopplung: HTTP - zustandsloses Kommunikationsprotokoll XML - "neutrales" Beschreibungs- und Nachrichtenformat Java Praktikum – SS 2010 – [email protected] 5 Praktikum aus Softwareentwicklung 2 Web Services Einführung Basistechnologien Z.B. ein .NET-Programm Z.B. eine Java-Web App. 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 2010 – [email protected] 6 Praktikum aus Softwareentwicklung 2 Web Services Einführung Service Orientierte Architektur (SOA) Java Praktikum – SS 2010 – [email protected] 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 2010 – [email protected] 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 2010 – [email protected] 9 Praktikum aus Softwareentwicklung 2 Web Services • Einführung – • JAX-RPC – • Definition, Eigenschaften, Anwendungen.... Übersicht, Architektur…. JAX – Überblick, Architektur.... Java Praktikum – SS 2010 – [email protected] 10 Praktikum aus Softwareentwicklung 2 JAX-RPC Übersicht • • • Java API for XML based RPC RPC = Remote Procedure Call Programmierschnittstelle – – für die Entwicklung von Web Services für die Entwicklung von Web Service Clients Java Praktikum – SS 2010 – [email protected] 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 2010 – [email protected] 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 2010 – [email protected] 13 Praktikum aus Softwareentwicklung 2 JAX-RPC Client/Server Schichten Java Praktikum – SS 2010 – [email protected] 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 2010 – [email protected] 15 Praktikum aus Softwareentwicklung 2 JAX-RPC Service: Java/WSDL Mapping Java Praktikum – SS 2010 – [email protected] 16 Praktikum aus Softwareentwicklung 2 JAX-RPC Daten: Type Mappings Java Praktikum – SS 2010 – [email protected] 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 2010 – [email protected] 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 2010 – [email protected] 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 2010 – [email protected] 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 2010 – [email protected] 21 Praktikum aus Softwareentwicklung 2 Web Services • Einführung – • JAX-RPC – • Definition, Eigenschaften, Anwendungen.... Übersicht, Architektur… JAX – Überblick, Architektur.... Java Praktikum – SS 2010 – [email protected] 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 2010 – [email protected] 23 Praktikum aus Softwareentwicklung 2 JAX Architektur Java Praktikum – SS 2010 – [email protected] 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 2010 – [email protected] 25 Praktikum aus Softwareentwicklung 2 JAX JAXB – Bind Process Java Praktikum – SS 2010 – [email protected] 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 2010 – [email protected] 27 Praktikum aus Softwareentwicklung 2 JAX JAXR - Architketur Java Praktikum – SS 2010 – [email protected] 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 2010 – [email protected] 29 Praktikum aus Softwareentwicklung 2 JAX SOAP Java Praktikum – SS 2010 – [email protected] 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 2010 – [email protected] 31 Praktikum aus Softwareentwicklung 2 Ende der 8. Übung Java Praktikum – SS 2010 – [email protected] 32