Web Services - bioinf.jku.at filePraktikum aus Softwareentwicklung 2 Java Praktikum – SS 2010 –...

Preview:

Citation preview

Praktikum aus Softwareentwicklung 2

1Java Praktikum – SS 2010 – Gerald.Ehmayer@borland.com

Web Services

Praktikum aus Softwareentwicklung 2

2Java Praktikum – SS 2010 – Gerald.Ehmayer@borland.com

Web Services

• Einführung– Definition, Eigenschaften, Anwendungen....

• JAX-RPC– Überblick, Architektur...

• JAX– Übersicht, Architektur…

Praktikum aus Softwareentwicklung 2

3Java Praktikum – SS 2010 – Gerald.Ehmayer@borland.com

• „...eine über das Internet zugängliche Programmier-Schnittstelle, basierend auf Internet-Technologien„

• „Mittels HTTP Adresse eindeutig identifizierbar.“• „Gemeinsame Nutzung von Programmfunktionen über Rechnergrenzen.“

Web Services EinführungDefinition

Praktikum aus Softwareentwicklung 2

4Java Praktikum – SS 2010 – Gerald.Ehmayer@borland.com

• Lagerbestand von Händler abfragen– ISBN– Artikelbezeichnung

• Buchen von Flügen– Reisebüros bieten aktuelle Flüge verschiedener Gesellschaften (zentral)

• Abfragen an Suchmaschinen• Collaboration Plattformen

– Hersteller/Zulieferer...– http://www.covisint.com/

Web Services EinführungAnwendungsbeispiele (B2B)

Praktikum aus Softwareentwicklung 2

5Java Praktikum – SS 2010 – Gerald.Ehmayer@borland.com

Web Services Einführung Kommunikation

Lose Kopplung:HTTP - zustandsloses Kommunikationsprotokoll

XML - "neutrales" Beschreibungs- und Nachrichtenformat

Praktikum aus Softwareentwicklung 2

6Java Praktikum – SS 2010 – Gerald.Ehmayer@borland.com

Web Services Einführung Basistechnologien

Z.B. ein .NET-Programm

Stellt HTTP Verbindung her

Z.B. eine Java-Web App.

HTTP-Listener

DOM, SAX

Eine Komponente, dieAnwendungsfunktionalität bereit stellt

HTTP:TCP/IP, UDP

XML:SOAP, WSDL

DOM, SAX

Praktikum aus Softwareentwicklung 2

7Java Praktikum – SS 2010 – Gerald.Ehmayer@borland.com

Web Services EinführungService Orientierte Architektur (SOA)

Praktikum aus Softwareentwicklung 2

8Java Praktikum – SS 2010 – Gerald.Ehmayer@borland.com

ArchitekturTechnologie Stack

UDDI – Universal Description, Discovery and Integration

WSDL – Webservice Description Language

SOAP – Simple Object Access Protocoll

Praktikum aus Softwareentwicklung 2

9Java Praktikum – SS 2010 – Gerald.Ehmayer@borland.com

Web Services EinführungLinks

• Apache– http://ws.apache.org/axis/java/index.html– http://ws.apache.org/axis2/

• IBM– http://www-106.ibm.com/developerworks/webservices

• Microsoft– http://msdn.microsoft.com/webservices

• Sun Microsystems– http://java.sun.com/webservices

• W3C– http://www.w3.org/2002/ws

Praktikum aus Softwareentwicklung 2

10Java Praktikum – SS 2010 – Gerald.Ehmayer@borland.com

Web Services

• Einführung– Definition, Eigenschaften, Anwendungen....

• JAX-RPC– Übersicht, Architektur….

• JAX– Überblick, Architektur....

Praktikum aus Softwareentwicklung 2

11Java Praktikum – SS 2010 – Gerald.Ehmayer@borland.com

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

Praktikum aus Softwareentwicklung 2

12Java Praktikum – SS 2010 – Gerald.Ehmayer@borland.com

• 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

JAX-RPCVorfahren und Verwandte

Praktikum aus Softwareentwicklung 2

13Java Praktikum – SS 2010 – Gerald.Ehmayer@borland.com

JAX-RPCClient/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

Praktikum aus Softwareentwicklung 2

14Java Praktikum – SS 2010 – Gerald.Ehmayer@borland.com

JAX-RPCClient/Server Schichten

Praktikum aus Softwareentwicklung 2

15Java Praktikum – SS 2010 – Gerald.Ehmayer@borland.com

• Web Service Description Language– Service Beschreibung in XML

• Server stellt WSDL zur Verfügung• Client Tool „versteht“ WSDL

– Generiert Client API (Java, .NET, C++)

JAX-RPCWSDL

Praktikum aus Softwareentwicklung 2

16Java Praktikum – SS 2010 – Gerald.Ehmayer@borland.com

JAX-RPCService: Java/WSDL Mapping

Praktikum aus Softwareentwicklung 2

17Java Praktikum – SS 2010 – Gerald.Ehmayer@borland.com

JAX-RPCDaten: Type Mappings

Praktikum aus Softwareentwicklung 2

18Java Praktikum – SS 2010 – Gerald.Ehmayer@borland.com

JAX-RPCEntwicklungsschritte

• Entwicklung des Webservices1. Implementierung: Codierung des „service endpoint interface“

2. 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

3. Deploy: abhängig von Distribution (JAR, WAR, deployment descriptor…)

Praktikum aus Softwareentwicklung 2

19Java Praktikum – SS 2010 – Gerald.Ehmayer@borland.com

JAX-RPCArten 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

Praktikum aus Softwareentwicklung 2

20Java Praktikum – SS 2010 – Gerald.Ehmayer@borland.com

• 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/

JAX-RPCAlernative REST

Praktikum aus Softwareentwicklung 2

21Java Praktikum – SS 2010 – Gerald.Ehmayer@borland.com

• 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

JAX-RPCJava Implementierungen

Praktikum aus Softwareentwicklung 2

22Java Praktikum – SS 2010 – Gerald.Ehmayer@borland.com

• Einführung– Definition, Eigenschaften, Anwendungen....

• JAX-RPC– Übersicht, Architektur…

• JAX– Überblick, Architektur....

Web Services

Praktikum aus Softwareentwicklung 2

23Java Praktikum – SS 2010 – Gerald.Ehmayer@borland.com

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

Praktikum aus Softwareentwicklung 2

24Java Praktikum – SS 2010 – Gerald.Ehmayer@borland.com

JAXArchitektur

Praktikum aus Softwareentwicklung 2

25Java Praktikum – SS 2010 – Gerald.Ehmayer@borland.com

JAXJAXP

• 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

Praktikum aus Softwareentwicklung 2

26Java Praktikum – SS 2010 – Gerald.Ehmayer@borland.com

JAXJAXB – Bind Process

Praktikum aus Softwareentwicklung 2

27Java Praktikum – SS 2010 – Gerald.Ehmayer@borland.com

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

Praktikum aus Softwareentwicklung 2

28Java Praktikum – SS 2010 – Gerald.Ehmayer@borland.com

JAX JAXR - Architketur

Praktikum aus Softwareentwicklung 2

29Java Praktikum – SS 2010 – Gerald.Ehmayer@borland.com

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

Praktikum aus Softwareentwicklung 2

30Java Praktikum – SS 2010 – Gerald.Ehmayer@borland.com

JAX SOAP

Praktikum aus Softwareentwicklung 2

31Java Praktikum – SS 2010 – Gerald.Ehmayer@borland.com

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

Praktikum aus Softwareentwicklung 2

32Java Praktikum – SS 2010 – Gerald.Ehmayer@borland.com

Ende der 8. Übung