Web Services ( JAX-RPC ) Referenten n n n n Roman Korn Houman Moshtagh Kuo-Sek Lee Xuefei Niu Übersicht I. WebServices, WSDP, JAX-RPC II. Wie wird ein Web Service entwickelt? I. II. III. Der Server Der Client Vorstellung der verteilten Anwendung „Bibliothek“ Roman Korn Web Services n n n n n n Leichtgewichtige Web Services (Browser) Schwergewichtige Web Services (CORBA) Java API for XML based RPC (JAX-RPC) SOAP-RPC WSDL Interoperabilität Client Server Registry Roman Korn Kommunikation Roman Korn Nachrichtenarten Client Server Synchron (unterstützt) One-way (unterstützt) Non-blocking (nicht unterstützt) Roman Korn Web Service Development Pack (WSDP) n n n n n Java XML Pack JAX-RPC API Ant Build Tool Apache Tomcat Deploymenttool Roman Korn Core API – Client Side n n n n n The javax.xml.rpc.Stub interface The javax.xml.rpc.Call interface The javax.xml.rpc.Service interface The javax.xml.rpc.ServiceFactory class The javax.xml.rpc.JAXRPCException class Roman Korn Core API – Server Side n n It is important to note that the JAX-RPC specification does not define and require any standard APIs for the EJB container based implementation of a JAX-RPC server-side runtime system. The internals of a J2EE container based JAX-RPC runtime system are implementation specific. Roman Korn Übersicht I. Web Services und JAX-RPC II. Wie wird ein Web Service entwickelt I. II. III. Der Server Der Client Vorstellung der verteilten Anwendung „Bibliothek“ Roman Korn Übersicht I. Web Services und JAX-RPC II. Wie wird ein Web Service entwickelt I. II. III. Der Server Der Client Vorstellung der verteilten Anwendung „Bibliothek“ Roman Korn Übersicht I. Web Services und JAX-RPC II. Wie wird ein Web Service entwickelt I. II. III. Der Server Der Client Vorstellung der verteilten Anwendung „Bibliothek“ Roman Korn JAVA API JAX-RPC - JAX-RPC bietet eine einfache Möglichkeit, ein SOAP basiertes Webservice zu entwickeln. - Entwickler brauchen nicht die Komplexität der Laufzeitumgebung zu berücksichtigen. - JAX-RPC unterstützt die Abbildung von WSDL -> JAVA, JAVA -> WSDL aus seitens des Clients und des Servers. Kyu-sek Lee Funktion eines Web Services Kyu-sek Lee JAX-RPC Architektur Client Server Kyu-sek Lee Projekt Bibliothekverwaltung Kyu-sek Lee Aufbau und Entwicklung eines Services (1) n Deklaration der Service Interface Klasse package buecher; import java.rmi.Remote; import java.rmi.RemoteException; public interface BibliothekIF extends Remote { public Buecher[] anzeigen() throws RemoteException; public Meldung neuesBuchHinzufuegen(Buch buch,int anzahlBuch) throws RemoteException; public Meldung entfernen(int isbnNr, int anzahlBuch) throws RemoteException; public Buecher suchen(int isbnNr) throws RemoteException; public Meldung nachbestellen(int isbnNr,int anzahlBuch) throws RemoteException; } Kyu-sek Lee Aufbau und Entwicklung eines Services (2) n Implementierung der Service Klasse <<interface>> BibliothekIF <<interface>> java.rmi.Remote . . . n •Buecher[] anzeigen() •Meldung neuesBuchHinzufuegen(Buch buch,int anzahlBuch) •Meldung entfernen(int isbnNr, int anzahlBuch) •Buecher suchen(int isbnNr) •Meldung nachbestellen(int isbnNr,int anzahlBuch) Terminal . . . und Kompilierung der Service Klasse n ant compile-server Kyu-sek Lee Aufbau und Entwicklung eines Services (3) n Einpacken der Klassen in einer .WAR Datei n n ant setup-web-inf ant package Kyu-sek Lee Aufbau und Entwicklung eines Services (4) n n Generierung der Tie Klassen und der WSDL Datei n ant process-war Den Service deployen n ant deploy Kyu-sek Lee JAX-RPC Client n n Was ist ein JAX-RPC Client? -der Client ruft denWebservice an aderen Platform auf,und führt das Programm durch. Wie kann dieser Aktion realisiert werden -JAX-API kombiniert XML mit Remote Procedure Call(RPC) -Dieser Mechanismus ermöglicht Clients , Prozeduren auf dem verteilten System oder entfernten System ,auszuführen. Xuefei niu JAX-RPC Architektur Server side Client side Client application Service Endpoint JAX_RPC SERVICE RUNTIME ENVIRONMENT JAX-RPC CLIENT RUNTIME ENVIRONMENT SOAP HTTP Xuefei niu Xuefei niu JAX-RPC runtime und generiert Klasse Was ist Stub? Web Service Client Application ties Stubs SOAP MESSAGE JAX-RPC RUNTIME http JAX-RPC RUNTIME Xuefei niu Methode für Ausführung von Endpoint Service n n n Stub-based programming model Dynamic Invocation Interface(DII) Dynamic Proxies Xuefei niu Entwicklung eines Client Programms n n n n n Generate stubs Code the client Compile the client code Package the client classes into a JAR file Run the client Xuefei niu mit static Stubs Client zu erzeugen n n n n n Config.xml Datei,um zu WSDL Datei den Pfad anzugeben Command eingabe zur Erzeugung von Stub: ant generate-stub wscompile -gen:client -d build/client classpath build/shared config.xml Compile client code: ant compile-client (BibClient.java) Packaging the client: ant jar-client (danach dist/buecher-client.jar ) Run Programm: ant run Xuefei niu public static Buecher[] anzeigen(){ Buecher Array[]; try { Stub stub = createProxy(); BibliothekIF MyProxy = (BibliothekIF)stub; Array=MyProxy.anzeigen(); } catch (Exception ex) { ex.printStackTrace(); Array=new Buecher[0]; Array[0].setStatus(false); Array[0].setMeldung(fehler); } return Array; } private static Stub createProxy() { return (Stub)(new MyBibliothek_Impl().getBibliothekIFPort()); } Xuefei niu Weitere Einführung n n A dynamic Proxy Client keine config.xml datei,Pfad zu WSDL Datei direct im client angeben A Dynamic Invocation Interface Client Xuefei niu