
87e5b67498f4e703c1a840d2ef91df19.ppt
- Количество слайдов: 48
AXIS Master MIAGE/SID – Université NANCY 2 A. Roussanaly - Université Nancy 2
Généralités Ü Open source de Apache Software Foundation Ü Moteur SOAP üCompatible JAX-RPC üDistribué avec des outils de développement et de monitoring üAccompagné de documentation et d'exemples A. Roussanaly - Université Nancy 2
Architecture JAX-RPC CLIENT WSDL SERVICE JAX-RPC API Client API Serveur SOAP HTTP A. Roussanaly - Université Nancy 2
Architecture Axis La Servlet Axis. Servlet reçoit et renvoie les messages SOAP et transmet aux objets Java correspondant SOAP/HTTP D'après Xavier Blanc Les Objets Java effectuent les services. Ils sont des objets Java classiques. Axis. Servlet Moteur de Servlet Le client envoie des messages SOAP/HTTP A. Roussanaly - Université Nancy 2 JVM Objets Java et Servlet sont dans la même JVM (pas de répartition).
Axis 2 Archives au format. aar SOAP/HTTP Axis. Servlet Moteur de Servlet JVM A. Roussanaly - Université Nancy 2
Activité : développer un serveur Ü Développer un serveur qui fournit le change de différentes monnaies par rapport au DM Ü Ecrire ensuite une application de conversion de monnaies (client) Ü Exemple d’opérations: üget. Dollar() üget. Franc. Suisse() üget. Livre() üget. Yen() A. Roussanaly - Université Nancy 2
ARCHIVES A. Roussanaly - Université Nancy 2
Créer un service web avec Axis 2… …et Eclipse for J 2 EE developper A. Roussanaly - Université Nancy 2
Configuration A. Roussanaly - Université Nancy 2
Créer un projet A. Roussanaly - Université Nancy 2
Ajouter automatiquement les jar de Axis 2 dans lib A. Roussanaly - Université Nancy 2
A. Roussanaly - Université Nancy 2
A. Roussanaly - Université Nancy 2
Créer une classe A. Roussanaly - Université Nancy 2
Générer le WS A. Roussanaly - Université Nancy 2
A. Roussanaly - Université Nancy 2
A. Roussanaly - Université Nancy 2
A. Roussanaly - Université Nancy 2
A. Roussanaly - Université Nancy 2
Tester le service A. Roussanaly - Université Nancy 2
Axis Ecriture d’un serveur A. Roussanaly - Université Nancy 2
Projet Eclipse/Tomcat axis-change WEB-INF build. xml src project. properties deploy. wsdd undeploy. wsdd index. jsp… fr. miage. sid. axis. server. java A. Roussanaly - Université Nancy 2 web. xml server-config. wsdd perms. lst users. lst… lib classes. class
Properties name=poub version=1. 0 year=2006 debug=on deploy. file=deploy. wsdd undeploy. file=undeploy. wsdd service. host=localhost service. port=80 service. package=fr. miage. sid. axis. server A. Roussanaly - Université Nancy 2
Service « rapide » Ü Dans un premier temps, il nous faut un service ; Axis permet d’en créer de manière très rapide. Ü Pour notre application, nous allons créer un service qui nous permet d’obtenir le cours de différentes monnaies en euro. Ü Exemple d’opérations: ü get. Dollar() ü get. Franc. Suisse() ü get. Livre() ü get. Yen() A. Roussanaly - Université Nancy 2
Change : service Ü Créer un programme source java üexemple : une classe Change qui fournit le taux de change de l’USD, CHF, JPY, GBP Ü Modifier l'extension. java du fichier source en. jws Ü Déployer le fichier. jws ücopie dans %tomcat%webappsaxis A. Roussanaly - Université Nancy 2
Listing : Change. jws public class Change { private double EU_USD = 1. 251; private double EU_CHF = 1. 592; private double EU_JPY = 149. 00; private double EU_GBP = 0. 670; public double get. Dollar(){return EU_USD; } public double get. Franc. Suisse(){return EU_CHF; } public double get. Yen(){return EU_JPY; } public double get. Livre(){return EU_GBP; } } A. Roussanaly - Université Nancy 2
Test du service Change Ü Examiner sa description WSDL ü http: //localhost: 8080/axis/Change. jws? wsdl Ü Enregistrer le fichier WSDL dans un projet Eclipse üExemple : change. wsdl Ü Tester ce service avec les outils Eclipse/WTP üMenu contextuel Web Services sur change. wsdl et Test with Web services Explorer… A. Roussanaly - Université Nancy 2
Change : client Ü On peut maintenant écrire une application cliente du service change. Ü Par exemple, un convertisseur de monnaie : A. Roussanaly - Université Nancy 2
Ecriture « normale » d’un service Ü Usage des fichiers JWS limité : üObligation de travailler avec le code source üPas de possibilité de mappings üPas de possibilité de contrôle avec un handler Ü On est donc amené à déployer des classes (ou éventuellement des jars) A. Roussanaly - Université Nancy 2
Ecriture « normale » d’un service Ü Le point de départ peut être : 1. un fichier WSDL : ü On utilise alors l’outil WSDL 2 JAVA pour engendrer le « squelette » d’un serveur (skeleton) 2. une classe JAVA : ü Le fichier WSDL est dynamiquement engendré par le servlet Axis A. Roussanaly - Université Nancy 2
Etapes 1. Développer le service et l’intégrer dans un projet Tomcat contenant le servlet Axis (autrement dit déployer le servlet Axis sous Tomcat) 2. A l’aide d’un fichier de descripteur de déploiement (WSDD) propre à Axis, déployer le service Axis Ü Il s’agit de mettre à jour le fichier de configuration server-config. wsdd qui se trouve dans le dossier WEB-INF d’Axis Ü On utilise l’outil Admin. Client d’Axis A. Roussanaly - Université Nancy 2
Explications Ü L’outil Admin. Client s’appuie (1) sur les informations contenues dans le fichier WSDD et (2) sur les arguments passés en paramètres (host, port, axis-root) ü axis. jar et axis-ant. jar doivent être dans le classpath. Ü Axis crée un servive appelé ü http: //
/>. . ." src="https://present5.com/presentation/87e5b67498f4e703c1a840d2ef91df19/image-35.jpg" alt="WSDD avancée Ü Scope
Annexes (archives) A. Roussanaly - Université Nancy 2
Exemple client n° 1 (DII) public String end. Point = "http: //localhost: 8080/axis/Add. Function. jws"; public String operation. Name = "add. Int"; public int invoke. Service(int a, int b) throws Exception{ Service service = new Service(); Call call = (Call) service. create. Call(); call. set. Operation. Name(new QName(end. Point, operation. Name)); call. set. Target. Endpoint. Address( new URL(end. Point) ); Integer ret = (Integer) call. invoke( new Object[] { new Integer(a), new Integer(b)} ); return ret. int. Value(); } A. Roussanaly - Université Nancy 2
Exemple client n° 2 (PROXY) public String wsdl. Url = "http: //localhost: 8080/axis/Add. Function. jws? wsdl"; name. Space. Uri = "http: //localhost: 8080/axis/Add. Function. jws"; service. Name = "Add. Function. Service"; port. Name = "Add. Function"; public int invoke. Service(int a, int b) throws Exception{ Service. Factory service. Factory = Service. Factory. new. Instance(); Service af. Service = service. Factory. create. Service( new URL(wsdl. Url), new QName(name. Space. Uri, service. Name)); Add. Function. Service. Intf afs. Intf =(Add. Function. Service. Intf)af. Service. get. Port(new QName(name. Space. Uri, port. Name), Add. Function. Service. Intf. class); return afs. Intf. add. Int(a, b); } A. Roussanaly - Université Nancy 2
Exemple client n° 2 (PROXY) public interface Add. Function. Service. Intf extends java. rmi. Remote { public int add. Int(int a, int b) throws java. rmi. Remote. Exception; } A. Roussanaly - Université Nancy 2
Exemple client n° 3 (STUB) Générer préalablement le stub à l'aide de l'outil WSDL 2 Java public int invoke. Service(int a, int b) throws Exception{ Add. Function. Service afs = new Add. Function. Service. Locator(); Add. Function af = afs. get. Add. Function(); return af. add. Int(a, b); } A. Roussanaly - Université Nancy 2
Axis Ecriture d’un client A. Roussanaly - Université Nancy 2
Ecriture d'un client Ü On a le choix entre 3 méthodes : ü Proxy • Cas d’utilisation : type des paramètres et résultat connus (voir exemple annexe de présentation) ü Interface d'invocation dynamique (DII) : • Cas d’utilisation : on ne connaît que l’url du service => invocation dynamique des méthodes (voir exemple annexe de présentation) ü Génération d'un Stub à partir d'une description WSDL • Cas d’utilisation : connaissance préalable du WSDL • On se place dans ce cas dans la suite… A. Roussanaly - Université Nancy 2
Synopsis de l’application WSDL 2 JAVA Change. wsdl Change. java Change. Service. Locator Change. Soap. Bindind. Stub. java JAVAC UI. java Convertisseur. java A. Roussanaly - Université Nancy 2
Projet Eclipse Change. Axis. Client build. xml project. properties lib src bin. class img fr. miage. sid. axis. client . jpg . java stub. java (wsdl 2 java) A. Roussanaly - Université Nancy 2 axis. jar axis-ant. jar wsdl 4 j. jar mail. jar activation. jar…
Ant
Ant