Projekt Entwicklung verteilter Softwaresysteme mit Web Services SoSe Java API for XML Web Service (JAX-WS) April 2008

Ähnliche Dokumente
Verteilte Systeme: Übung 4

Verteilte Systeme: Übung 4

Norm 410 Security Token Service

Auszug aus JAX-WS Folien

Agenda. Web Services unter Lotus Notes/Domino

WebService in Java SE und EE

Norm 410 Security Token Service

Wissenschaftliche Vertiefung Web Services. Esslingen, 22. Januar 2016 Simon Schneider

SOA, Webservices und SOAP für Schnelleinsteiger

WebServices Moritz Goeb 1

Themen. Web Service - Clients. Kommunikation zw. Web Services

Java Web Services mit

Übersicht. Angewandte Informatik 2 - Tutorium 6. Teile einer WSDL-Datei. Was ist WSDL. Besprechung: Übungsblatt 5

Netzprogrammierung Web-Dienste

Service Contract Handling. Best-Practices zum Umgang mit Service Contract Artefakten (WSDL) in Oracle SOA Suite 11g

Axis2, CXF und JAX-WS RI im Vergleich

Java API for XML-based RPC

wsdl-analyse von hand kein normaler mensch macht das am beispiel currencyconverter

Norm 440 Externe Navigation in VU-Portale

Arten von Broker Architekturen

Java Web Services. Seminarunterlage. Version 4.03 vom

Web-Services Implementierung

Technische Spezifikation Schnittstelle sedex Autorisierungs-Dienst

Die Technik hinter Web Services. Wie baut man einen Web Service? Was sind die technischen Details von WSDL, SOAP und UDDI?

ebusiness Übung 3a Spezifikation und Nutzung von Web-APIs (Services) Prof. Dr. Andreas Schmietendorf 1

Asynchrone Webservices mit Axis 1.x in Java

Web-Technologien Kick-Start

Oracle WebServices im praktischen Einsatz

Der Einsatz von SOAP und WSDL am Beispiel von LIMBAS

Praktikum aus Softwareentwicklung 2. Web Services. Java Praktikum SS 2010

JAX-RS 2.0 REST mit Java EE 7

Wiederholung: Beginn

Java Web Services Metadata JSR-181

Telecooperation. Telekooperation 1: Rechnernetze, Verteilte Systeme und Algorithmen. Technische Universität Darmstadt

Onlineumfragen WebServices (OWS)

Technologien 1 XML 1 2 WSDL Was ist WSDL Aufbau von WSDL-Dokumenten 9 3 SOAP Was ist SOAP Aufbau von SOAP 11 4 AXIS 12

Web Services. Eine kleine Einführung. Werner Gaulke

5. Übung zur Vorlesung Service-orientierte Architekturen

SOA Guidelines. Service Contract Design mit der Web Service Description Language (WSDL) Guido Schmutz Technology Manager

Integration von Web Services in J EE Anwendungen mit XFire. 1/26 André Janus - Integration von Web Services in J EE Anwendungen mit XFire

Web Services: Inhalt

5. Web-Services. Kommunikation zwischen Client und Server über XML-Format SOAP

Norm 225 Service Definition mit WSDL

Angewandte Softwareentwicklung Serialisierung

Webservices. 1 Einführung 2 Verwendete Standards 3 Web Services mit Java 4 Zusammenfassung. Hauptseminar Internet Dienste

<< Java Architecture for XML Binding >>

Comtarsia Web Client Einführung und Installation

Web Service Entwicklung mit Java. Sven Lindow

Axis2, CXF und JAX-WS RI im Vergleich

13 Web-Dienste! 13.1 Prinzipien!!!2! 13.2 Web-Dienste mit Java!!6! 13.3 WSDL!!!!16! 13.4 REST!!!!23! Zusammenfassung!!!26!!

WebServices Zwischen Buzzword und Nutzen

Web-Services Implementierung mit Java

Schritt 4: Hallo Enterprise Bean

Klausur zur Vorlesung Einführung in Verteilte Systeme WS 05/06 Prof. Dr. Odej Kao 3. Februar 2006

Servlet-zentrierte Architektur von Web-Anwendungen mit Java Servlets, Java Server Pages (JSPs) und Java Beans

