Web-Services Implementierung mit Java



Ähnliche Dokumente
Themen. Web Service - Clients. Kommunikation zw. Web Services

Remote Method Invocation

Der lokale und verteilte Fall

WebService in Java SE und EE

Auszug aus JAX-WS Folien

Java und XML 2. Java und XML

Anleitung. Ein einfaches RMI-Beispiel. (ab Java 5.0) c Y. Pfeifer. (Juni 2014)

Übungen zu Softwaretechnik

Java Einführung Abstrakte Klassen und Interfaces

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

Client/Server-Programmierung WS2007/08. EJB/JSP: Schritt-für-Schritt Anleitung

Java: Vererbung. Teil 3: super()

Java RMI Remote Method Invocation

Mobile und Verteilte Datenbanken

3 Objektorientierte Konzepte in Java

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

Java Kurs für Anfänger Einheit 5 Methoden

Zustandsgebundene Webservices

Vertiefte Grundlagen Graphentheorie

Wiederholung: Beginn

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

CORBA. Systemprogrammierung WS

Musterlösung Übungsblatt 2 Netzprogrammierung WS 05/06

Web-Services Implementierung

Java API for XML-based RPC

Java Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7

Session Beans & Servlet Integration. Ralf Gitzel ralf_gitzel@hotmail.de

Kapitel 6. Vererbung

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

Typumwandlungen bei Referenztypen

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

Web Services. XML, WSDL, SOAP und UDDI Einblicke und Ausblicke J.M.Joller 1

Kapitel 6. Vererbung

EJB jar.xml und Name Service (JNDI)

Objektorientierte Programmierung

Einfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Software Engineering Klassendiagramme Einführung

Javakurs zu Informatik I. Henning Heitkötter

Kapitel 6. Vererbung

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

3-schichtige Informationssystem-Architektur

Algorithmen und Datenstrukturen

Programmieren in Java

Java-Programmierung. Remote Method Invocation - RMI

Java Einführung Collections

Factory Method (Virtual Constructor)

Web Services stellen eine Integrationsarchitektur dar, die die Kommunikation zwischen verschiedenen Anwendungen

Oracle Application Server 10 g

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005

Einführung in die Programmierung

Pakete dienen dazu, die Software eines Projektes in größere inhaltlich zusammengehörige Bereiche mit eigenem Namen einzuteilen (siehe Java API).

Programmieren I. Prinzipieller Ablauf. Eigenschaften von JAVA. Source-Code Javac Bytecode. Java Virtual Machine (Java, Browser, Appletviewer)

C# im Vergleich zu Java

Dieses Tutorial gibt eine Übersicht der Form Klassen von Struts, welche Besonderheiten und Unterschiede diese aufweisen.

Objektorientierte Programmierung

Testen mit JUnit. Motivation

Distributed Computing Group

XML und SOAP Einführung und Grundlagen

Javakurs 2013 Objektorientierung

Erweitern Sie ihren Tomcat um das AXIS-Framework und machen Sie ihn damit bereit für den Einsatz von Web Services:

Prof. Dr. Uwe Schmidt. 21. August Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252)

EJB Beispiel. JEE Vorlesung 10. Ralf Gitzel

Aufgabenblatt Nr. 5 Generizität und TicTacToe

Prinzipien Objektorientierter Programmierung

Innere Klassen in Java

Einführung in die Java- Programmierung

Objektorientierte Programmierung. Kapitel 12: Interfaces

Programmierkurs Java

Client-Server-Beziehungen

Verteilte Systeme: Übung 4

MCRServlet Table of contents

Klausur zur Einführung in die objektorientierte Programmierung mit Java

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala

Sichtbarkeit & statische Methoden. Einsatz von Sichtbarkeit Einsatz statischer Methoden programmatische Realisierung 2 Beispielaufgaben

J2EEKurs. Enterprise JavaBeans Einführung. Peter Thiemann. Sommercampus J2EEKurs, Freiburg, Germany, Universität Freiburg, Germany

1 Polymorphie (Vielgestaltigkeit)

EJBs und Sicherheit. Vorlesung: Applikationsserver. Prof. Dr. Ch. Reich furtwangen.de furtwangen.

Rekursion. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

SAP NetWeaver Gateway. 2013

Spring Dynamic Modules for OSGi Service Platforms

CORBA-Konzept. Ziele. Common Object Request Broker Architecture CORBA. Plattformunabhängige Kommunikation Transparente Verteilung von Objekten

Asynchrone Webservices mit Axis 1.x in Java

11.1 Indirektes Binden (3) 11.1 Indirektes Binden (4) Objektadapterkonfiguration. Unmittelbarer Vorteil des indirekten Bindens

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

