Скачать презентацию AXIS Master MIAGE SID Université NANCY 2 A Скачать презентацию AXIS Master MIAGE SID Université NANCY 2 A

87e5b67498f4e703c1a840d2ef91df19.ppt

  • Количество слайдов: 48

AXIS Master MIAGE/SID – Université NANCY 2 A. Roussanaly - Université Nancy 2 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é 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 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 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. 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 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 ARCHIVES A. Roussanaly - Université Nancy 2

Créer un service web avec Axis 2… …et Eclipse for J 2 EE developper 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 Configuration A. Roussanaly - Université Nancy 2

Créer un projet 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 Ajouter automatiquement les jar de Axis 2 dans lib 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

Créer une classe A. Roussanaly - Université Nancy 2 Créer une classe A. Roussanaly - Université Nancy 2

Générer le WS 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

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 Tester le service A. Roussanaly - Université Nancy 2

Axis Ecriture d’un serveur 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. 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 axis. jar axis-ant. jar wsdl 4 j. jar mail. jar activation. jar…

Properties name=poub version=1. 0 year=2006 debug=on deploy. file=deploy. wsdd undeploy. file=undeploy. wsdd service. host=localhost 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 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 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; 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? 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. 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 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 : 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 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

Ant A. Roussanaly - Université Nancy 2

WSDD A. Roussanaly - Université Nancy 2

Explications Ü L’outil Admin. Client s’appuie (1) sur les informations contenues dans le fichier 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: //: //services/ Ü Le WSDL du service is accessible à ü http: //: //services/? wsdl Ü Une liste des services est visible à ü http: //: //services A. Roussanaly - Université Nancy 2

/>. . ." src="https://present5.com/presentation/87e5b67498f4e703c1a840d2ef91df19/image-35.jpg" alt="WSDD avancée Ü Scope . . . > />. . ." /> WSDD avancée Ü Scope . . . > />. . . Ü : ü "Request" ü "Session" ü "Application" A. Roussanaly - Université Nancy 2

Annexes (archives) A. Roussanaly - Université Nancy 2 Annexes (archives) A. Roussanaly - Université Nancy 2

Exemple client n° 1 (DII) public String end. Point = 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 = 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. 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 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

Déploiement de service %java org. apache. axis. client. Admin. Client My. Service. wsdd A. Roussanaly - Université Nancy 2

Axis Ecriture d’un client 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 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. 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 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 A. Roussanaly - Université Nancy 2

Ant <!-- Definition de la tache ant wsdl 2 java --> <taskdef name= Ant A. Roussanaly - Université Nancy 2

Ant <!-- ================================== Créer un stub avec wsdl 2 java ================================== --> <target name= Ant A. Roussanaly - Université Nancy 2