Déploiement d`un web service SOAP sur Tomcat

publicité
Déploiement d’un web service
SOAP sur Tomcat
26 Septembre 2016
L’objectif de ce document est d’expliquer comment créer sa première
application distribuée composée d’un serveur et d’un client qui communiquent
avec le protocole SOAP.
Ce document explique :
1. Les outils à télécharger et installer pour développer et déployer une
telle application. Nous travaillerons avec l’IDE Eclipse et le langage
java,
2. Les différentes étapes pour créer son propre service Web (utilisant
SOAP) avec Eclipse et Tomcat,
3. Comment déployer l’application en local et à distance (sur un serveur
Tomcat) ?
4. Comment invoquer le serveur à partir d’un client python ?
Téléchargement des environnements de développement (Eclipse et
Tomact)
1. Télécharger Eclipse IDE for Java EE Developers (Version Indigo)
2. Télécharger Tomcat 7 (http://tomcat.apache.org/download-70.cgi).
Pour MAC, vous pouvez consulter ce lien YouTube :
https://www.youtube.com/watch?v=wIbJ7tc5oGE
Création d’un web service avec Eclipse et Tomcat
1. Dans Eclipse, créer un nouveau projet : New -> Project -> Web ->
Dynamic Web Project
2. Nommez votre projet avec votre nom de famille (l’idée est de
différencier votre application vis à vis des autres, lorsque vous le
déployez sur un serveur public/commun Tomcat). Dans le cas où vous
créez votre web service pour la première fois, sous « Target runtime »,
1
choisir « New Runtime » et spécifier le dossier Tomcat téléchargé au
préalable pour le « Tomcat installation directory »
3. Créez
une
nouvelle
classe
YOUR_NAME.com.web.service
dans
src
du
package
4. Ecrire le code suivant dans votre fichier (ne pas oublier de sauvegarder
le fichier, lors de la création du web service. Eclipse ne le sauvegarde
pas automatiquement)
public class HelloWorld {
public String toUpper (String s){
return s.toUpperCase();
}
public String toLower (String s){
return s.toLowerCase();
}
}
5. Lancer le web service : Clic droit sur le fichier classe qui vient d’être
créée. Sélectionnez le menu Web Services -> Create Web Service.
6. Modifier la scroll bar sous « Client type » pour générer un « Test
client » (cf. capture d’écran suivante). Ne pas oublier de cocher
« Publish the Web service » & « Monitor the web service ».
2
7. Arrivé à ce stade, Eclipse doit lancer le serveur Tomcat avec votre web
service. Il doit aussi générer le client(FAMILY_NAMEClient). Lorsque
l’opération est achevée, Eclipse exécute le client. Le WSDL du service
web
déployé
est
disponible
sur
cet
URL :
http://localhost:8080/FAMILY_NAME/services/HelloWorld?wsdl
(on
suppose ici que le serveur Tomcat est déployé sur le port 8080.
3
8. On peut maintenant sélectionner les méthodes et les essayer. Par
exemple toLower
Déploiement du web service sur un serveur Tomcat
Maintenant que le service est créé et testé en local, on peut l’exporter et le
déposer sur un serveur Tomcat pour pouvoir y accéder.
1. Dans Eclipse, sélectionner votre serveur SOAP (projet Eclipse) et
exporter un fichier .war : Export -> Web -> WAR file
2. Aller sur le serveur Tomcat disponible sur cette adresse :
gw-hepiacloud.hesge.ch:10172/manager/html
password : sdi2016)
(login :
student,
et déployer le .war -> WAR file to deploy -> votre fichier war -> Deploy.
Une fois cette étape réalisée, vous pouvez voir votre web service dans
la liste. Votre wsdl est disponible sur ce lien :
gwhepiacloud.hesge.ch:10172/FAMILY_NAME/services/HelloWorld?wsdl
3. Vous pouvez aussi générer automatiquement un client via le web (par
exemple
http://www.service-repository.com/client/start)
en
lui
fournissant l’adresse URL du wsdl
4. Il est possible d’invoquer ce service via la commande curl. Pour le
faire, il faut créer une enveloppe soap avec la méthode à invoquer et
l’envoyer. Exemple : Enveloppe soap qui invoque la méthode toLower
sur le texte « LOWER ME PLEASE » :
4
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<toLower xmlns="http://service.web.com.abdennhader">
<s>LOWER ME PLEASE</s>
</toLower>
</soapenv:Body>
</soapenv:Envelope>
Ensuite, la commande curl à envoyer est la suivante :
curl
--header
"Content-Type:text/xml;charset=utf-8"
--header
"SOAPAction:toLower" --data @SOAP_ENVELOPE_FILENAME http://gwhepiacloud.hesge.ch:10172/ FAMILY_NAME /services/HelloWorld
Client python soap
Il est aussi possible d’écrire un client python pour le même serveur Java
développé précédemment. De nombreuses librairies existent, par exemple,
suds.
1. Installation de suds : sudo pip install suds
2. Le client est très simple à écrire :
import suds
url = "http://gwhepiacloud.hesge.ch:10172/FAMILY_NAME/services/Helloworld?wsdl"
client = suds.client.Client(url)
print
print
print
print
client # Print info about invokable methods
client.service.toLower ("LOWER ME")
client.service.toUpper ("make me bigger");
client.last_received() # Print last content received in xml
5
Téléchargement