Enterprise Applikation Integration und Service-orientierte Architekturen. 09 Simple Object Access Protocol (SOAP)

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

B Java RMI B.2 B.4. 1 Java. 1.2 Methoden. 1.1 Objekte (2) 1.1 Objekte. Objektorientierte Sprache. Klassenbeschreibung. Methode ist eine Art Funktion

Mobile und Verteilte Datenbanken

-Testen verteilter Anwendungen

Spring Dynamic Modules for OSGi Service Platforms

Enterprise Java Beans

Client/Server-Programmierung

Client/Server-Programmierung

Einführung: Verteilte Systeme - Remote Method Invocation -

9. Remote Method Invocation Grundlagen der Programmierung II (Java)

Remote Method Invocation

Szenario 3: Service mit erweiterter Schnittstelle

Java Einführung Packages

3 Objektorientierte Konzepte in Java

Institut für Programmierung und Reaktive Systeme 25. August Programmier-Labor Übungsblatt. int binarysearch(int[] a, int x),

Transkript:

Web-Services Implementierung mit Java J. Heinzelreiter WS 2004/05

Java-APIs für Web-Services (1) Anwendungs-Code JAXR JAXM JAX-RPC SAAJ SOAP/SwA JWSDL WSDL XML/XML-Schema Web-Services/Java - 2

Java-APIs für Web-Services (2) JWSDL: Java APIs for WSDL Lesen, Generieren und Manipulieren von WSDL-Dokumenten. SAAJ: SOAP with Attachments API for Java Lesen, Generieren und Manipulieren von SOAP-Nachrichten, Versenden/Empfangen von SOAP-Nachrichten (synchron). JAXM: Java API für XML Messaging Asynchroner Nachrichtenaustausch, sichere Nachrichtenübertragung, JAX-RPC: Java-API for XML-based RPC API zur Implementierung von Web-Services und zur Erstellung von RPC-basierten Clients für Web-Services. JAXR: Java-API for XML-based Registries Interface für den Zugriff auf UDDI-Verzeichnisse. Web-Services/Java - 3

JAX-RPC API zur Implementierung von Web-Services und zur Erstellung von Clients für Web-Services. RPC-basiertes Programmiermodell (ähnlich zu RMI und CORBA). Protokollschicht wird vollständig gekapselt. Client-Code Stub JAX-RPC Service-Endpunkt Skeleton JAX-RPC Runtime SOAP Arten von Service-Endpunkten: JAX-RPC Service-Endpunkt (Servlet) JAX-RPC EJB-Endpunkt (Stateless Session Bean) Runtime Web-Services/Java - 4

JAX-RPC Service-Endpunkt (JSE) Architektur Servlet Container Client SOAP JAX-RPC- Servlet Methodenaufruf Service- Endpunkt JSEs werden in einem Servlet Container installiert. JSEs haben Zugriff auf dieselben Ressourcen und Kontextinformationen wie Servlets. Implementierung des JAX-RPC-Servlets ist herstellerabhängig: ein Servlet für jeden JSE, ein Servlet, das Requests an JSEs weiterleitet. Web-Services/Java - 5