Web-Sevices : WSDL Entwicklung von Web-Anwendungen

extra und WebServices

Apache Axis. Ausarbeitung im Rahmen des Seminars: Service Computing und Service-Oriented Architectures

Grundlagen der Web-Entwicklung INF3172

Seminar E-Services WS 02/03 WSDL. Web Services Description Language. Moritz Kleine SES 02 - WSDL

Generierung von Serviceverträgen auf Basis objektorientierter ereignisgesteuerter Prozessketten

Spring Dynamic Modules for OSGi Service Platforms

Programmieren II SAX. Beispiel-Schema kontakt.xsd SAX DOM. Dr. Klaus Höppner JAXB. Hochschule Darmstadt SS 2008

Vertiefte Grundlagen Graphentheorie

WebServices -reloaded-

Java Web Services. Seminarunterlage. Version 4.02 vom

.NET-Networking 2 Windows Communication Foundation

SOAP. SOAP: Envelope

BiPRO-Anbindung unter.net/wcf

Affiliate SOAP-Schnittstelle

Web Services. Standards und Realisierung in Java

Java Reflection. Meta-Programmierung mit der java.lang.reflection API. Prof. Dr. Nikolaus Wulff

Eclipse Equinox als Basis für Smart Client Anwendungen. Christian Campo, compeople AG, Java Forum Stuttgart 2007

3-schichtige Informationssystem-Architektur

Softwareentwicklung in verteilten Umgebungen Middleware Case Studies (Coulouris et al., Kapitel 5 und 19) Dieter Schmalstieg Jens Grubert

Webentwicklung mit Vaadin 7. Theoretische und praktische Einführung in Vaadin 7. Christian Dresen, Michael Gerdes, Sergej Schumilo

Die JAX-WS API. Eine Einführung. Ali-Riza Ciftcioglu Einführung Unterstützte WS-*-Standards... 1

Fallbeispiel zur Nutzung von Webservices in der Praxis. INCONY AG, Technologiepark 34, D Paderborn, Tel.: ,

Etablierung serviceorientierter Architekturen mit Web Services

Apache AXIS Architektur

WebServices LLynch endion ASP 2.3

Hauptseminar Informatik. Die Strukturierung von XML-Dokumenten mit Hilfe von DTDs und XML Schema

Praktikum aus Softwareentwicklung 2, Stunde 11

Übersicht. Projekt DB-basierte, mobile Systeme. Übersicht. Was sind Web Services? Web Service - Kompakt. Warum das Rad neu erfinden?!

Client/Server-Programmierung

H.2 Problematik. 2 Enterprise Application Integration EAI. H.1 Überblick. 2 Enterprise Application Integration (2)

5. Web-Services. Kommunikation zwischen Client und Server über XML-Format SOAP

Überblick. Web-Services Beschreibung von Web-Services Implementierung von Web-Services Registrierung von Web-Services Aufgabe 1

Inhalt: Konfiguration: web.xml ; server.xml Workflow: Weiterleitung von Requests Lektion II-IV Lektion V-VI

Entwicklung eines Provisions Service mit einer Web Service-Schnittstelle

K Webservices, Verteilte Anwendungen, Grid-Architekturen

Auszug aus Axis2 Übungen

Java Metadata Interface. Thorsten Pivl

WSDL. Heutige Vorlesung. Wozu WSDL? Wie wird WSDL verwendet? Language. Services. Description. Web. Abstrakte vs. konkrete Syntax

Pluginbasierte Entwicklung auf Basis einer eigenen JAR Datei

Multimedia im Netz Wintersemester 2012/13

SilkCentral Test Manager API Hilfe

Inhalt. Einführung RFC-Funktionsbausteine in ABAP Funktionsbausteine zum Lesen Aufruf per srfc 108

Service-Oriented Architecture (SOA) [1]

Transkript:

