5. Übung zur Vorlesung Service-orientierte Architekturen Webservices und WSDL SoSe 2011
Anmerkung Hausaufgabe 03 BPMN Auch hier gilt: Layout! Zu Unterschieden zw. BPMN und eepk Relative Aussagen sind geschickter als absolute OK: Akteure sind durch Swimlanes leichter/besser darstellbar NICHT OK: Akteure sind in eepk nicht darstellbar SOA Webservices und WSDL SoSe 2011 2
Wdhlg. Allgemeine Architektur Welche Architekturtypen unterscheiden wir in SOA? IT-Architektur und Software-Architektur Wo sind die Unterschiede? Anwendungslandschaft vs. Anwendung Projektübergreifend vs. Projektspezifisch Service-Komposition vs. Service-Implementierung Warum IT-Architektur? Vermeidung organisatorischer und technologischer Fehler SOA braucht Planung und Kontrolle auf höherer Ebene (im Vergleich zur Software-Architektur) SOA Webservices und WSDL SoSe 2011 3
Auf was müssen Architekten achten? Grundeigenschaften Thin Client Communication Layer Loose Kopplung Design By Contract Program to an interface Keep it simple Stateless Services Flexibility Service Wiederverwendung Transparent Dynamic Invocations UDDI Paradigm Changes Geschäftsprozesszentiert SOA Webservices und WSDL SoSe 2011 4
Wie Services schneiden? Service-Kandidaten bestimmen: Top-Down / Bottom-Up? Top-Down geht von Geschäftsprozessen aus wenn es noch keine Services gibt wenn SOA global eingeführt wird wenn es ein Projekt gibt Buttom-Up nimmt Services, verknüpft sie zu Prozessen bei vielen getrennten Entwicklungsgruppen falls Management nicht dahinter steht wenn es viele Services bereits gibt wenn nur Altsysteme angeschlossen werden sollen Pragmatisch wohl eher ein Mix Treffen in der Mitte SOA Webservices und WSDL SoSe 2011 5
Aspekte beim Schneiden grob vs. fein-granular Einzelne Aktivitäten oder ein ganzer Prozess? Nie kleiner als fachliche Funktion Im Zweifel grob fachlich vs. technisch Auf welcher Ebene befindet sich der Service? Im Zweifel fachlich Wiederverwendbarkeit Durch uns? Durch andere? Flexibilität Generell (viele Fkt.) vs. Speziell (wenige Fkt.) Geschwindigkeit Jede Anfrage kostet Zeit was fasst man zusammen? Im Zweifel wenige größere Nachrichten SOA Webservices und WSDL SoSe 2011 6
Webservices Definition nach W3C A software application identified by a URI, whose interfaces and bindings are capable of being defined, described, and discovered as XML artifacts. A Web service supports direct interactions with other software agents using XML-based messages exchanged via Internet-based protocols. Definition in dieser Vorlesung Webservice: Ein Webservice ist ein Service, der von anderen Softwaresystemen über ein Netzwerk und möglicherweise sogar dem Internet über SOAP aufrufbar ist. Die Schnittstelle eines Webservices ist mittels WSDL beschrieben. SOA Webservices und WSDL SoSe 2011 7
Web Service Architektur Requestor (Client) Rich Client Web Client Service Proxy SOAP Client HTTP Client UDDI Browser Provider (Service Tier) HTTP Server Web Container SOAP Server Web Service Implementation Business Logic Service Registry (fka UDDI) JDBC EIS-Adapter Provider (Database) Provider (Backend EIS) CRM ERP SOA Webservices und WSDL SoSe 2011 8
Java EE APIs (oder Java EE vs. Java SE) SOA Webservices und WSDL SoSe 2011 9
JAX-WS und JAXB JAX-WS = Java API for XML-Based Web Services API zur Erstellung von Webservices Benutzt Annotationen Unterstützt Bottom-Up (Java WSDL) und Top-Down (WSDL Java) Ansatz JAXB = Java Architecture for XML Binding Wird von JAX-WS benutzt, um XML-Datentypen und Java-Datentypen zu vermitteln (eingehend und ausgehend) Unser erster Webservice Hello World Jax-WS Demo SOA Webservices und WSDL SoSe 2011 10
WSDL-Aufbau WSDL-Dokument Typen (Types) Nachrichten (Message) PortTypes Binding Service schema part operation name input output fault operation name input output fault port XML-Schema- Datentypen-Definitionen Definition von Nachrichten (Datentypen) Mehrere Parts möglich Abstrakte Operationen mit Ein- und Ausgabe- Nachrichten Protokoll für jede Nachricht einer Operation URI für den Webservice (auch Endpoint) SOA Webservices und WSDL SoSe 2011 11
Übung Gästebuch als Webservice Ausgangspunkt: Gästebuch-Schema (XSD) und Service-Schnittstelle (WSDL) http://static.se.uni-hannover.de/lehre/tutorials/src/guestbook.xsd http://static.se.uni-hannover.de/lehre/tutorials/src/guestbook.wsdl Generiert mit JAX-WS die Java-Klassen./src/> /opt/j2ee/jdk/bin/wsimport keep GuestBook.wsdl Implementiert den Service (Interface Class) Startet den Webservice public static void main(string[] args) throws IOException { Endpoint service = Endpoint.publish("http://localhost:8080/GuestBookService", System.in.read(); service.stop(); } new GuestBook()); Testet den Service mit dem Eclipse Webservice Explorer http://localhost:<port>/wse/wsexplorer/wsexplorer.jsp?org.eclipse.wst.ws.explorer=0 Achtung: JavaScript erforderlich SOA Webservices und WSDL SoSe 2011 12
WSDL-Aufbau WSDL-Dokument Typen (Types) Nachrichten (Message) PortTypes Binding Service schema part operation name input output fault operation name input output fault port XML-Schema- Datentypen-Definitionen Definition von Nachrichten (Datentypen) Mehrere Parts möglich Abstrakte Operationen mit Ein- und Ausgabe- Nachrichten Protokoll für jede Nachricht einer Operation URI für den Webservice (auch Endpoint) SOA Webservices und WSDL SoSe 2011 13
Aufgabe 5 (10 Punkte) Web-Shop-Produktverwaltungs-Service (10P) Erstellen Sie auf Basis des Schemas aus Hausaufgabe 01 einen Produktverwaltungs-Webservice, mit folgenden Operationen: Product get(productid): Liefert Datensatz eines Produkts zu der angegebenen ID (Artikelnummer), inkl. der verfügbaren Menge im Lager Status:String add(product): Fügt ein Produkt in die Liste aller Produkte hinzu, liefert im Erfolgsfall eine Statusnachricht zurück List<SimpleProduct> getproductlist(): Liefert eine Liste aller im System vorhandenen Produkte zurück. Für die Liste enthält jedes Produkt nur folgende Eigenschaften: ID, Name, Preis, Lagerbestand Der Service muss die Daten nicht persistent halten Testen Sie alle Operationen mit dem Eclipse Webservice Explorer SOA Webservices und WSDL SoSe 2011 14