web services - bioinf.jku.at filepraktikum aus softwareentwicklung 2 java praktikum – ss 2010 –...
TRANSCRIPT
Praktikum aus Softwareentwicklung 2
2Java Praktikum – SS 2010 – [email protected]
Web Services
• Einführung– Definition, Eigenschaften, Anwendungen....
• JAX-RPC– Überblick, Architektur...
• JAX– Übersicht, Architektur…
Praktikum aus Softwareentwicklung 2
3Java Praktikum – SS 2010 – [email protected]
• „...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 – [email protected]
• 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 – [email protected]
Web Services Einführung Kommunikation
Lose Kopplung:HTTP - zustandsloses Kommunikationsprotokoll
XML - "neutrales" Beschreibungs- und Nachrichtenformat
Praktikum aus Softwareentwicklung 2
6Java Praktikum – SS 2010 – [email protected]
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 – [email protected]
Web Services EinführungService Orientierte Architektur (SOA)
Praktikum aus Softwareentwicklung 2
8Java Praktikum – SS 2010 – [email protected]
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 – [email protected]
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 – [email protected]
Web Services
• Einführung– Definition, Eigenschaften, Anwendungen....
• JAX-RPC– Übersicht, Architektur….
• JAX– Überblick, Architektur....
Praktikum aus Softwareentwicklung 2
11Java Praktikum – SS 2010 – [email protected]
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 – [email protected]
• 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 – [email protected]
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 – [email protected]
JAX-RPCClient/Server Schichten
Praktikum aus Softwareentwicklung 2
15Java Praktikum – SS 2010 – [email protected]
• 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 – [email protected]
JAX-RPCService: Java/WSDL Mapping
Praktikum aus Softwareentwicklung 2
17Java Praktikum – SS 2010 – [email protected]
JAX-RPCDaten: Type Mappings
Praktikum aus Softwareentwicklung 2
18Java Praktikum – SS 2010 – [email protected]
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 – [email protected]
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 – [email protected]
• 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 – [email protected]
• 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 – [email protected]
• Einführung– Definition, Eigenschaften, Anwendungen....
• JAX-RPC– Übersicht, Architektur…
• JAX– Überblick, Architektur....
Web Services
Praktikum aus Softwareentwicklung 2
23Java Praktikum – SS 2010 – [email protected]
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
25Java Praktikum – SS 2010 – [email protected]
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 – [email protected]
JAXJAXB – Bind Process
Praktikum aus Softwareentwicklung 2
27Java Praktikum – SS 2010 – [email protected]
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 – [email protected]
JAX JAXR - Architketur
Praktikum aus Softwareentwicklung 2
29Java Praktikum – SS 2010 – [email protected]
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
31Java Praktikum – SS 2010 – [email protected]
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 – [email protected]
Ende der 8. Übung