Projekt Entwicklung verteilter Softwaresysteme mit Web Services SoSe2008 - Java API for XML Web Service (JAX-WS) - 07. April 2008 Verteilte Systeme und Informationssysteme (VSIS) Department Informatik Universität Hamburg Einführung Java API for XML Web Service (JAX-WS) Java API zum Erstellen von Webservices Nachfolger von JAX-RPC - aktuelle Version: JAX-WS 2.1 Referenzimplementierung im Projekt Glassfish (JAX-WS RI) Verwendung von Annotationen zur Vereinfachung der Entwicklung und des Deployments von Webservice Clients und Service Endpunkten Tools zum Generieren von sog. Portable Artifacts und XML-Artefakten Laufzeitumgebung High-Level-API: Abstrakte Sicht auf Webservices ohne Details von SOAP, XML, usw. möglich Low-Level-API: Zugriff auf (XML-) Nachrichtenebene möglich Projekt: Entwicklung verteilter Softwaresysteme mit Web Services 2 1

JAX-WS Programmiermodell: High Level API Projekt: Entwicklung verteilter Softwaresysteme mit Web Services 3 Architekturübersicht Serverseitige Implementierung Projekt: Entwicklung verteilter Softwaresysteme mit Web Services 4 2

Programmiermodell High-Level-API Serverseitige Implementierung Bottom-up: 1. Implementierung des Service-Endpoint Interfaces (SEI) 2. Generieren von Portable Artifacts (WSDL, XSD) aus dem SEI (Tool: wsgen) 3. Deployment als.war-archiv Top-down: 1. Beschreibung des Webservices als WSDL-Datei 2. Generieren von Portable Artifacts (Proxy-Klassen) aus WSDL und XSD (Tool: wsimport) 3. Implementierung des Service-Endpoint Interfaces (SEI) 4. Deployment als.war-archiv Projekt: Entwicklung verteilter Softwaresysteme mit Web Services 5 Beispiel TestClient.java TestService.java - String dosometestoperation (TestObject to){ - TestService.wsdl - TestObject.xsd <testobject> <name>horst</name> <testobject> Answer Projekt: Entwicklung verteilter Softwaresysteme mit Web Services 6 3

Programmiermodell High-Level-API Serverseitige Implementierung Beispiel <?xml version="1.0" encoding="utf-8"?> <wsdl:definitions name="testservice" targetnamespace="http://test.vsis.org" xmlns:tns="http://test.vsis.org" xmlns:t=http://testobject.vsis.org xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl=http://schemas.xmlsoap.org/wsdl/ xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/xmlschema"> <wsdl:types> <xsd:schema targetnamespace="http://test.vsis.org" > <xsd:import namespace="http://testobject.vsis.org" schemalocation="test.xsd"/> <xsd:element name="answer" type="xsd:string" /> </xsd:schema> </wsdl:types> <wsdl:message name="inmessage"> <wsdl:part name="testobject" element="t:testobject" /> </wsdl:message> <wsdl:message name="outmessage"> <wsdl:part name="answer" element="tns:answer" /> </wsdl:message>.. TestService.wsdl Projekt: Entwicklung verteilter Softwaresysteme mit Web Services 7 Programmiermodell High-Level-API Serverseitige Implementierung Beispiel TestService.wsdl <wsdl:porttype name="testserviceporttype"> <wsdl:operation name="dosometestoperation" > <wsdl:input message="tns:inmessage" /> <wsdl:output message="tns:outmessage" /> </wsdl:operation> </wsdl:porttype> <wsdl:binding name="testservicehttpbinding" type="tns:testserviceporttype"> <wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <wsdl:operation name="dosometestoperation"> <wsdlsoap:operation soapaction=""/> <wsdl:input> <wsdlsoap:body use="literal" /> </wsdl:input> <wsdl:output> <wsdlsoap:body use="literal" /> </wsdl:output> </wsdl:operation> </wsdl:binding>. Projekt: Entwicklung verteilter Softwaresysteme mit Web Services 8 4

Programmiermodell High-Level-API Serverseitige Implementierung Beispiel TestService.wsdl <wsdl:service name="testservice"> <wsdl:port binding="tns:testservicehttpbinding" name="testserviceport"> <wsdlsoap:address location="http://someserver/test/testservice"/> </wsdl:port> </wsdl:service> </wsdl:definitions> Projekt: Entwicklung verteilter Softwaresysteme mit Web Services 9 Programmiermodell High-Level-API Serverseitige Implementierung XML Binding JAX-B: Java API for XML Binding Umwandlung von XML-Datentypen in Java-konforme Datentypen // Provide the namespace, otherwise it defaults to the package name @XmlRootElement(namespace="http://testobject.vsis.org") public class TestObject { TestObject.xsd private String name; <?xml version="1.0" encoding="utf-8"?> public String getname() { return name; public void setname(string value) { name = value; TestObject.java <xsd:schema targetnamespace="http://testobject.vsis.org" xmlns="http://testobject.vsis.org" xmlns:xsd="http://www.w3.org/2001/xmlschema"> <xsd:element name="testobject"> <xsd:complextype > <xsd:sequence> <xsd:element name="name" type="xsd:string" </xsd:sequence> </xsd:complextype> </xsd:element> </xsd:schema> Projekt: Entwicklung verteilter Softwaresysteme mit Web Services 10 5

Programmiermodell High-Level-API Serverseitige Implementierung XML Binding ObjectFactory @XmlRegistry public class ObjectFactory { public TestObject createtestobject() { return new TestObject(); Projekt: Entwicklung verteilter Softwaresysteme mit Web Services 11 Programmiermodell High-Level-API Serverseitige Implementierung Beispiel eines Service-Endpoint Interfaces @WebService( name="testservice", targetnamespace="http://test.vsis.org", servicename="testservice", portname="testserviceport", wsdllocation="web-inf/wsdl/testservice.wsdl" ) @SOAPBinding(parameterStyle=SOAPBinding.ParameterStyle.BARE) public class UserRegistrationService { @WebResult(name="answer") public String dosometestoperation(testobject to) { return new String("Test: " + to.getname()); Projekt: Entwicklung verteilter Softwaresysteme mit Web Services 12 6

Architekturübersicht Clientseitige Implementierung Projekt: Entwicklung verteilter Softwaresysteme mit Web Services 13 Programmiermodell High-Level-API Clientseitige Implementierung Dispatch: Aufrufen von Webdiensten ohne typsicheren Proxy Dynamic Proxy: 1. Generieren von Portable Artifacts aus einer WSDL-Beschreibung (Tool: wsimport) 2. Verwenden der generierten Proxy-Klassen zum Aufrufen des Webservices von einem beliebigen Endpunkt - Erzeuge Dienst - Hole Port-Proxy - Rufe Aktion im Port-Proxy auf Projekt: Entwicklung verteilter Softwaresysteme mit Web Services 14 7

Programmiermodell High-Level-API Clientseitige Implementierung mit Dynamic Proxy -- Beispiel public class TestClient { @WebServiceRef(wsdlLocation="http://someServer/Test/TestService?wsdl") static TestService service; public void dosomething() { // Create a Dynamic Proxy client service = new TestService(); TestServicePortType port = service.gettestserviceport(); // Use Proxy Instance as BindingProvider BindingProvider bp = (BindingProvider) port; // (Optional) Configure RequestContext with endpoint's URL Map<String, Object> rc = bp.getrequestcontext(); rc.put (BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "http://someothertestserver/testservice"); TestObject to = new TestObject(); to.setname("horst"); String response = port. dosometestoperation(to) ; System.out.println(response); Projekt: Entwicklung verteilter Softwaresysteme mit Web Services 15 JAX-WS Programmiermodell: Low Level API Projekt: Entwicklung verteilter Softwaresysteme mit Web Services 16 8

Ausblick: Low Level APIs Aufbereitung und Zugriff auf Nachricht/Daten Annotierung per @WebServiceProvider und Implementierung von Provider<Source>, Provider<SOAPMessage> oder Provider<DataSource> Zugriff auf gesamte Nachricht oder Payload per Annotation: @ServiceMode.MESSAGE oder @ServiceMode. PAYLOAD Beispiel: Zugriff auf gesamten SOAP-Request @WebServiceProvider @ServiceMode(value=Service.Mode.MESSAGE) public class ProviderImpl implements Provider<SOAPMessage> { public SOAPMessage invoke(soapmessage msg) { // do request processing SOAPMessage response =...; return response; Projekt: Entwicklung verteilter Softwaresysteme mit Web Services 17 Ausblick: Erweiterungen Projekt: Entwicklung verteilter Softwaresysteme mit Web Services 18 9

Deployment Projekt: Entwicklung verteilter Softwaresysteme mit Web Services 19 Deployment-Deskriptoren Konfiguration von Web-Applikationen allgemein: web.xml http://java.sun.com/products/servlet/reference/api/index.html für JAX-WS Webservices: sun-jaxws.xml https://java.sun.com/webservices/docs/2.0/jaxws/jaxws-war.html serverspezifisch: hier sun-web.xml http://docs.sun.com/app/docs/doc/819-3660/6n5s7klpg?a=view Projekt: Entwicklung verteilter Softwaresysteme mit Web Services 20 10

Deployment-Deskriptoren: web.xml Beispiel web.xml <?xml version="1.0"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/webapp_2_5.xsd"> <!-- JAXWS Servlet Enddpoint --> <listener> <listener-class>com.sun.xml.ws.transport.http.servlet.wsservletcontextlistener</listener-class> </listener> <servlet> <servlet-name>wsservlet</servlet-name> <servlet-class>com.sun.xml.ws.transport.http.servlet.wsservlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>wsservlet</servlet-name> <url-pattern>/webservices/*</url-pattern> </servlet-mapping> </web-app> Projekt: Entwicklung verteilter Softwaresysteme mit Web Services 21 Beispiel sun-jaxws.xml Deployment-Deskriptoren: sun-jaxws.xml <?xml version="1.0" encoding="utf-8"?> <endpoints xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime" version="2.0"> <endpoint name="testservice" implementation="org.vsis.testservice" url-pattern="/testservice"/> </endpoints> Projekt: Entwicklung verteilter Softwaresysteme mit Web Services 22 11

Beispiel sun-web.xml <?xml version="1.0"?> <sun-web-app> Deployment-Deskriptoren: sun-web.xml <context-root>test</context-root> <servlet> <servlet-name>testservice</servlet-name> <webservice-endpoint> <port-component-name>testservice</port-component-name> <endpoint-address-uri>/testservice</endpoint-address-uri> <servlet-impl-class>org.vsis.testservice</servlet-impl-class> </webservice-endpoint> </servlet> </sun-web-app> Projekt: Entwicklung verteilter Softwaresysteme mit Web Services 23 Ant Werkzeug für die Automatisierung von Build- und Deploy-Vorgängen Steuerung über XML-Datei ("build.xml") Typische "Targets": build, create-war, clean build: Kompilieren und Zusammenfügen mit statischen Inhalten create-war: Erstellen einer installationsfertigen.war-datei clean: Entfernen der Produkte von build und deploy http://ant.apache.org/manual/index.html Projekt: Entwicklung verteilter Softwaresysteme mit Web Services 24 12

JAX-WS Tools mit Ant JAX-WS-Tools: apt: Verarbeitung der Annotationen wsgen: Generieren von XML-Artefakten wie WSDL und XML-Schemata wsimport: Generieren von Portable Artefacts (Port, Service Endpoint Interface, JAX-B-Mapper-Klassen) aus einer WSDL-Datei <target name="generate-client" depends="setup"> <wsimport debug="true" verbose="${verbose" keep="true" destdir="${basedir/src" package="org.vsis.client" wsdl="http://someserver/test/testservice?wsdl"> </wsimport> </target> Beispiel: wsimport mit Ant (build.xml) Projekt: Entwicklung verteilter Softwaresysteme mit Web Services 25 Gesamte Struktur einer Web-Applikation.war-Datei: /build/dist/ Projekt: Entwicklung verteilter Softwaresysteme mit Web Services 26 13

Deployment und Ausführung Admin-Konsole auf http://vsisls4:2xx10 Applikationen laufen auf http://vsisls4:2xx00/context-root Webservices laufen auf http://vsisls4:2xx00/context-root/servicename WSDL ist abrufbar auf http://vsisls4:2xx00/context-root/servicename?wsdl Projekt: Entwicklung verteilter Softwaresysteme mit Web Services 27 Ende des Vorlesungsteils Viel Erfolg! Projekt: Entwicklung verteilter Softwaresysteme mit Web Services 28 14