Adolphe Francois Julien Marmel Dominique Perlat Olivier Printemps SOAP. Simple Object Access Protocol. Encadrant : Chantal Taconet
|
|
|
- Simone Pierre
- il y a 10 ans
- Total affichages :
Transcription
1 Adolphe Francois Julien Marmel Dominique Perlat Olivier Printemps SOAP Simple Object Access Protocol Encadrant : Chantal Taconet
2 Sommaire Sommaire... 2 Première Partie : Présentation Générale de SOAP Présentation et fonctionnement SOAP Présentation et fonctionnement des Webservices Le protocole WSDL Le protocole UDDI Différence entre IIOP et SOAP Protocoles utilisés par SOAP Problèmes posés par SOAP :... 8 a) Problèmes HTTP... 8 b) Problèmes XML... 8 c) Problèmes liés à SOAP Les fichiers WSDL... 9 a) Services b) Port c) Message d) Port Type et Opérations e) Bindings Deuxième Partie : Installation et mise en œuvre Apache SOAP a) Installation b) Exemple d utilisation NuSoap a) Installation b) Exemples d utilisation SOAP::Lite a) Installation b) Exemple d utilisation : Tests d interoperabilité Troisième Partie : Exemples d utilisation Exemple de Web Service : Google Web Service Exemple du gestionnaire d imprimante a) Exemple 1 : l imprimante HP b) Exemple 2 : le gestionnaire d impression c) Exemple 3 : le gestionnaire d impression et WSDL d) Exécution des exemples Bibliographie SOAP Simple Access Protocol 2
3 Première Partie : Présentation Générale de SOAP 1. Présentation et fonctionnement SOAP SOAP (Simple Object Access Protocol) est un protocole d invocation de méthodes sur des services distants. Basé sur XML, SOAP est un format de communication pour assurer communication de machine à machine. Le protocole permet d appeler une méthode RPC (Remote Procedure Call) et d envoyer des messages aux machines distantes via HTTP. Ce protocole est très bien adapté à l utilisation des services web car il permet de fournir au client une grande quantité d informations récupérées sur un réseau de serveurs tiers. La version actuelle de SOAP est la 1.1. Cette version a été proposée au W3C en 2000 par UserLand, Ariba, Commerce One, Compaq, Developmentor, HP, IBM, IONA, Lotus, Microsoft, SAP. Le W3C travaille actuellement sur la version 1.2 de SOAP, elle devrait sortir fin 2002 et à pour but de supprimer l utilisation des RPC au profit des messages. SOAP permet donc l échange d information dans un environnement décentralisé et distribué, comme Internet par exemple. Il permet l invocation de méthodes, de services, de composants et d objets sur des serveurs distants et peut fonctionner sur de nombreux protocoles (des systèmes de messagerie à l utilisation de RPC). Cependant, il fonctionne particulièrement bien avec le protocole HTTP, protocole très souvent utilisé avec SOAP. SOAP utilise les protocoles HTTP et XML. HTTP comme mécanisme d invocation de méthodes en utilisant un des balises spécifiques pour indiquer la présence de SOAP comme «<SOAP-ENV>». Cela permet de franchir aisément les firewalls et proxy et facilite le traitement en cas de filtrage. XML pour structurer les requêtes et les réponses, indiquer les paramètres des méthodes, les valeurs de retours, et les éventuelles erreurs de traitements. XML joue un rôle prépondérant dans SOAP, on peut distinguer plusieurs éléments : une enveloppe, expliquant comment la requête doit être traitée et présentant les éléments contenus dans le message. un ensemble de règles de codage, permettant de différencier les types de données transmises. une convention de représentation, permettant de représenter les appels aux procédures de traitement et les réponses. Même si SOAP ressemble beaucoup en termes de fonctionnalités à des protocoles comme IIOP pour CORBA, ORPC pour DCOM, ou JRMP (Java Remote Method Protocol) pour JAVA, il possède un avantage indéniable. En effets, SOAP utilise un mode texte alors que les autres fonctionnent en mode binaire, cela facilite le passage des équipements de sécurité. SOAP Simple Access Protocol 3
4 2. Présentation et fonctionnement des Webservices Présentation : Les Webservices permettent de faire communiquer deux sous-systèmes ensembles et cela indépendamment des architectures utilisées. Ces systèmes vont pouvoir s échanger des services ou des traitements applicatifs. Les Webservices constituent un moyen de distribuer un service de manière standard grâce à XML tout en respectant un modèle de développement ayant déjà fait ses preuves comme CORBA ou DCOM (Microsoft). Un des avantages des Webservices est de regrouper tous les acteurs derrière un seul et même standard. Fonctionnement : Pour expliquer le fonctionnement des webservices, il convient de distinguer plusieurs étapes :! Recherche dans un annuaire UDDI : le client cherche un service particulier, il s adresse à un annuaire qui va lui fournir la liste des prestataires habilités à satisfaire sa demande. L annuaire UDDI peut être comparé à un moteur de recherche sauf que les documents sont remplacés par des services.! Recherche de l interface du composant à contacter : une fois la réponse reçue (en XML) de l annuaire, le client va chercher à communiquer via une interface. Cette interface décrite en langage WSDL fournit l ensemble des services disponibles. Elle offre la possibilité de vérifier que le contrat correspond bien aux besoins demandés.! Invocation du service : le client doit maintenant passer les paramètres attendus par le service et assurer la communication avec le serveur. L outil utilisé pour cela est le Proxy, c est l objet qui permet la communication entre le client et le serveur. Il est généré par le client en utilisant l interface WSDL. 3. Le protocole WSDL WSDL (Web Service Definition Langage) est un format de représentation des interfaces de services Web en XML. Une analogie avec CORBA peut être faite, en effet WSDL est la représentation XML du langage IDL (description d interfaces). WSDL a deux rôles prépondérants:! Il sert de référence à la génération de Proxies.! Il assure le couplage entre le client et le serveur par le biais des interfaces. 4. Le protocole UDDI UDDI (Universal Description Discovery and Integration) est un protocole basé sur XML qui sert à la publication et à l'exploration d'annuaires de Web Services. Il permet de situer un service Web, de le décrire, et de l intégrer. Ce protocole a été réalisé par IBM, Microsoft et Ariba. Cependant UDDI est assez complexe et a été qualifié par certains «d usine à gaz». C est la raison pour laquelle IBM et Microsoft travaille actuellement sur un autre protocole d annuaire de services : Web Services Inspection (WS-Inspection). L objectif de WS-Inspection est de permettre à une entreprise de décrire facilement les services Web dont elle dispose. SOAP Simple Access Protocol 4
5 5. Différence entre IIOP et SOAP IIOP (Internet Inter-ORB Protocol) est un protocole de transfert de méthode utilisé par CORBA. Il définit le format des messages échangés entre la machine cliente et la machine serveur. IIOP va permettre d envoyer et de recevoir des types complexes de données. Les clients et serveurs peuvent employer n importe quel mélange de langages et de plateformes. IIOP est un protocole très complet qui est capable d effectuer tous les transferts exigés par SOAP. Cependant l utilisation de SOAP peut être parfois préférable pour plusieurs raisons. Tout d abord, l utilisation de IIOP nécessite de compiler et distribuer des souches clients pour chaque type de clients avec qui l on communique. Ce n est évidemment pas très pratique, en particulier quand le nombre de plateformes différentes ou de langages différents est important. Dans le cas des services web, IIOP va poser des problèmes pour le franchissement des équipements de filtrage (firewall, proxy). Cela va demander un travail en plus de la part de chaque personne administrant l équipement. Au contraire, l utilisation de SOAP ne pose absolument pas de problèmes au niveau des firewalls. SOAP étant un protocole utilisant HTTP, il y a peu de chance qu il soit bloqué lors d un filtrage. Evidemment CORBA, au travers de IIOP, est plus performant : il y a moins de données transitant sur le réseau, et les opérations de conversion / déconversion sont traitées plus rapidement. Cependant avec SOAP les données circulent en format texte et en clair sur le réseau. Leur lecture en est donc facilitée et le déboguage est beaucoup plus simple. SOAP est donc un très bon protocole si l on cherche à dialoguer avec des plateformes hétérogènes, ce qui est particulièrement le cas dans toutes les applications de type «Web Services». En fait, l utilisation de CORBA ou de SOAP va surtout dépendre de ce que l on doit faire : dans le cas des webservices SOAP semble être une bonne solution, par contre si l on souhaite faire des applications distribuées classiques comme du calcul distribué, on choisira plutôt CORBA. 6. Protocoles utilisés par SOAP SOAP se sert le plus souvent de deux protocoles : HTTP et XML. Un message SOAP est écrit en XML. HTTP est utilisé comme protocole de transport. Les messages SOAP vont donc être encapsulés dans HTTP, ce qui permet une utilisation et une compatibilité très importante avec les réseaux et équipements existants. HTTP est le protocole de transport le plus utilisé mais il n est pas impossible de trouver des implémentations de SOAP sur d autres protocoles (avec SMTP par exemple). Un message SOAP est un document XML qui possède une enveloppe SOAP et éventuellement une déclaration XML. L enveloppe SOAP est composée d un corps SOAP et éventuellement d un en-tête. Les règles de syntaxe sont les suivantes : Un message SOAP MUST être codé en XML Un message SOAP MUST avoir une enveloppe SOAP Un message SOAP CAN avoir un entête SOAP (header) Un message SOAP MUST avoir un corps SOAP (body) SOAP Simple Access Protocol 5
6 Un message SOAP MUST utiliser l espace de désignation de l enveloppe SOAP Un message SOAP MUST utiliser l espace de désignation d encodage SOAP Un message SOAP MUST NOT contenir une référence à une DTD Un message SOAP MUST NOT contenir des instructions de type XML Processing Un message SOAP va être constitué d une enveloppe et d un corps. C est à l intérieur du corps (body) que l on trouve le contenu : //enveloppe du message <soap:envelope //espace de nommage pour l enveloppe SOAP xmlns:soap=" //on définit le type d encodage du message SOAP:encodingStyle=" //espace de nommage pour les types de variables xmlns:xsi=" xmlns:xsd=" //espace de nommage pour l appel de méthodes xmlns:tns=" //corps <soap:body> //espace de nommage pour la fonction getstatename <m:getstatename xmlns:m=" //on spécifie un argument à passer à getstatname <statenum xsi:type="xsd:int">41</statenum> </m:getstatename> //gestion d erreurs <soap:fault> </soap:fault> </soap:body> </soap:envelope> <envelope> est la racine ; <header>, <body>,et <fault> sont les enfants. SOAP Simple Access Protocol 6
7 Structure d un message SOAP Exemple: Message SOAP encapsulé dans une requête HTTP Voici une requête SOAP typique (avec les en-têtes HTTP) pour un appel à une méthode RPC nommée EchoString, qui prend une chaîne comme paramètre : POST /test/simple.asmx HTTP/1.1 Host: Content-Type: text/xml; charset=utf-8 Content-Length: length SOAPAction: " <?xml version="1.0" encoding="utf-8"?> <soap:envelope xmlns:xsi=" xmlns:xsd=" xmlns:soapenc=" xmlns:tns=" xmlns:soap=" <soap:body soap:encodingstyle=" <tns:echostring> <inputstring>string</inputstring> </tns:echostring> </soap:body> </soap:envelope> Le nom de la méthode est appelé par la balise <tns:echostring> et le paramètre de type chaîne est défini par <inputstring>. La méthode qui est invoqué est donc de cette forme : SOAP Simple Access Protocol 7
8 public String echostring(string inputstring); Le serveur réponds alors: HTTP/ OK Content-Type: text/xml; charset=utf-8 Content-Length: length <?xml version="1.0" encoding="utf-8"?> <soap:envelope xmlns:xsi=" xmlns:xsd=" xmlns:soapenc=" xmlns:tns=" xmlns:soap=" <soap:body soap:encodingstyle=" <tns:echostringresponse> <Return>string</Return> </tns:echostringresponse> </soap:body> </soap:envelope> Les règles de sérialisation du type de données de chaîne, ainsi que la forme de l'appel à une méthode, sont définies dans SOAP 1.1, sections 5 et 7 ( 7. Problèmes posés par SOAP : Ces problèmes concernent principalement l interopérabilité des messages SOAP de type RPC. La plupart des problèmes posés par SOAP ne concernent pas directement le protocole lui-même mais plutôt les protocoles utilisés, comme XML ou HTTP. Ils peuvent être divisés en trois catégories : - problèmes http - problèmes XML - problèmes liés au protocole SOAP a) Problèmes HTTP HTTP est utilisé pour le transport des messages SOAP en XML. Or certaines balises spécifiques à SOAP ne vont pas être bien interprétées par tous les clients HTTP. Cela va dépendre du client et ne pas fonctionner dans certains cas. On peut prendre l exemple de la fonction SOAPAction : la valeur de SOAPAction doit être en guillemets sauf s il s agit d une valeur nulle. Exemple : «SOAPAction: ou «SOAPAction:» Cependant certains clients ne sont pas capables de fournir une valeur d entête HTTP nulle, si le serveur en attends une, l appel ne fonctionnera pas. b) Problèmes XML Les problèmes d interopérabilité XML concernent l analyse du langage XML. SOAP repose sur l utilisation de ce langage, donc si XML pose des problèmes d implémentations, ceux-ci vont poser des problèmes sur SOAP. SOAP Simple Access Protocol 8
9 c) Problèmes liés à SOAP En lui-même, SOAP est relativement simple ; il requiert que les messages soient placés dans une enveloppe avec le texte du message inclus dans un élément du corps. Cependant il existe un certain nombre de problèmes d interopérabilité comme par exemple le problème lié à l implémentation de l attribut «mustunderstand». Les spécifications de SOAP indiquent que si cet attribut est défini sur la valeur «1», il devra être traité. Pourtant certaines implémentations de SOAP ne le font pas (principalement les premières à avoir été développées). De nombreux autres problèmes d interopérabilité ont été découverts, ils sont consultables sur le forum Cette liste contribue grandement à l amélioration du protocole. 8. Les fichiers WSDL Afin des décrire les services disponibles sur un serveur, un langage de description de service a été mis en place : le WSDL (Web Service Description Langage). Ce langage est basé sur XML. Les fichiers WSDL contiennent donc la description de l accès à des Web services ainsi que des messages qui seront échangés avec les services en question. (Arguments, types de donnée ). Une fois muni de cette description, appelée aussi parfois «contrat», le client va pouvoir dialoguer avec les services de manière adéquate. On peut par exemple générer automatiquement à partir du fichier WSDL un client ou un proxy pour ce service. Pour comprendre les différentes zones d un descripteur WSDL, le schéma suivant où se situent les différents éléments décrits dans un fichier WSDL. Différents éléments d un fichier WSDL (source : LearnXmlws, SOAP Simple Access Protocol 9
10 Un fichier WSDL commence par <definition> et finit par </definition>. C est à l intérieur de cette espace que l on va déclarer tous les éléments constituant la description. Nous allons prendre l exemple du Web Service de Google pour montrer comment se construit un fichier WSDL. Début de la description des services avec déclaration des différents schémas utilisés Nom unique identifiant cet ensemble de service au niveau du serveur <definitions name="urn:googlesearch" targetnamespace="urn:googlesearch" xmlns:typens="urn:googlesearch"... </definition> xmlns:xsd=" xmlns:soap=" xmlns:soapenc=" xmlns:wsdl=" xmlns=" a) Services Un service est la mise à disposition d une ou plusieurs méthodes. On peut imaginer par exemple une classe avec plusieurs méthodes invocables à distance. La classe sera le service, et chaque méthode sera une opération sur ce service. La définition d un service se fait par l utilisation de <service></service>. b) Port Pour chaque service on va définir des ports par lesquels ce service sera disponible. En effet, il est possible de rendre disponible un service sur plusieurs supports différents : HTTP GET, SOAP, SMTP Définition d un service Définition d un port avec l adresse du service (ici une URL) <service name="googlesearchservice"> <port name="googlesearchport" binding="typens:googlesearchbinding"> <soap:address location=" </port> </service> SOAP Simple Access Protocol 10
11 c) Message Les messages sont les éléments échangés entre le client et le serveur lors d une opération sur le port d un service. Ces messages sont constitués de plusieurs parties (part) qui représentent chacune une donnée avec un type associé. <message name="dogooglesearch"> <part name="key" <part name="q" <part name="start" <part name="maxresults" <part name="filter" <part name="restrict" <part name="safesearch" <part name="lr" <part name="ie" <part name="oe" </message> type="xsd:string"/> type="xsd:string"/> type="xsd:int"/> type="xsd:int"/> type="xsd:boolean"/> type="xsd:string"/> type="xsd:boolean"/> type="xsd:string"/> type="xsd:string"/> type="xsd:string"/> Définition d un message Chaque «part» du message a un nom et un type. Ici un type simple Utilisation d un type complexe <message name="dogooglesearchresponse"> <part name="return" type="typens:googlesearchresult"/> </message> Ainsi, il est possible définir ses propres types en se basant sur les types de base. En lisant cette définition dans le fichier WSDL, le client pourra générer éventuellement automatiquement une structure ou une classe reflétant cette description. Voici un exemple de type complexe qui représente le résultat d une recherche sur le Web service de Google : Définition d un type complexe Lien vers un autre type complexe <type> <xsd:complextype name="resultelement"> <xsd:all> <xsd:element name="summary" type="xsd:string"/> <xsd:element name="url" type="xsd:string"/> <xsd:element name="snippet" type="xsd:string"/> <xsd:element name="title" type="xsd:string"/> <xsd:element name="cachedsize" type="xsd:string"/> <xsd:element name="relatedinformationpresent" type="xsd:boolean"/> <xsd:element name="hostname" type="xsd:string"/> <xsd:element name="directorycategory" type="typens:directorycategory"/> <xsd:element name="directorytitle" type="xsd:string"/> </xsd:all> </xsd:complextype> </type> SOAP Simple Access Protocol 11
12 d) Port Type et Opérations Une méthode peut être représentée par une opération qui prend un message en entrée et renvoie un message en sortie. Ainsi chaque opération représentée par <operation></operation> indique les flux de messages en entrée et en sortie correspondants en définissant les élément <input/> et <output/>. Enfin, la collection de toutes les opérations d un service est rassemblée dans un port type. Définition d une opération (méthode) <porttype name="googlesearchport"> <operation name="dogetcachedpage"> <input message="typens:dogetcachedpage"/> <output message="typens:dogetcachedpageresponse"/> </operation> <operation name="dospellingsuggestion"> <input message="typens:dospellingsuggestion"/> <output message="typens:dospellingsuggestionresponse"/> </operation> On indique le nom des messages en entrée et en sortie <operation name="dogooglesearch"> <input message="typens:dogooglesearch"/> <output message="typens:dogooglesearchresponse"/> </operation> </porttype> SOAP Simple Access Protocol 12
13 e) Bindings Enfin, pour compléter la description, il faut relier certains éléments entre eux. C est le rôle des bindings représentés par les balises <binding></binding>. On va spécifier notamment tout ce qui concerne l encodage des données dans les messages en indiquant les règles que l on utilise. Définition de la couche transport utilisée Pour chaque opération, on défini les règles d encodage des données <binding name="googlesearchbinding" type="typens:googlesearchport"> <soap:binding style="rpc" transport=" <operation name="dogooglesearch"> <soap:operation soapaction="urn:googlesearchaction"/> <input> <soap:body use="encoded" namespace="urn:googlesearch" encodingstyle=" </input> <output> <soap:body use="encoded" namespace="urn:googlesearch" encodingstyle=" </output> </operation> </binding> SOAP Simple Access Protocol 13
14 Deuxième Partie : Installation et mise en œuvre Un des avantages de SOAP est sa capacité à faire communiquer des plateformes hétérogènes. C est pourquoi plusieurs implémentations de SOAP on été développées (ou sont encore en développement). Nous en avons testé quelques unes, utilisant chacune un langage différent : Apache SOAP pour une implémentation Java, NuPHP pour le PHP, et SOAP::Lite pour le langage Perl. Pour chacune, nous allons présenter brièvement les procédures d installation, et quelques exemples de mise en œuvre. 1. Apache SOAP La distribution Apache SOAP ( fournit les librairies nécessaires pour invoquer des services SOAP distants, et des outils côté serveur pour implémenter des services SOAP. En tant que librairie cliente, il offre une API pour invoquer des services SOAP RPC et une API pour envoyer et recevoir des messages SOAP. Pour mettre en œuvre un service accessible par RPC ou par messages, Apache SOAP doit être hébergé par un conteneur de servlets comme Apache Tomcat. Le transport principal est le http, même si le support d autres protocoles peut être ajouté (SMTP par exemple). a) Installation Prérequis côté serveur : jdk (1.2 ou ulterieur), un conteneur de servlets (tomcat par exemple), un parseur XML (xerces par exemple), les classes soap (le fichier soap.war inclus dans la distribution de soap suffit pour tomcat), classes annexes dans certains cas. Prérequis côté client : classes soap, mail.jar, activation.jar, classpath correct pour compiler le code java. Tomcat est un conteneur de servlets JSP qui intègre son propre serveur web. Il ne necessite donc pas l installation d un serveur web séparé. L installation de tomcat ne pose pas de problème particulier. Il suffit d extraire l archive fournie et de démarrer le serveur pour vérifier que les exemples de servlets fonctionnent. Le serveur se lance par défaut sur le port 8080, qui peut être modifié dans les fichiers de configuration de tomcat. L installation de soap sous tomcat se fait simplement en copiant l archive web soap.war dans le repertoire d applications web de tomcat (jakarta-tomcat-4.0.3/webapps). On peut également créer un nouveau <Context> pour le serveur tomcat, qui indiquera où trouver les classes SOAP. Cela implique d ajouter les chemins d accès vers tous les services à deployer dans le classpath. Dans les deux cas, il faut systématiquement redémarrer le serveur pour prendre en compte les modifications. Nous avons choisi de mettre en œuvre Apache SOAP de la première façon, qui utilise la configuration par défaut du serveur tomcat. Lancement et arret du serveur : /mci/projet/proj01/soap/jakarta-tomcat-4.0.3/bin/startup.sh /mci/projet/proj01/soap/jakarta-tomcat-4.0.3/bin/shutdown.sh SOAP Simple Access Protocol 14
15 Pour tester le bon fonctionnement du serveur, il suffit d ouvrir les pages suivantes : Le serveur doit répondre «SOAP (RPC Message) Router Sorry, I don't speak via HTTP GET- you have to use HTTP POST to talk to me.» Si le client est correctement configuré, la commande suivante affichera la liste des services déployés sur le serveur : java org.apache.soap.server.servicemanagerclient list b) Exemple d utilisation Notre exemple conmprend 3 fichiers : - EchoService.java Le code du serveur d echo - GetEcho.java le code du client chargé d appeler le service d echo - DeploymentDescriptor.xml contient la description du service. Ce fichier facilite le déploiement d un service sur le serveur. Compiler les sources java (javac *.java) apres avoir verifie le classpath. Placer les classes dans "/mci/projet/proj01/soap/jakarta-tomcat /webapps/soap/WEB-INF/classes/samples/echo"! serveur : EchoService.java package samples.echo; public class EchoService public String getecho(string s) return "*echo* " + s; Renvoi de la chaine reçue SOAP Simple Access Protocol 15
16 ! client : GetEcho.java package samples.echo; import java.net.*; import java.util.*; import org.apache.soap.*; import org.apache.soap.rpc.*; Importation des classes nécessaires public class GetEcho public static void main (String[] args) throws Exception if (args.length!= 2 && (args.length!= 3!args[0].startsWith ("-"))) System.err.println ("Usage: java " + GetEcho.class.getName () + " [-encodingstyleuri] SOAP-router-URL chaine"); System.exit (1); // Traitement des arguments. int offset = 3 - args.length; String encodingstyleuri = args.length == 3? args[0].substring(1) : Constants.NS_URI_SOAP_ENC; URL url = new URL (args[1 - offset]); String chaine = args[2 - offset]; Traitement des arguments // Construction de l appel. Call call = new Call (); Construction de l appel call.settargetobjecturi ("urn:test-myecho"); call.setmethodname ("getecho"); call.setencodingstyleuri(encodingstyleuri); Vector params = new Vector (); params.addelement (new Parameter("chaine", String.class, chaine, null)); call.setparams (params); // appel: l URI action est vide (non utilisée par XML-SOAP) Response resp = call.invoke (/* router URL */ url, /* actionuri */ "" ); // Check the response. if (resp.generatedfault ()) Fault fault = resp.getfault (); System.err.println("Generated fault: " + fault); else Parameter result = resp.getreturnvalue (); System.out.println (result.getvalue ()); Affichage du résultat Appel Verification de la réponse SOAP Simple Access Protocol 16
17 ! DeploymentDescriptor.xml <isd:service xmlns:isd=" id="urn:test-myecho"> <isd:provider type="java" scope="application" methods="getecho"> <isd:java class="samples.echo.echoservice"/> </isd:provider> <isd:faultlistener>org.apache.soap.server.domfaultlistener</isd:faultlistener> </isd:service>! Utilisation : Les services peuvent être déployés à l aide de l interface web de la distibution Apache SOAP ( ou plus simplement en utilisant la classe ServiceManagerClient fournie : java org.apache.soap.server.servicemanagerclient deploy DeploymentDescriptor.xml java org.apache.soap.server.servicemanagerclient undeploy urn:test-myecho java org.apache.soap.server.servicemanagerclient list Le client prend en paramètres l adresse du routeur RPC et le texte à envoyer : java samples.echo.getecho montexte Apache SOAP n offre pas de support du wsdl côté client. Un utilitaire séparé fourni par IBM permet toutefois de créer un code client à partir d un fichier wsdl, mais son utilisation n est pas pratique. SOAP Simple Access Protocol 17
18 2. NuSoap NuSOAP est une implémentation en PHP de SOAP disponible gratuitement sur Internet (licence LGPL) : Il a été développé par Dietrich Ayala pour Nusphere (IDE pour PHP : Ce kit est constitué de plusieurs classes permettant la mise en place de clients et de serveurs SOAP en utilisant le langage PHP. Ce langage est très utilisé pour construire des sites Web dynamiques, l accès aux Web Services est donc la bienvenue. a) Installation Cette implémentation de SOAP est assez simple à installer et à utiliser puisqu aucun serveur spécifique (autre qu un simple serveur Web) n est requis. Il suffit de mettre sur le serveur un simple script PHP pour avoir acces à des services. La partie serveur est démarrée à chaque appel de l URL du script implémentant la partie serveur pour SOAP. C est entre autre cela qui fait la simplicité de mise en place de cette implémentation : il suffit de faire un «include» du fichier contenant les classe de NuSOAP pour pouvoir déployer ou invoquer des services. b) Exemples d utilisation! Script serveur : déploiement du service myecho <?php require_once('../nusoap/nusoap.php'); $s = new soap_server; $s->register('myecho',false,false,"urn:myecho"); function myecho($chaine) // optionally catch an error and return a fault if($chaine == '') return new soap_fault('client','','la chaine est vide.'); $res="vous avez envoyé:".$chaine; return $res; $s->service($http_raw_post_data);?> Inclusion des classes NuSoap Création d un objet «serveur» Enregistrement du service myecho auprès du serveur Fonction effectuant le service (Fonction qui sera appelée par RPC) Envoie des réponses du serveur au client : Ici, NuSoap va générer le message réponse du serveur en XML et l envoyer dans la réponse http au client. SOAP Simple Access Protocol 18
19 ! Script Client : appel direct au service myecho (sans utiliser le fichier WSDL) Appel aux classes de NuSOAP Préparation du tableau contenants les paramètres à passer au service $lachaine : variable contenant la chaine à passer lors de l appel Création de l objet client avec l URL du service SOAP à appeler. Ici c est l URL du script serveur écrit en PHP <?php require_once('../nusoap/nusoap.php'); if($lachaine!=null) $parameters = array('chaine1'=>$lachaine); $soapclient = new soapclient(' echo $soapclient->call('myecho',$parameters); else echo "<- Remplir le formulaire";?> Appel de la méthode distante myecho avec passage du tableau des paramètres! Script Client : appel direct service myecho avec le fichier WSDL et le proxy NuSOAP permet, si l on utilise les descripteurs de services écrits en WSDL, de générer un proxy pour service. Ce proxy permet d accéder à la méthode distante comme si elle était une méthode d un objet local. Cela permet d avoir un code beaucoup plus clair et moins lourd. SOAP Simple Access Protocol 19
20 Exemple d utilisation : <?php require_once('../nusoap/nusoap.php'); $soapclient= new soapclient(' ); $proxy=$soapclient->getproxy(); $res=$proxy->myecho($lachaine); echo $res; Appel à la procédure distante via le proxy Création du proxy Création du client à partir d un fichier WSDL 3. SOAP::Lite SOAP::Lite ( est un ensemble de modules Perl qui fournissent une interface simple et légère vers SOAP, côté client et côté serveur. Il est préférable d installer la distribution en tant que root bien qu il soit possible d installer les modules dans son propre repertoire de travail. a) Installation De nombreux modules sont nécessaires à SOAP::Lite MIME-Base IO-1.20 URI-1.19 MIME-Lite HTML-Parser-3.26 HTML-Tagset-3.03 libnet-1.12 MIME-tools IO-stringy MailTools-1.46 XML-Parser-2.31 libwww-perl-5.65 Les commandes pour installer les modules dans ~/perl (pour un utilisateur normal) sont : perl Makefile.PL LIB=~/perl make make test make install SOAP Simple Access Protocol 20
21 Il faut parfois éditer le fichier Makefile.PL pour indiquer le chemin d accès des modules déjà ajoutés (ce qui revient à modifier la Ajouter en tête du fichier (par exemple) : use lib '/mci/projet/proj01/perl'; use lib '/mci/projet/proj01/perl/i386-linux'; Une fois que tous les modules sont présents, extraire la distribution SOAP::Lite et modifier le fichier Makefile.PL (ajouter use lib '/mci/projet/proj01/perl/i386-linux'; use lib '/mci/projet/proj01/perl'; en tête du fichier). Comme pour les autres modules, lancer les commandes : perl Makefile.PL LIB=~/perl make make test make install b) Exemple d utilisation :! clientecho.pl (acces par descripteur wsdl) #!perl -w use lib '/mci/projet/proj01/perl'; use SOAP::Lite; Emplacement des modules Perl nécessaires my $lachaine = shift die "usage: clientecho <string>\n"; # on appelle le service Java par sa description wsdl my $soapclient = SOAP::Lite->service(" my $result = $soapclient->getecho($lachaine); print "resultat (Java avec wsdl): $result\n"; Récuperation du paramètre en entrée Appel du service Apache par sa description wsdl # on appelle le service Java par le serveur rpc my $soapclient2 = SOAP::Lite->uri('urn:test-myEcho') ->proxy(' my $result2 = $soapclient2->getecho($lachaine)->result; print "resultat (Java par RPC) : $result2\n"; # on appelle le service PHP par sa description wsdl my $soapclient3 = SOAP::Lite ->service(" my $result3 = $soapclient3->myecho($lachaine); print "resultat (PHP avec wsdl): $result3\n"; # on appelle le service PHP par le serveur rpc my $soapclient4 = SOAP::Lite->uri('urn:myEcho') ->proxy(' my $result4 = $soapclient4->myecho($lachaine)->result; print "resultat (PHP par RPC) : $result4\n"; Appel du service Apache par le serveur RPC Appel du service NuSOAP par sa description wsdl Appel du service NuSOAP par le serveur RPC SOAP Simple Access Protocol 21
22 ! Utilisation La commande pour lancer le client echo est perl clientecho.pl montexte L implémentation côté serveur peut se faire par cgi ou à l aide d un serveur web possédant un module perl. Nous ne sommes pas parvenus à mettre en œuvre la solution cgi, ceci étant rendu difficile par l absence de processus de débuggage lors d une erreur sur le serveur («Erreur 500»). 4. Tests d interoperabilité L objectif principal de SOAP est de permettre à des applications de faire appel à des méthodes distantes quelles que soient les plates-formes utilisées de part et d autre. Nous avons naturellement voulu vérifier cela sur la mise en œuvre simple du service Echo. Les services Echo ont été déployés en Java (avec Apache SOAP) en PHP (avec NuSOAP). Nous avons tesé des clients Java, PHP, et Perl. Le client en Java accède sans difficulté au service sous Java. L appel au routeur RPC en PHP par le client Java nous a tout d abord posé problème : celui-ci nous renvoyait une erreur dont nous ne comprenions pas le sens. Nous nous sommes finalement rendus compte que le problème venait de la présence d un accent dans la chaîne retournée. Après suppression de l accent, l appel fonctionnait parfaitement. Le client PHP et le client Perl fonctionnent sur les deux serveurs sans problème. Ces tests ne sont qu un aperçu des possibilités offertes par SOAP et des problèmes d interopérabilité qu il peut poser. Les modes d encodage et l utilisation de types complexes notamment semblent poser des difficultés lors de la mise en place de plates-formes hétérogènes. SOAP Simple Access Protocol 22
23 Troisième Partie : Exemples d utilisation 1. Exemple de Web Service : Google Web Service Afin, de mieux comprendre les rôles que peuvent remplir les Web Services ainsi que leur fonctionnement, nous en avons testé un existant et développé des clients permettant de l exploiter. Google est un moteur de recherche sur le Web très connu offrant des options de recherches assez avancées. Google met à disposition un Web service permettant d interroger le moteur de recherche via SOAP. Un fichier WSDL est donné pour ce fait et donne l accès à trois méthodes : dogetcachedpage : cette méthode permet de récupérer les page Web en cache dans le moteur de recherche. dogooglesearch : Cette méthode permet de lancer une recherche sur le moteur et d en récupérer 10 résultats (maximum). dospellingsuggestion : permet de traduire du texte Le client a été développé en PHP. Il permet de lancer une recherche en spécifiant le nombre de résultat, puis, pour chaque résultat, il permet de récupérer la page correspondante en cache dans le moteur. Appel du Web Service de recherche sur Google Utilisation des résultats. La structure complexe du résultat a été placée dans des tableaux imbriqués <?php require_once('../nusoap/nusoap.php'); if(isset($query)) $soapclient = new soapclient(' $proxy=$soapclient->getproxy(); $res=$proxy- >dogooglesearch("x4yahthwrxruii7sifp0fxxfz9xgojrt",$query,$start_index,$numres,tru e,"",false,"","","");?> Nombre de réponses trouvées: <?php echo $res['estimatedtotalresultscount'];?><br> Temps de recherche: <?php echo $res['searchtime'];?><br> <?php for($i=0;$i< count($res['resultelements']) && $res['estimatedtotalresultscount']>0;$i++)?> </td></tr> <tr> <td><?php $index=$i+$start_index;echo $index;?></td> <td> <b><?php echo $res['resultelements'][$i]['title'];?></b><br> <a href='<?php echo $res['resultelements'][$i]['url'];?>'><?php echo $res['resultelements'][$i]['url'];?></a><br> <a href="clientcachegoogle.php?cached_url=<?php echo htmlspecialchars($res['resultelements'][$i]['url']);?>">cached page</a> <?php?> SOAP Simple Access Protocol 23
24 2. Exemple du gestionnaire d imprimante Nous avons essayé dans cette partie d implémenter l exemple du gestionnaire d imprimante en java avec SOAP et de voir ainsi les différences avec CORBA. Pour faciliter la compréhension nous avons effectué trois versions du gestionnaire d imprimante. a) Exemple 1 : l imprimante HP Dans cet exemple le service représente une imprimante seule et sur laquelle on peut demander une impression et obtenir des informations sur les taches en cours. GetInfos Imprime SOAP (http) ImprimanteHP.class Clients Service Figure 1 Nous allons donc voir dans un premier comment créer le service puis nous verrons comment écrire les clients. i) Création du service SOAP L écriture d un service SOAP basé sur les RPC est très simple et se fait en trois étapes :! Créer la classe Java contenant le service SOAP à publier! Créer un «deployment descriptor» décrivant le service! Publier le service! Création du service Un service SOAP peut être juste n importe quelle classe Java habituelle qui expose des méthodes publiques. L écriture de cette classe n est en rien spécifique à SOAP. La seule restriction est que les paramètres des méthodes doivent être serialisables. Les types par défaut supportés par SOAP sont les suivants : Notre service a donc la forme suivante : o Tous les types primitifs et les wrapper correspondants o Java arrays o java.lang.string o java.util.date o java.util.gregoriancalendar o java.util.vector SOAP Simple Access Protocol 24
25 o java.util.hashtable o java.util.map o java.math.bigdecimal o javax.mail.internet.mimebodypart o java.io.inputstream o javax.activation.datasource o javax.activation.datahandler o org.apache.soap.util.xml.qname o org.apache.soap.rpc.parameter o java.lang.object (en tant que JavaBean) SOAP Simple Access Protocol 25
26 package GIsoap.exemple1; import java.net.*; import java.io.*; public class ImprimanteHP private short tachecourante; private String nom; ImpInfos inf; public ImprimanteHP() nom=new String("hp"); System.out.println("Instantiation de l'imprimante : "+ nom); public ImpInfos getinfo() InetAddress mamachine; String machine; try mamachine = InetAddress.getLocalHost(); machine = mamachine.gethostname(); catch (UnknownHostException u) machine = new String("machine inconnue"); inf = new ImpInfos(nom,"", machine, tachecourante) ; return inf; public TacheInfos envoidocument (String n) throws TacheRefusee int t; // ouverture du fichier // recupere taille du fichier File f=new File(n); if (! f.isfile() ) throw new TacheRefusee(nom,n+" : n'est pas un fichier"); t = (int)f.length(); if (tachecourante > 2) System.out.println("Je suis définitivement surchargée, il faut me redémarre r!"); throw new TacheRefusee(nom,"surcharge"); System.out.println("Impression du document : "+ n + " sur " + nom + " taille " + t); tachecourante++; return (new TacheInfos(tacheCourante, t)); SOAP Simple Access Protocol 26
27 On remarque que les méthodes getinfos et envoidocument renvoie chacun un objet que nous avons défini. Ces objets seront transmis aux clients en réponse aux appels des méthodes. Comme nous l avons vu plus précédemment les objets doivent être sérialisables. Nous avons donc deux possibilités soit nous écrivons nos propres sérialiseurs soit nous utilisons la classe BeanSerializer de JavaBean fourni avec Apache SOAP. La deuxième possibilité est en fait la plus simple. Pour cela nous devons chaque classe un constructeur par défaut et rajouter les méthodes setxxx et getxxx pour chaque donnée de la classe. package GIsoap.exemple1; public class TacheInfos private short tachecourante; private int taillefichier; public TacheInfos() public TacheInfos( short tachecourante, int taillefichier) this.tachecourante = tachecourante; this.taillefichier = taillefichier; public void settachecourante(short tachecourante) this.tachecourante = tachecourante; public short gettachecourante() return tachecourante; public void settaillefichier(int taillefichier) this.taillefichier = taillefichier; public int gettaillefichier() return taillefichier; TacheInfos.java SOAP Simple Access Protocol 27
28 public class ImpInfos private String imprimante; private String serveur; private String machine; private short tacheencours; public ImpInfos() tacheencours= 2; public ImpInfos( String imprimante, String serveur, String machine, short tacheencou rs) this.imprimante = new String(imprimante); this.serveur = new String(serveur); this.machine = new String(machine); this.tacheencours = tacheencours; public void setimprimante(string imprimante) this.imprimante = imprimante; public String getimprimante() return imprimante; public void setserveur(string serveur) this.serveur = serveur; public String getserveur() return serveur; public void setmachine(string machine) this.machine = machine; public String getmachine() return machine; public void settacheencours(short tacheencours) this.tacheencours = tacheencours; public short gettacheencours() return tacheencours; public String tostring() return imprimante + " "+ serveur + " "+ machine + tacheencours; ImpInfos.java SOAP Simple Access Protocol 28
29 Voilà c est fini en ce qui concerne la création du service.! Création du «deployment descriptor» Pour déployer un service on peut soit utiliser l interface de déploiement fourni le serveur Apache en utilisant le navigateur soit utiliser les commandes de gestion de services pour lequel il faut un fichier XML décrivant le service. Voici ce fichier pour notre exemple : <isd:service xmlns:isd=" id="urn:imprimantehp"> <isd:provider type="java" scope="application" methods="getinfo envoidocument"> <isd:java class="gisoap.exemple1.imprimantehp" static="false"/> </isd:provider> <isd:faultlistener>org.apache.soap.server.domfaultlistener</isd:faultlistener> <isd:mappings> <isd:map encodingstyle=" xmlns:x="urn:imprimantehp-demo" qname="x:impinfos" javatype="gisoap.exemple1.impinfos" java2xmlclassname="org.apache.soap.encoding.soapenc.beanserializer" xml2javaclassname="org.apache.soap.encoding.soapenc.beanserializer"/> <isd:map encodingstyle=" xmlns:x="urn:imprimantehp-demo" qname="x:tacheinfos" javatype="gisoap.exemple1.tacheinfos" java2xmlclassname="org.apache.soap.encoding.soapenc.beanserializer" xml2javaclassname="org.apache.soap.encoding.soapenc.beanserializer"/> </isd:mappings> </isd:service> Le descripteur de déploiement pour notre service d imprimante contient cinq éléments qui nous devons regarder. Le premier élément est l'élément service, qui définit deux attributs, le namespace de XML et l'identification unique du service à déployer. L'identification définie dans l'élément de service doit être unique, puisque cet attribut est employé pour identifier un service publié avec SOAP. Le prochain élément que nous devons examiner est l'élément provider. Il définit l implémentation réelle du service de SOAP, grâce à trois attributs, dont chacun est défini comme suit: type Définit le type d'exécution du service de SOAP. Nous avons défini notre service comme service Java. scope Définit le cycle de vie du service de SOAP. Les valeurs possibles sont page, scope, session, et application. Ces valeurs correspondent directement avec celles définies par les spécifications de JSP. methods Définit les noms des méthodes qui peuvent être appelées sur cet objet de service. Cette liste doit être une liste de noms de méthode séparés par un espace java SOAP Simple Access Protocol 29
30 Cet élément contient un attribut simple, la classe, qui appelle la classe entièrement qualifiée du service appelé. mappings Cet élément annonce tous les objets que nous avons serialisés. Les attributs java2xmlclassname et xml2javaclassname indiquent respectivement une classe pour convertir de Java en XML et de XML en Java.! Publication du service Pour publier le service il suffit d exécuter la commande suivante : javaorg.apache.soap.server.servicemanagerclient deploy DeploymentDescriptor.xml ii) Création d un client soap Maintenant que nous avons définit le service et qu on l a déployé, écrivons un client qui exécutera une des méthodes du service. Le projet de SOAP d'apache fournit une API côté client qui permet de créer des clients de manière simple. Voici par exemple le client qui imprime un fichier sur l imprimante HP. SOAP Simple Access Protocol 30
31 package GIsoap.exemple1; import java.io.*; import java.util.*; import java.net.*; import org.w3c.dom.*; import org.apache.soap.util.xml.*; import org.apache.soap.*; import org.apache.soap.encoding.*; import org.apache.soap.encoding.soapenc.*; import org.apache.soap.rpc.*; public class Imprime public static void main(string[] args) throws Exception if (args.length!= 2) System.err.println("Usage:"); System.err.println(" java " + Imprime.class.getName() + "SOAP-router-URL" + "fichier"); System.exit (1); URL url = new URL(args[0]); String nomfic = args[1]; SOAPMappingRegistry smr = new SOAPMappingRegistry(); BeanSerializer beanser = new BeanSerializer(); // Map the types. smr.maptypes(constants.ns_uri_soap_enc, new QName("urn:imprimanteHP-demo", "TacheInfos"), TacheInfos.class, beanser, beanser); // Build the call. Call call = new Call(); call.setsoapmappingregistry(smr); call.settargetobjecturi("urn:imprimantehp"); call.setmethodname("envoidocument"); call.setencodingstyleuri(constants.ns_uri_soap_enc); Vector params = new Vector(); params.addelement(new Parameter("n", String.class, nomfic, null)); call.setparams(params); // Invoke the call. Response resp; try resp = call.invoke(url, ""); catch (SOAPException e) System.err.println("Caught SOAPException (" + e.getfaultcode() + "): " + e.getmessage()); return; if (!resp.generatedfault()) Parameter ret = resp.getreturnvalue(); Object value = ret.getvalue(); TacheInfos tache = (TacheInfos) value; if (tache!=null) System.out.println("\nImpression envoyée sur HP" + ", tâche " + tache.gettachecourante() + ", taille "+ tache.gettaillefichier() + " : "+ nomfic); else System.out.println("I don't know."); else Fault fault = resp.getfault(); System.err.println("Generated fault: " + fault); SOAP Simple Access Protocol 31
32 Ce client suit un processus simple qui est commun à la plupart des clients RPC SOAP. Il crée d'abord une URL mettant en référence le rpcrouter (que nous avons passé en argument) sur le localhost de serveur de HTTP. URL url = new URL(args[0]); ( Ensuite nous avons besoin que le client sache quels serializer et deserializer employer. C est que la classe SOAPMappingRegistry permet. La méthode maptypes() prend en entré une chaîne d encodage, et des informations sur le type de paramètre que devra utiliser une sérialisation particulière. D'abord, un QName est fourni. Vous devez indiquer la même URN ici, ainsi que le nom local de l'élément (dans ce cas-ci "TacheInfos"), puis de classe Java à sérialiser (TacheInfos.class), et finalement l instance de la classe nécessaire à la serialisation et à la desérialisation. Dans le cas du BeanSerializer, la même instance fonctionne pour tous les deux. Une fois que tout ceci est indiqué dans l'enregistrement, il ne reste plus qu a en informer l objet call par la méthode setsoapmapping-registry(). SOAPMappingRegistry smr = new SOAPMappingRegistry(); BeanSerializer beanser = new BeanSerializer(); // Map the types. smr.maptypes(constants.ns_uri_soap_enc, new QName("urn:imprimanteHP-demo", "TacheInfos"), TacheInfos.class, beanser, beanser); // Build the call. Call call = new Call(); call.setsoapmappingregistry(smr); La prochaine étape exécutée par le client est de créer une instance de org.apache.soap.rpc.rpcmessage.call. L'objet call est l'interface principale utilisée lors de l exécution d une invocation RPC SOAP. Pour employer l'objet call, il faut lui indiquer quel service nous voulons utiliser. Nous faisons ceci en appelant settargetobjecturi, et en lui passant le nom du service que nous voulons exécuter. Nous avons alors placé le nom de la méthode de service que nous voulons exécuter en utilisant la méthode setmethodname(). La prochaine étape est d indiquer le modèle d encodage utilisé dans l appel RPC. L'étape finale est d'ajouter les paramètres attendus en exécutant la méthode demandée. Ceci est fait en créant un vecteur d objets parameter et en les ajoutant à l'objet call en utilisant la méthode setparams(). call.settargetobjecturi("urn:imprimantehp"); call.setmethodname("envoidocument"); call.setencodingstyleuri(constants.ns_uri_soap_enc); Vector params = new Vector(); params.addelement(new Parameter("n", String.class, nomfic, null)); call.setparams(params); La prochaine étape exécutée par le client est d'appeler la méthode de service qui nous intéresse. Ceci est fait en utilisant invoke() avec l URL que nous avons créé plus tôt. SOAP Simple Access Protocol 32
33 resp = call.invoke(url, ""); La valeur de retour de la méthode invoke() est un objet response. L'objet response renvoie un code d'erreur et la valeur retournée de la méthode exécutée du service. On peut vérifier si erreur s est produite en appelant la méthode generatedfault(). Cette méthode renverra vrai s'il une erreur est retournée; on obtient l erreur par la méthode getfault(). Si le generatedfault() renvoie faux, on peut alors obtenir la valeur retournée dans l'objet response, en utilisant la méthode Response.getReturnValue(). Dans notre exemple on voit que la méthode imprime peut générer une exception TacheRefusee. Cependant nous n avons pas trouvé comment rattrapé cette exception du côté client d un manière correcte c est à dire sans analyser la chaîne de caractères qui nous est fournit par getfaultstring(). b) Exemple 2 : le gestionnaire d impression Dans cet exemple nous voulons imprimer sur des imprimantes : HP ou CANON. Dans la version CORBA, le gestionnaire d impression crée un objet CORBA pour chaque imprimante. Ensuite le client imprime sur l imprimante désiré en obtenant la référence de l objet par un fichier ou un service de nommage. Avec SOAP une telle approche n est pas possible. Du moins pas par les références. On pourrait faire un service distinct pour chaque imprimante, mais ceci reviendrait à récréer l exemple 1 pour l imprimante CANON et indiquer le bon URN au client en fonction de l imprimante choisi. Mais une meilleure solution consiste à créer un service que l on appellera «GestionnaireImpression» qui va jouer le rôle de proxy. Les imprimantes seront adressé par un nom et le proxy appellera la méthode demandée de l imprimante choisie. HP Imprime SOAP (http) GestionnaireImpression.class Imprimante.class GetInfos (Proxy) Imprimante.class Clients Service CANON Figure 2 Voici donc la forme du gestionnaire d impression : SOAP Simple Access Protocol 33
34 package GIsoap.exemple2; import java.util.*; public class GestionnaireImpression private Hashtable imprtable = new Hashtable(); public GestionnaireImpression() imprtable.put("canon", new Imprimante("canon")); imprtable.put("hp", new Imprimante("hp")); public ImpInfos getinfo(string nomimp) Imprimante imp=(imprimante) imprtable.get(nomimp); return imp.getinfo(); public TacheInfos envoidocument( String nomimp, String nomfic) throws TacheRefusee Imprimante imp=(imprimante) imprtable.get(nomimp); return imp.envoidocument(nomfic); Et voilà un client : SOAP Simple Access Protocol 34
35 package GIsoap.exemple2; import java.io.*; import java.util.*; import java.net.*; import org.w3c.dom.*; import org.apache.soap.util.xml.*; import org.apache.soap.*; import org.apache.soap.encoding.*; import org.apache.soap.encoding.soapenc.*; import org.apache.soap.rpc.*; public class Imprime public static void main(string[] args) throws Exception if (args.length!= 3) System.err.println("Usage:"); System.err.println(" java " + Imprime.class.getName() + "SOAP-router-URL" + "imprimante" + "fichier"); System.exit (1); URL url = new URL(args[0]); String nomimp = args[1]; String nomfic = args[2]; SOAPMappingRegistry smr = new SOAPMappingRegistry(); BeanSerializer beanser = new BeanSerializer(); // Map the types. smr.maptypes(constants.ns_uri_soap_enc, new QName("urn:gestionimprimante-demo", "TacheInfos"), TacheInfos.class, beanser, beanser); // Build the call. Call call = new Call(); call.setsoapmappingregistry(smr); call.settargetobjecturi("urn:gestionimprimante"); call.setmethodname("envoidocument"); call.setencodingstyleuri(constants.ns_uri_soap_enc); Vector params = new Vector(); params.addelement(new Parameter("nomimp", String.class, nomimp, null)); params.addelement(new Parameter("nomfic", String.class, nomfic, null)); call.setparams(params); // Invoke the call. Response resp; try resp = call.invoke(url, ""); catch (SOAPException e) System.err.println("Caught SOAPException (" + e.getfaultcode() + "): " + e.getmessage()); return; if (!resp.generatedfault()) Parameter ret = resp.getreturnvalue(); Object value = ret.getvalue(); TacheInfos tache = (TacheInfos) value; if (tache!=null) System.out.println("\nImpression envoyée sur " + nomimp + ", tâche " + tache.gettachecourante() + ", taille "+ tache.gettaillefichier() + " : "+ nomfic); else System.out.println("I don't know."); else Fault fault = resp.getfault(); System.err.println("Generated fault: " + fault); SOAP Simple Access Protocol 35
36 c) Exemple 3 : le gestionnaire d impression et WSDL Dans les exemples précédent nous avons vu que l appel de l objet distant dans le client n était pas tout à fait transparente. En effet il faut mettre tous les paramètres dans un vecteur en indiquant leur types, puis positionné la méthode que l on souhaite appeler et enfin faire invoke. L idée est donc cette fois ci de disposer du côté client d un proxy qui nous rendrait les appels transparents. D autre part ce proxy peut être générée automatiquement. Pour cela il faut dans premier temps créer un fichier WSDL qui va décrire le service d une manière indépendante du langage qui l implémente. Puis à partir du fichier WSDL il faut générer le proxy client (en java dans notre cas). HP Imprime GetInfos Gestionnaire ImpressionProxy.class SOAP (http) Gestionnaire Impression.class Imprimante.class Imprimante.class Clients Service CANON Figure 3 d) Exécution des exemples Aller dans le répertoire GIsoap et exécuter une seule fois pour tout les exemples : «../setclasspath» Puis dans chaque répertoire d exemple : «./testit.sh» SOAP Simple Access Protocol 36
37 Bibliographie 1. Articles Généraux sur SOAP! Articles sur SOAP, tests d implémentations et exemples de mise en œuvre, Tutoriel WSDL: Standard SOAP par le W3C: 2. Implémentations et installation! Une liste d implémentations sur Soapware.org : XML Apache Project: Apache SOAP: NuSOAP: SOAP::Lite: Installer Perl sans être super-utilisateur : 3. Divers outils pour SOAP! Outils AXIS : Outils SOAP en ligne: 4. Exemples de Web Services! APIs web Google: Xmethods: SOAP Simple Access Protocol 37
Cours Master Recherche RI 7 Extraction et Intégration d'information du Web «Services Web»
Cours Master Recherche RI 7 Extraction et Intégration d'information du Web «Services Web» Sana Sellami [email protected] 2014-2015 Plan Partie 1: Introduction aux Services Web (SW) Partie 2: Vers une
Introduction aux «Services Web»
Introduction aux «Services Web» Sana Sellami [email protected] 2014-2015 Modalité de contrôle de connaissances Note de contrôle de continu Note projet Evaluation du projet la semaine du 17 novembre
RMI le langage Java XII-1 JMF
Remote Method Invocation (RMI) XII-1 Introduction RMI est un ensemble de classes permettant de manipuler des objets sur des machines distantes (objets distants) de manière similaire aux objets sur la machine
Serveur d'application Client HTML/JS. Apache Thrift Bootcamp
Serveur d'application Client HTML/JS Apache Thrift Bootcamp Pré-requis La liste ci-dessous de logiciels doit être installée et opérationnelle sur la machine des participants : Compilateur thrift http://thrift.apache.org/
Programmation Web Avancée Introduction aux services Web
1/21 Programmation Web Avancée Thierry Hamon Bureau H202 - Institut Galilée Tél. : 33 1.48.38.35.53 Bureau 150 LIM&BIO EA 3969 Université Paris 13 - UFR Léonard de Vinci 74, rue Marcel Cachin, F-93017
La gestion des protocoles HTTP, FTP, SOAP, etc.
Chapitre 16 La gestion des protocoles HTTP, FTP, 16.1 Fonctions réseau (de base)...1265 16.2 Réseau...1265 16.3 Les sockets...1270 16.4 FTP...1275 16.5 curl (client URL Library)...1288 16.6 SOAP...1299
Messagerie asynchrone et Services Web
Article Messagerie asynchrone et Services Web 1 / 10 Messagerie asynchrone et Services Web SOAP, WSDL SONT DES STANDARDS EMERGEANT DES SERVICES WEB, LES IMPLEMENTATIONS DE CEUX-CI SONT ENCORE EN COURS
Remote Method Invocation (RMI)
Remote Method Invocation (RMI) TP Réseau Université Paul Sabatier Master Informatique 1 ère Année Année 2006/2007 Plan Objectifs et Inconvénients de RMI Fonctionnement Définitions Architecture et principe
INTRODUCTION A JAVA. Fichier en langage machine Exécutable
INTRODUCTION A JAVA JAVA est un langage orienté-objet pur. Il ressemble beaucoup à C++ au niveau de la syntaxe. En revanche, ces deux langages sont très différents dans leur structure (organisation du
RMI. Remote Method Invocation: permet d'invoquer des méthodes d'objets distants.
RMI Remote Method Invocation: permet d'invoquer des méthodes d'objets distants. Méthode proche de RPC. Outils et classes qui rendent l'implantation d'appels de méthodes d'objets distants aussi simples
Intégration d'applications à "gros grain" Unité d'intégration : le "service" (interface + contrat)
Motivations Motivations Intégration d'applications à "gros grain" Unité d'intégration : le "service" (interface + contrat) Contraintes Applications conçues indépendamment, sans avoir prévu une intégration
Architecture Orientée Service, JSON et API REST
UPMC 3 février 2015 Précedemment, en LI328 Architecture générale du projet Programmation serveur Servlet/TOMCAT Aujourd hui Quelques mots sur les SOA API - REST Le format JSON API - REST et Servlet API
Manuel d implémentation des Web Services Sous Axis1 et Axis2/Tomcat/linux. Par Pr Bouabid EL OUAHIDI
Université Mohammed-V Agdal Faculté Sciences Rabat Manuel d implémentation des Web Services Sous Axis1 et Axis2/Tomcat/linux Par Pr Bouabid EL OUAHIDI Email : [email protected] https://sites.google.com/site/bouabidouahidi/
Web Tier : déploiement de servlets
Web Tier : déploiement de servlets 1 / 35 Plan 1 Introduction 2 Servlet : Principe de fonctionnement 3 Création et développement sur un serveur JEE 4 Quelques méthodes de l API des servlets 5 Utilisation
XML, PMML, SOAP. Rapport. EPITA SCIA Promo 2004 16 janvier 2003. Julien Lemoine Alexandre Thibault Nicolas Wiest-Million
XML, PMML, SOAP Rapport EPITA SCIA Promo 2004 16 janvier 2003 Julien Lemoine Alexandre Thibault Nicolas Wiest-Million i TABLE DES MATIÈRES Table des matières 1 XML 1 1.1 Présentation de XML.................................
TP3. Mail. Attention aux fausses manoeuvres lors de ce TP vous pouvez endommager votre mail sur ouindose.
Université Paris 7 M2 II Protocole Internet TP3 Mail Attention aux fausses manoeuvres lors de ce TP vous pouvez endommager votre mail sur ouindose. 1 Protocole SMTP 1. Le protocole SMTP est définit dans
TP JEE Développement Web en Java. Dans ce TP nous commencerons la programmation JEE par le premier niveau d une application JEE : l application web.
ASTRIUM - Toulouse JEE Formation 2013 TP JEE Développement Web en Java Dans ce TP nous commencerons la programmation JEE par le premier niveau d une application JEE : l application web. Figure 1 Architecture
IFIPS 5 / Nouvelles Architectures Logicielles Projet : Bus de web services avec «moteur» BPEL
IFIPS 5 / Nouvelles Architectures Logicielles Projet : Bus de web services avec «moteur» BPEL Un bus de services Un bus de services (ESB) permet d assembler des web services existants, le résultat de cet
Les Services Web. Jean-Pierre BORG EFORT http://www.efort.com
Les Services Web Jean-Pierre BORG EFORT http://www.efort.com 1 Introduction Un "Service Web" est une application logicielle à laquelle on peut accéder à distance à partir de différents langages basés sur
La base de données XML exist. A. Belaïd
La base de données XML exist Introduction Qu est-ce-que exist? C est une base de donnée native, entièrement écrite en Java XML n est pas une base de données en soi Bien qu il possède quelques caractéristiques
L3 informatique TP n o 2 : Les applications réseau
L3 informatique TP n o 2 : Les applications réseau Sovanna Tan Septembre 2009 1/20 Sovanna Tan L3 informatique TP n o 2 : Les applications réseau Plan 1 Transfert de fichiers 2 Le Courrier électronique
Remote Method Invocation Les classes implémentant Serializable
Parallélisme Architecture Eric Goubault Commissariat à l Energie Atomique Saclay Classe qui implémente la méthode distante (serveur): - dont les méthodes renvoient un objet serializable - ou plus généralement
WEBSERVICES. Michael Fortier. Master Informatique 2ème année. [email protected] A308, Université de Paris 13
WEBSERVICES Michael Fortier Master Informatique 2ème année [email protected] A308, Université de Paris 13 https ://lipn.univ-paris13.fr/ fortier/enseignement/webservices/ Sommaire 1 Rappels
SOAP Concepts Application à Glassfish
SOAP Concepts Application à Glassfish LicencePro 2014 Olivier Perrin Université de Lorraine Évolution From server-side app to smart clients and services 2 Browser-based HTML Rendering (progressive enhancement)
TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile
TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile Dans ce TP, vous apprendrez à définir le type abstrait Pile, à le programmer en Java à l aide d une interface
Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère
L'héritage et le polymorphisme en Java Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère En java, toutes les classes sont dérivée de la
A. Architecture du serveur Tomcat 6
Administration du serveur A. Architecture du serveur Tomcat 6 La compréhension de l architecture interne du serveur Tomcat 6 est un pré-requis indispensable pour bien en maîtriser l administration et la
Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :
Développement d un client REST, l application Vélib 1. Présentation L application présentée permet de visualiser les disponibilités des vélos et des emplacements de parking à la disposition des parisiens
Formation Webase 5. Formation Webase 5. Ses secrets, de l architecture MVC à l application Web. Adrien Grand <[email protected]> Centrale Réseaux
Formation Webase 5 Ses secrets, de l architecture MVC à l application Web Adrien Grand Centrale Réseaux Sommaire 1 Obtenir des informations sur Webase 5 2 Composants de Webase 5 Un
Java DataBaseConnectivity
Java DataBaseConnectivity JDBC JDBC est une API Java (ensemble de classes et d interfaces défini par SUN et les acteurs du domaine des SGBD) permettant d accéder aux bases de données à l aide du langage
Institut Supérieur de Gestion. Cours pour 3 ème LFIG. Java Enterprise Edition Introduction Bayoudhi Chaouki
Institut Supérieur de Gestion Cours pour 3 ème LFIG Java Enterprise Edition Introduction Bayoudhi Chaouki 1 Java EE - Objectifs Faciliter le développement de nouvelles applications à base de composants
Architecture JEE. Objectifs attendus. Serveurs d applications JEE. Architectures JEE Normes JEE. Systèmes distribués
Architecture JEE. Objectifs attendus Serveurs d applications JEE Systèmes distribués Architectures JEE Normes JEE couches logicielles, n-tiers framework JEE et design patterns 2007/02/28 Eric Hé[email protected]
Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa www.degenio.com Novembre 2008
Introduction Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa www.degenio.com Novembre 2008 Forms 10g permet l utilisation du JAVA côté client et côté application
Compte Rendu d intégration d application
ISMA 3EME ANNEE Compte Rendu d intégration d application Compte Rendu Final Maxime ESCOURBIAC Jean-Christophe SEPTIER 19/12/2011 Table des matières Table des matières... 1 Introduction... 3 1. Le SGBD:...
Application Web et J2EE
Application Web et J2EE Servlet, JSP, Persistence, Méthodologie Pierre Gambarotto Département Informatique et Math appli ENSEEIHT Plan Introduction 1 Introduction Objectfis
Programmation Web. Madalina Croitoru IUT Montpellier
Programmation Web Madalina Croitoru IUT Montpellier Organisation du cours 4 semaines 4 ½ h / semaine: 2heures cours 3 ½ heures TP Notation: continue interrogation cours + rendu à la fin de chaque séance
Architectures Web Services RESTful
Architectures Web Services RESTful Alexandre Denis [email protected] Inria Bordeaux Sud-Ouest France ENSEIRB PG306 REST REST Representational State Transfer Roy Fielding (2000) Décollage vers 2006-2007
TP1 : Initiation à Java et Eclipse
TP1 : Initiation à Java et Eclipse 1 TP1 : Initiation à Java et Eclipse Systèmes d Exploitation Avancés I. Objectifs du TP Ce TP est une introduction au langage Java. Il vous permettra de comprendre les
Mise en œuvre des serveurs d application
Nancy-Université Mise en œuvre des serveurs d application UE 203d Master 1 IST-IE Printemps 2008 Master 1 IST-IE : Mise en œuvre des serveurs d application 1/54 Ces transparents, ainsi que les énoncés
27/11/12 Nature. SDK Python et Java pour le développement de services ACCORD Module(s)
Propriétés du Document Source du Document SDK_accords.odt Titre du Document SDK Python et Java pour le développement de services ACCORD Module(s) PyaccordsSDK, JaccordsSDK Responsable Prologue Auteur(s)
COMPRENDRE L ARCHITECTURE DES WEB SERVICES REST. Amosse EDOUARD, Doctorant
COMPRENDRE L ARCHITECTURE DES WEB SERVICES REST Amosse EDOUARD, Doctorant Organisation Cours Magistral 24/11/2014 26/11/2014 01/12/2014 Travaux Dirigés 26/11/2014 28/11/2014 01/11/2014 08/11/2014 Evaluation
Premiers Pas en Programmation Objet : les Classes et les Objets
Chapitre 2 Premiers Pas en Programmation Objet : les Classes et les Objets Dans la première partie de ce cours, nous avons appris à manipuler des objets de type simple : entiers, doubles, caractères, booléens.
4. SERVICES WEB REST 46
4. SERVICES WEB REST 46 REST REST acronyme de REpresentational State Transfert Concept introduit en 2000 dans la thèse de Roy FIELDING Est un style d architecture inspiré de l architecture WEB En 2010,
Business Process Execution Language
Business Process Execution Language Rapport du projet de systèmes distribués d information Markus Lindström 6 mai 2009 Motivation personnelle Le sujet que j ai retenu et présenté dans le cadre du cours
Programmer en JAVA. par Tama ([email protected]( [email protected])
Programmer en JAVA par Tama ([email protected]( [email protected]) Plan 1. Présentation de Java 2. Les bases du langage 3. Concepts avancés 4. Documentation 5. Index des mots-clés 6. Les erreurs fréquentes
Remote Method Invocation en Java (RMI)
Remote Method Invocation en Java (RMI) Modélisation et construction des applications réparties (Module M-4102C) J. Christian Attiogbé Fevrier 2015 J. Christian Attiogbé (Fevrier 2015) Remote Method Invocation
Java Licence professionnelle CISII, 2009-2010
Java Licence professionnelle CISII, 2009-2010 Cours 6 : le paquetage (package) Cours inspiré des cours de Richard Grin, Antoine Tabbone et Hazel Everett 1 Définition - Les classes Java sont regroupées
A DESTINATION DES SERVICES TIERS. Editeurs d applications et ressources pédagogiques connectées à l ENT
DOCUMENTATION CAS A DESTINATION DES SERVICES TIERS Titre descriptif du document Référence du document REFO-DT-ENTV2-ServeurCAS-v1.2.docx Nom du fichier REFO-DT-ENTV2-ServeurCAS-v1.2.docx Version du document
Projet Java EE Approfondi
EISTI Projet Java EE Approfondi Manuel d installation du framework Stripes Amaury Languillat, Yann Gonzalez, Arnaud Recher, Vincent Laronde, Anys Mechkar 10 Manuel d installation Téléchargement On part
BPEL Orchestration de Web Services
Orchestration de Web Services Grégory Le Bonniec [email protected] 26 novembre 2009 1 Zenika Conseil / Développement / Formation Localisation : Paris et Rennes Nos partenaires Mon expérience
Environnements de Développement
Institut Supérieur des Etudes Technologiques de Mahdia Unité d Enseignement: Environnements de Développement BEN ABDELJELIL HASSINE Mouna [email protected] Développement des systèmes d Information Syllabus
TP1. Outils Java Eléments de correction
c sep. 2008, v2.1 Java TP1. Outils Java Eléments de correction Sébastien Jean Le but de ce TP, sur une séance, est de se familiariser avec les outils de développement et de documentation Java fournis par
Extension SSO Java. Cette note technique décrit la configuration et la mise en œuvre du filtre de custom SSO Java.
Note technique W4 Engine Extension SSO Java Cette note technique décrit la configuration et la mise en œuvre du filtre de custom SSO Java. 1 Présentation 3 2 Custom SSO Java 4 3 Bilan 10 Sommaire Référence
LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. [email protected] www.cril.univ-artois.fr/~jabbour
LMI 2 Programmation Orientée Objet POO - Cours 9 Said Jabbour [email protected] www.cril.univ-artois.fr/~jabbour CRIL UMR CNRS 8188 Faculté des Sciences - Univ. Artois Février 2011 Les collections
Architectures web/bases de données
Architectures web/bases de données I - Page web simple : HTML statique Le code HTML est le langage de base pour concevoir des pages destinées à être publiées sur le réseau Internet ou intranet. Ce n'est
Cours 1: Java et les objets
Ressources Les interface homme-machine et le langage Java DUT première année Henri Garreta, Faculté des Sciences (Luminy) Cyril Pain-Barre & Sébastien Nedjar, IUT d Aix-Marseille (Aix) Cours 1: infodoc.iut.univ-aix.fr/~ihm/
Pour plus de détails concernant le protocole TCP conférez vous à la présentation des protocoles Internet enseignée pendant.
Chapitre 7 Le mode de communication en connexion est, a priori, supporté par le protocole TCP. Ce protocole fournit une communication fiable; les données sont transmises comme chaînes d octets. Avant de
Hébergement de sites Web
Hébergement de Solutions complètes et évolutives pour l hébergement de sites Web dynamiques et de services Web sécurisés. Fonctionnalités Serveur Web Apache hautes performances Apache 1. et.0 1 avec prise
TD Objets distribués n 3 : Windows XP et Visual Studio.NET. Introduction à.net Remoting
IUT Bordeaux 1 2005-2006 Département Informatique Licence Professionnelle ~ SI TD Objets distribués n 3 : Windows XP et Visual Studio.NET Introduction à.net Remoting Partie 1 : l'analyseur de performances
Principes. 2A-SI 3 Prog. réseau et systèmes distribués 3. 3 Programmation en CORBA. Programmation en Corba. Stéphane Vialle
2A-SI 3 Prog. réseau et systèmes distribués 3. 3 Programmation en CORBA Stéphane Vialle [email protected] http://www.metz.supelec.fr/~vialle 1 Principes 2 Architecture 3 4 Aperçu d utilisation
Développement des Systèmes d Information
Développement des Systèmes d Information Axe ISI Camille Persson Institut Fayol / LSTI / ISCOD École Nationale Supérieure des Mines de Saint-Etienne 158 cours Fauriel, 42000 Saint-Etienne [email protected]
Utilisation de Jakarta Tomcat
ISI 1022 : Déploiement d applications Web Jean-Noël Sorenti. Année 2002/2003 Déploiement d application Web Utilisation de Jakarta Tomcat ISI 1022 : 1 ISI 1022 : Déploiement d applications Web Une application
JavaServer Pages (JSP)
JavaServer Pages (JSP) XVIII-1 Prérequis pour ce cours Ce cours a trait à la programmation Java coté serveur Il faut connaître un minimum de technologie J2EE Il faut connaître les servlets XVIII-2 Motivation
Serveur d'archivage 2007 Installation et utilisation de la BD exist
Type du document Procédure d'installation Auteur(s) Eric Bouladier Date de création 26/02/20007 Domaine de diffusion tous Validé par Equipe Versions Date Auteur(s) Modifications V1.00 26/02/2007 Eric Bouladier
Bien architecturer une application REST
Olivier Gutknecht Bien architecturer une application REST Avec la contribution de Jean Zundel Ce livre traite exactement du sujet suivant : comment faire pour que les services web et les programmes qui
Systèmes répartis. Fabrice Rossi http://apiacoa.org/contact.html. Université Paris-IX Dauphine. Systèmes répartis p.1/49
Systèmes répartis Fabrice Rossi http://apiacoa.org/contact.html. Université Paris-IX Dauphine Systèmes répartis p.1/49 Systèmes répartis Définition très large : un système réparti est système informatique
Classe ClInfoCGI. Fonctions membres principales. Gestion des erreurs
Utilisation des classes de PourCGI par Michel Michaud, version 2002-11-23 Les fichiers PourCGI.h et PourCGI.cpp rendent disponibles deux classes et une fonction libre qui permettent de faire facilement
Java Licence Professionnelle CISII, 2009-10
Java Licence Professionnelle CISII, 2009-10 Cours 4 : Programmation structurée (c) http://www.loria.fr/~tabbone/cours.html 1 Principe - Les méthodes sont structurées en blocs par les structures de la programmation
Le cadre des Web Services Partie 1 : Introduction
Sécurité en ingénierie du Logiciel Le cadre des Web Services Partie 1 : Introduction Alexandre Dulaunoy [email protected] Sécurité en ingénierie du Logiciel p.1/21 Agenda (partie 1) 1/2 Introduction Services
Module BD et sites WEB
Module BD et sites WEB Cours 8 Bases de données et Web Anne Doucet [email protected] 1 Le Web Architecture Architectures Web Client/serveur 3-tiers Serveurs d applications Web et BD Couplage HTML-BD
Microsoft Technopoche
Microsoft Technopoche 2/28 Préface Ce document a été écrit par Olivier SCHMITT, ingénieur Support Développement à Microsoft France. Il est destiné aux développeurs désirant se familiariser avec les Services
Plateforme PAYZEN. Définition de Web-services
Plateforme PAYZEN Définition de Web-services Ordre de paiement Version 1.1 Rédaction, Vérification, Approbation Rédaction Vérification Approbation Nom Date/Visa Nom Date/Visa Nom Date/Visa Lyra-Network
PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)
PHP et mysql php_mysql PHP et mysql Code: php_mysql Originaux url: http://tecfa.unige.ch/guides/tie/html/php-mysql/php-mysql.html url: http://tecfa.unige.ch/guides/tie/pdf/files/php-mysql.pdf Auteurs et
18 TCP Les protocoles de domaines d applications
18 TCP Les protocoles de domaines d applications Objectifs 18.1 Introduction Connaître les différentes catégories d applications et de protocoles de domaines d applications. Connaître les principaux protocoles
Une introduction à Java
Une introduction à Java IFT 287 (Semaine 1) UNIVERSITÉ DE SHERBROOKE 1 Java - Historique Développé par Sun Microsystems en 1994 Inventeur James Gosling (canadien!) Objectif langage sûr (fortement typé)
Approche Contract First
Exemple HelpDesk Approche Contract First Développement d un premier web service en utilisant l approche contract first (ou WSDL First) Écriture du wsdl avant d écrire le code java Autre possibilité implementation
Les Architectures Orientées Services (SOA)
Les Architectures Orientées Services (SOA) Ulrich Duvent Guillaume Ansel Université du Littoral Côte d Opale 50, Rue Ferdinand Buisson BP 699 62228 Calais Cedex Téléphone (33) 03.21.46.36.92 Télécopie
2. MAQUETTAGE DES SOLUTIONS CONSTRUCTIVES. 2.2 Architecture fonctionnelle d un système communicant. http://robert.cireddu.free.
2. MAQUETTAGE DES SOLUTIONS CONSTRUCTIVES 2.2 Architecture fonctionnelle d un système communicant Page:1/11 http://robert.cireddu.free.fr/sin LES DÉFENSES Objectifs du COURS : Ce cours traitera essentiellement
Urbanisation des SI Conduite du changement IT 20/03/09. Patrick CHAMBET http://www.chambet.com
Urbanisation des SI Conduite du changement IT 20/03/09 Sécuriser ses Web Services Patrick CHAMBET http://www.chambet.com Bouygues Telecom Direction Gouvernance, Outils et Architecture / Sécurité du SI
Gestion distribuée (par sockets) de banque en Java
Gestion distribuée (par sockets) de banque en Java Université Paris Sud Rappel sur la solution locale de gestion simple de banque L objet de cet exercice était de créer une application java qui implante
Plateforme PAYZEN. Intégration du module de paiement pour la plateforme Magento version 1.3.x.x. Paiement en plusieurs fois. Version 1.
Plateforme PAYZEN Intégration du module de paiement pour la plateforme Magento version 1.3.x.x Paiement en plusieurs fois Version 1.4a Guide d intégration du module de paiement Multiple Magento 1/24 SUIVI,
Tutoriel: Création d'un Web service en C++ avec WebContentC++Framework
Tutoriel: Création d'un Web service en C++ avec WebContentC++Framework Gaël de Chalendar CEA LIST / LIC2M Journée de Présentation des Technologies WebContent INSTN 14/12/2009 Présentation de gsoap Plan
TAGREROUT Seyf Allah TMRIM
TAGREROUT Seyf Allah TMRIM Projet Isa server 2006 Installation et configuration d Isa d server 2006 : Installation d Isa Isa server 2006 Activation des Pings Ping NAT Redirection DNS Proxy (cache, visualisation
Création d une application JEE
Création d une application JEE Rédacteurs : Alexandre Baillif, Philippe Lacomme, Raksmey Phan et Michaël PLAN Date : juillet 2010 Mise à jour : Michaël PLAN Date : octobre 2014 Avertissement : - ce document
TP WEBSERVICES. 1 Pré-requis. 1.1 L environnement de développement. 1.2 Les librairies nécessaires 1.3 SOAPUI
Institut Galilée Année 2014-2015 TP WEBSERVICES Programmation et Logiciels sûrs Master 2 PLS Résumé Ce TP s appuie sur le cours de C. Fouqueré traitant des Environnements et Langage Évolués, ainsi que
Systèmes d'informations historique et mutations
Systèmes d'informations historique et mutations Christophe Turbout SAIC-CERTIC Université de Caen Basse-Normandie Systèmes d'informations : Historique et mutations - Christophe Turbout SAIC-CERTIC UCBN
1. Installation d'un serveur d'application JBoss:
EPITA Ala Eddine BEN SALEM App-Ing2 J2EE T.P. 4 EJB3, Serveur d'application JBoss 1. Installation d'un serveur d'application JBoss: télécharger l'archive du serveur JBoss à l'adresse: http://sourceforge.net/projects/jboss/files/jboss/jboss-5.0.0.ga/jboss-5.0.0.ga.zip/download
INTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau)
CS WEB Ch 1 Introduction I. INTRODUCTION... 1 A. INTERNET INTERCONNEXION DE RESEAUX... 1 B. LE «WEB» LA TOILE, INTERCONNEXION DE SITES WEB... 2 C. L URL : LOCALISER DES RESSOURCES SUR L INTERNET... 2 D.
Module http MMS AllMySMS.com Manuel d intégration
Module http MMS AllMySMS.com Manuel d intégration Objectif du document... 3 1 Envoi de MMS par requête http... 4 1.1 Format de la requête utilisée... 4 1.2 Arborescence et explication des balises du flux
Tutoriel d installation de Hibernate avec Eclipse
Tutoriel d installation de Hibernate avec Eclipse Table des matières 1. Création de la base de données... 4 2. Installation de Hibernate Synchronizer... 5 3. Utilisation de Hibernate... 6 3.1 Création
Création d un service web avec NetBeans 5.5 et SJAS 9
Sommaire Création d un service web avec NetBeans 5.5 et SJAS 9 1. Présentation... 2 2. Création d un service web avec NetBeans... 2 2.1. Création d une application Web... 2 2.2. Création du service web...
Java et les WebServices :
SOAP/kSOAP Conservatoire National des Arts et Métiers Java et les WebServices : SOAP/kSOAP Mr Rajoharison Hans [email protected] http://harisson.free.fr/webservices/ 1 Sommaire Présentation générale : Introduction
PRIMAVERA P6 ENTERPRISE PROJECT PORTFOLIO MANAGEMENT WEB SERVICES
PRIMAVERA P6 ENTERPRISE PROJECT PORTFOLIO MANAGEMENT WEB SERVICES DÉCOUVREZ DES POSSIBILITÉS ILLIMITÉES GRÂCE A L INTÉGRATION À DES SYSTÈMES D ENTREPRISE EXISTANTS FONCTIONNALITÉS Connectivité des systèmes
Programmation Par Objets
Programmation Par Objets Structures de données package java.util B. Carré Polytech Lille 1 Tableaux et structures de données Tableaux «Objets» taille fixe type des éléments : primitif (homogène) ou objets
L envoi d un formulaire par courriel. Configuration requise... 236 Mail Texte... 237 Mail HTML... 242 Check-list... 248
L envoi d un formulaire par courriel Configuration requise... 236 Mail Texte... 237 Mail HTML... 242 Check-list... 248 Chapitre 9 L envoi d un formulaire par courriel L envoi par courriel d informations
Page 1 sur 5 TP3. Thèmes du TP : l la classe Object. l Vector<T> l tutorial Interfaces. l Stack<T>
Page 1 sur 5 TP3 Lectures préalables : l Java_II l tutorial Interfaces Thèmes du TP : l la classe Object l Vector l Stack Une pile d'objects Les éléments de la classe Pile sont maintenant des instances
JADE : Java Agent DEvelopment framework. Laboratoire IBISC & Départ. GEII Université & IUT d Evry [email protected].
: Java Agent DEvelopment framework Laboratoire IBISC & Départ. GEII Université & IUT d Evry [email protected] Introduction à la plateforme JADE 1) Modèle d agent 2) Services 3) Norme FIPA
Structure d un programme et Compilation Notions de classe et d objet Syntaxe
Cours1 Structure d un programme et Compilation Notions de classe et d objet Syntaxe POO 1 Programmation Orientée Objet Un ensemble d objet qui communiquent Pourquoi POO Conception abstraction sur les types