Implementierung von JSEs (1) public interface Converter extends java.rmi.remote { double rateofexchange(string fromcurr, String tocurr) throws java.rmi.remoteexception; WSDL JSE Converter Java2WSDL WSDL2Java --server-side CurrencySoap BindingSkeleton deploy.wsdd ConverterSoap BindingImpl undeploy.wsdd Web-Services/Java - 6

Implementierung von JSEs (2) public class ConverterSoapBindingImpl implements Converter { public double rateofexchange(string fromcurr, String tocurr) throws java.rmi.remoteexception, SOAPFaultException { return eurorate(tocurr) / eurorate(fromcurr); Deployment-Deskriptor (für Axis): <deployment <service name="converter" provider="java:rpc" style="rpc" use="encoded"> <parameter name="wsdltargetnamespace" value="http://webservices.swt5"/> <parameter name="classname" value="swt5.webservices.convertersoapbindingskeleton"/> <parameter name="allowedmethods" value="*"/>... </service> </deployment> Web-Services/Java - 7

JAX-RPC EJB-Endpunkt Stateless Session Beans können als Web-Service- Endpunkte exportiert werden. EJB Container Client SOAP Skeleton Methodenaufruf Stateless Session Bean Schnittstelle wird durch ein Interface, das java.rmi.remote erweitert definiert. Implementierung des Web-Service erfolgt im Session-Bean. Remote- bzw. Local-Interface kann, muss aber nicht definiert werden. Deployment-Descriptor muss erweitert werden. Web-Services/Java - 8

Implementierung eines EJB- Endpunkts public interface Shop extends java.rmi.remote { ArticleValue getarticle(string articleid) throws java.rmi.remoteexception; public class ShopEJB implements SessionBean { public void setsessioncontext(sessioncontext ctx) { public void ejbcreate() { public void ejbremove() { public void ejbactivate() { public void ejbpassivate() { public ArticleValue getarticle(string articleid) { Deployment-Deskriptoren ejb-jar.xml: Definition eines Interfaces als service-endpoint. webservices.xml: Definition WSDL, Verbindung Web-Service/Bean Mapping-File: Abbildung WSDL auf Java-Interface. Web-Services/Java - 9

Clients (1): Static Stubs Converter.wsdl Client WSDL2Java ConverterService Converter ConverterService Locator ConverterSoap- BindingStub ConverterClient: ConverterService service = new ConverterServiceLocator(); Converter converter = service.getconverter(); double rate = converter.rateofexchange("usd", "EUR"); Web-Services/Java - 10

Clients (2): Dynamic Proxies Dynamic Proxy: Stub-Code wird zur Laufzeit erzeugt. Der Proxy-Code wird aus dem WSDL-Dokument abgeleitet. ServiceFactory factory = ServiceFactory.newInstance(); Service service = factory.createservice( new URL("http://.../service/Converter?wsdl"), new QName("http://.../myservices", "ConverterService")); Converter converter = (Converter)service.getPort(Converter.class); converter.rateofexchange("usd", "EUR"); Web-Services/Java - 11

Clients (3): Dynamic Invocation Interface (DII) Bei Verwendung von DII ist kein WSDL-Dokument notwendig. Typinformation muss explizit angegeben werden. ServiceFactory factory = ServiceFactory.newInstance(); Service service = factory.createservice( new QName("http://.../myservices", "ConverterService")); Call currratecall = service.createcall( new QName("http://.../myservices", "Converter"), new QName("http://.../myservices", "rateofexchange")); currratecall.addparameter("fromcurr", XMLType.XSD_STRING, String.class, ParameterMode.IN); currratecall.addparameter("tocurr", XMLType.XSD_STRING, String.class, ParameterMode.IN); currratecall.setreturntype(xmltype.xsd_double, Double.class); currratecall.settargetendpointaddress(serviceaddr); Double rate = (Double)currRateCall.invoke( new Object[] { "EUR", "USD" ); Web-Services/Java - 12

Unterstützte Datentypen (1) Einfache Typen: boolean, byte, short, int, long, float, double. Wrapper-Klassen: Short, Integer, Long, Float, Double, Andere Klassen: String, Date, Calendar, BigDecimal, BigInteger. Arrays: Elementtyp muss unterstützt sein. Value Classes Für komplexe (aggregierte) Typen, nur Properties (Setter+Getter) werden serialisiert. class Person { private String name; public void setname( String n) { public void getname() { interface PersonAdmin { Person getperson(); void update(person p); Web-Services/Java - 13

Unterstützte Datentypen (2) Holder Classes Für Referenzparameter bei Methodenaufrufen. IntHolder, DoubleHolder, CalendarHolder, class IntHolder { public int value; public IntHolder(int v) { value = v; interface Calculator { void twice(intholder n); class Client { public static void main(string[] args) { Calculator calc = ; IntHolder n = new IntHolder(5); calc.twice(n); System.out.println(n.value); // 10 Web-Services/Java - 14

Einschränkungen von Web-Services JAX-RPC Programmiermodell ist ähnlich zu jenem von RMI und CORBA. Wesentliche Einschränkung: Entfernte Objekte leben nur für die Dauer eines Requests (Objekte sind zustandslos). Web-Services können keine Referenzen auf ein entfernte Objekte übergeben. Parametertypen dürfen nicht java.rmi.remote implementieren. Serialisierung von Methodenaufrufen erfolgt nicht mit dem Standard-Serialisierungsmechanismus von Java. Nur Properties definiert durch Setter- und Getter-Methoden werden serialisiert. Datenkomponenten werden nicht übertragen. Web-Services/Java - 15

Abschließende Betrachtungen Breite Unterstützung der Software-Industrie Für viele Plattformen und Programmiersprachen verfügbar (Java,.NET, C++, Script-Sprachen, PDAs, Mobiltelefone). Einfache A2A-Kommunikation. einfaches APIs (z.b. JAX-RPC) für von Services und Clients. Verbindungsloses Programmiermodell durch verbindungslose Transportprotokolle, wie HTTP, geeignet für unsichere Netzverbindungen (WLAN). Web-Services sind zustandslos. Zugriff auf Web-Services ist langsam. Parsen der SOAP-Nachrichten ist rechenzeit-intensiv (besonders bei Smart Clients), SOAP-Nachrichten enhalten redundante Daten. Web-Services/Java - 16