SlideShare une entreprise Scribd logo
Web services en Java
(services Web)
Jean-marc Farinone
2
Web services (services
web) : qu'est ce ?
❚ Une architecture orientée objet et distribuée où les
messages sont en syntaxe XML.
❚ Une définition : Les Services Web sont des fonctions
accessibles par le protocole HTTP. La syntaxe
utilisée est XML (SOAP)
❚ Ce n'est pas une technologie Java mais spécifiée
par le W3C (http://www.w3.org/2002/ws/)
❚ Mais Java EE propose une API pour faire des web
services
(http://java.sun.com/webservices/).
3
Un service Web
❚ Un service web est identifié par une description
(son "contrat") en XML. Plus précisément en WSDL
❚ Ce contrat représente la structure SOAP/XML du
service Web.
❚ Il est nécessaire de faire référence à ce contrat
WSDL du service Web si on désire l’utiliser (le
consommer) .
❚ Ce contrat WSDL est visible en ajoutant "?WSDL" à
la fin de l'url où se trouve le service Web.
4
Les architectures
distribuées
fournisseur
de services
client
annuaire
1. publication
d'une annonce
3. mise en correspondance
2. recherche d'un service
5
Les termes utilisés
❚ Fournisseur de service publie une annonce décrivant
les services qu'il fournit = un "provider"
❚ annuaire = un "registry"
❚ un client demandeur (acheteur) d'un service = un
"requester"
❚ une mise en relation entre client et fournisseur de
service = un "binding"
6
Une architecture
standardisée
❚ C'est une architecture orientée services
❚ = SOA = Service Oriented Architecture
❚ = un ensemble de protocoles et de composants
logiciels pour utiliser une architecture orientée
services
❚ Qui définit donc : le format des messages, les
spécifications pour définir un client, un fournisseur
de services, l'accès au service d'annuaire, la
communication entre client et fournisseur de
services, etc.
7
Services web
(= web services)
❚ WSDL = Web Services Description Language = format
XML pour décrire un service web
❚ SOAP = Simple Object Access Protocol = protocole
d'envoi de messages formatés en XML entre clients et
serveur web services
❚ La couche transport utilisé est soit HTTP (d'où le nom de
web services) soit SMTP (i.e. le mail)
❚ échange de messages synchrones (en attente de
réponse) ou asynchrone (publication, lecture de réponse
plus tard)
❚ UDDI = Universal Description Discovery and Integration
= annuaire de services pour utiliser les services Web.
8
Un environnement pour
des WS : Axis
❚ Page d'accueil : http://ws.apache.org/axis/
❚ Axis est un environnement de développement pour
WS (classes pour faire des services et clients WS) et
d'exécution mais aussi une application Web.
❚ On peut le télécharger à partir de l'URL ci dessus.
Choisir la version axis 1.4 et la version .zip. Après
extraction mettre l'application web (qui se trouve
dans webapps de l'archive) sous tomcat.
❚ Voir tutorial d'axis à
http://ws.apache.org/axis/java/user-guide.html
9
Développement d'un client
et serveur WS
❚ Le serveur sera encapsulé dans l'appli web Axis.
❚ Le client est un programme Java
❚ Un serveur complet : Reponse.jws
❚ Ben oui c'est une classe Java. Le fichier doit avoir
pour extension .jws
public class Reponse {
public String reponds(String st) {
return "bonjour " + st;
}
public String disCoucou() {
return "Coucou ";
}
}
10
Le serveur WS Reponse.jws
❚ Il est placé dans l'application web Axis (sous la racine de cette
application web)
❚ Qui, a la première utilisation, va compiler ce fichier Java, exécuter la
méthode appelée et retourner le résultat (si tout se passe bien !)
❚ Une manière d'accéder à ce Web Service et, dans un client web, de
demander la page d'URL :
http://localhost:8080/axis/Reponse.jws
❚ Une démonstration SVP. OK ! Attention, chrome n'affiche pas le
XML. Utiliser IE par exemple.
❚ Pourquoi cela fonctionne ?
❚ Réponse : en fait tout ce qui se termine par .jws est traité par la
servlet AxisServlet (voir le web.xml de l'application web Axis)
11
Le client WS HelloClient.java
package hello;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.XMLType;
import org.apache.axis.utils.Options;
import javax.xml.rpc.ParameterMode;
public class HelloClient
{
public static void main(String [] args) throws Exception {
Options options = new Options(args);
String endpoint = "http://localhost:" + options.getPort() +
"/axis/Reponse.jws";
args = options.getRemainingArgs();
if (args == null || args.length != 1) {
System.err.println("Usage: java HelloClient [nom]");
return;
}
String nom = args[0];
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress( new java.net.URL(endpoint) );
call.setOperationName( "reponds" );
call.addParameter( "st", XMLType.XSD_STRING, ParameterMode.IN );
call.setReturnType( XMLType.XSD_STRING );
String ret = (String) call.invoke( new Object [] { nom });
System.out.println("resultat retourné : n" + ret);
}
}
12
Le client WS HelloClient2.java
package hello;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.XMLType;
import org.apache.axis.utils.Options;
import javax.xml.rpc.ParameterMode;
public class HelloClient2 {
public static void main(String [] args) throws Exception {
Options options = new Options(args);
String endpoint = "http://localhost:" + options.getPort() + "/axis/Reponse.jws";
args = options.getRemainingArgs();
Service service2 = new Service();
Call call2 = (Call) service2.createCall();
call2.setTargetEndpointAddress( new java.net.URL(endpoint) );
call2.setOperationName( "disCoucou" );
call2.setReturnType( XMLType.XSD_STRING );
String ret2 = (String) call2.invoke(new Object [] { } );
System.out.println("resultat retourné : n" + ret2);
}
}
13
Et XML (SOAP) dans tout
çà ?
❚ Nous n'avons fait que (!) de la programmation Java.
❚ Quid de SOAP ?
❚ En fait les messages échangés entre le client et le
serveur WS sont en SOAP.
❚ Si, si.
14
TCPMonitor : tcpmon
❚ Axis propose un outil qui permet de voir les
messages TCP échangés entre un client et un
serveur : TCPMonitor
❚ Il suffit d'indiquer que le client envoit les messages
à ... TCPMonitor, que TCPMonitor envoit les
messages au serveur, et tout échange entre client et
serveur est tracé dans cet outil.
❚ On lance cet outil par :
java org.apache.axis.utils.tcpmon
15
Utilisation de TCPMonitor
1/4
❚ Le client est programmé par :
❚ Lorsque TCPMonitor est lancé on obtient le premier
écran :
String endpoint = "http://localhost:7777" + "/axis/Reponse.jws";
...
Service service2 = new Service();
Call call2 = (Call) service2.createCall();
call2.setTargetEndpointAddress( new java.net.URL(endpoint) );
....
16
Utilisation de TCPMonitor
2/4
❚ Indiqué le port écouté dans le champ de texte qui
suit dans Listen Port #. Ici 7777.
❚ Et cliquer le bouton Add
17
Utilisation de TCPMonitor
3/4
❚ Dans le nouvel onglet obtenu, cocher XML Format
(et Switch Layout).
❚ Puis (compiler et) lancer le client.
❚ Les messages véhiculés entre client et serveur sont
affichés.
18
Utilisation de TCPMonitor
4/4
19
Bibliographie Web services
❚ http://fr.wikipedia.org/wiki/Service_Oriented_
Architecture
❚ http://java.sun.com/javaee/5/docs/tutorial/doc
/bnayk.html : la partie du Java EE 5 tutorial consacrée aux
services web (utilisant JAX-WS et les annotations)
❚ http://www.w3.org/2002/ws/desc/ : page d'accueil du
"Web Services Description Working Group"
❚ http://ws.apache.org/axis/ : implémentation open
source Axis pour construire des services web
❚ http://www.xmethods.com/ : site de web services
20
Fin

Contenu connexe

PDF
2 20 presentations_generales_des_web_services
PDF
eServices-Tp1: Web Services
DOCX
PDF
Flex, une techno RIA incontournable pour les futures app web ?
PDF
.NET DotNet CF - 3
PPTX
API Servletcourensatangerpourlesetudiantsdu2emeanneeecole.pptx
PPT
Le WSDL (Web Services Description Language) est un langage de description bas...
DOCX
comment realiser un Service Web
2 20 presentations_generales_des_web_services
eServices-Tp1: Web Services
Flex, une techno RIA incontournable pour les futures app web ?
.NET DotNet CF - 3
API Servletcourensatangerpourlesetudiantsdu2emeanneeecole.pptx
Le WSDL (Web Services Description Language) est un langage de description bas...
comment realiser un Service Web

Similaire à WebServices.pdfbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb (20)

PDF
chapitre 1 4SAMIMNIFENETCOMMMMMMMMMMMMMMMMM.pdf
PDF
Support Web Services SOAP et RESTful Mr YOUSSFI
PDF
Rapport MS Exchange 2010
PPT
APACHE TOMCAT
PPTX
Axis2 services fr
PDF
webservicesfhjtrddktkddflfddddddyuldydulyulfyul_RESTU.pdf
PDF
sqcq<svdsdvezsfvkjezbkjfb ckjhs;dvbqcjkhbazvuyaz.pdf
PDF
cours-gratuit.com--id-1964.pdf
PDF
Architecture java j2 ee a partager
PDF
Ter Web Service Intro
PDF
les servlets-java EE
PPTX
PPT
education
PDF
Tp1 - WS avec JAXWS
PDF
Cours services web_fabrice_mourlin
PPTX
Chp3 - Les Services Web
PDF
Webserver tomcat-jboss-jrun-jonas doc
PPTX
Advanced html5
PDF
xml-webservices-intro.pdfhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
PDF
Tp2 - WS avec JAXRS
chapitre 1 4SAMIMNIFENETCOMMMMMMMMMMMMMMMMM.pdf
Support Web Services SOAP et RESTful Mr YOUSSFI
Rapport MS Exchange 2010
APACHE TOMCAT
Axis2 services fr
webservicesfhjtrddktkddflfddddddyuldydulyulfyul_RESTU.pdf
sqcq<svdsdvezsfvkjezbkjfb ckjhs;dvbqcjkhbazvuyaz.pdf
cours-gratuit.com--id-1964.pdf
Architecture java j2 ee a partager
Ter Web Service Intro
les servlets-java EE
education
Tp1 - WS avec JAXWS
Cours services web_fabrice_mourlin
Chp3 - Les Services Web
Webserver tomcat-jboss-jrun-jonas doc
Advanced html5
xml-webservices-intro.pdfhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
Tp2 - WS avec JAXRS
Publicité

Dernier (16)

PPTX
Introduction aux Systèmes temps réel.pptx
PDF
Arouna Toure - Senior Ingénieur Logiciel Et Chef De Produit
PDF
CHAPITRE 3 Typologie des réseaux [Enregistrement automatique] 4.pdf
PDF
TP L’analyse granulométrique par tamisage
PDF
Expansion du Réseau de Gazoducs de Gaz Naturel au Brésil _ Analyse Technique ...
PDF
TP de La Masse Volumique apparente et absolue
PDF
FAQ_FORAGE_EAU_SUNRISE_ENGINEERING_GROUP_SARL2025.pdf
PDF
Visite de chantier – Projet de Polyclinique à Laghouat
PPTX
Logique séquentielle : les fondamentaux
PPTX
CH1-RMELLOULI-Données des problèmes d'ordonnancement de la production.pptx
PPTX
UMAPON Cours de traitement des minerais 2.pptx
PPTX
mon_expose_de_geophysique_disposotif_de_wener.pptx
PPTX
COURS DE PROSPECTION MINIERE UTMSIRI - Copie.pptx
PPTX
FormationFormation e pFormationour HC .pptx
PPTX
Lirrigation-et-le-drainage-en-agriculture-Principes-et-Pratiques.pptx
PPTX
A Recurrent Neural Network (RNN)s a type of artificial neural network
Introduction aux Systèmes temps réel.pptx
Arouna Toure - Senior Ingénieur Logiciel Et Chef De Produit
CHAPITRE 3 Typologie des réseaux [Enregistrement automatique] 4.pdf
TP L’analyse granulométrique par tamisage
Expansion du Réseau de Gazoducs de Gaz Naturel au Brésil _ Analyse Technique ...
TP de La Masse Volumique apparente et absolue
FAQ_FORAGE_EAU_SUNRISE_ENGINEERING_GROUP_SARL2025.pdf
Visite de chantier – Projet de Polyclinique à Laghouat
Logique séquentielle : les fondamentaux
CH1-RMELLOULI-Données des problèmes d'ordonnancement de la production.pptx
UMAPON Cours de traitement des minerais 2.pptx
mon_expose_de_geophysique_disposotif_de_wener.pptx
COURS DE PROSPECTION MINIERE UTMSIRI - Copie.pptx
FormationFormation e pFormationour HC .pptx
Lirrigation-et-le-drainage-en-agriculture-Principes-et-Pratiques.pptx
A Recurrent Neural Network (RNN)s a type of artificial neural network
Publicité

WebServices.pdfbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb

  • 1. Web services en Java (services Web) Jean-marc Farinone
  • 2. 2 Web services (services web) : qu'est ce ? ❚ Une architecture orientée objet et distribuée où les messages sont en syntaxe XML. ❚ Une définition : Les Services Web sont des fonctions accessibles par le protocole HTTP. La syntaxe utilisée est XML (SOAP) ❚ Ce n'est pas une technologie Java mais spécifiée par le W3C (http://www.w3.org/2002/ws/) ❚ Mais Java EE propose une API pour faire des web services (http://java.sun.com/webservices/).
  • 3. 3 Un service Web ❚ Un service web est identifié par une description (son "contrat") en XML. Plus précisément en WSDL ❚ Ce contrat représente la structure SOAP/XML du service Web. ❚ Il est nécessaire de faire référence à ce contrat WSDL du service Web si on désire l’utiliser (le consommer) . ❚ Ce contrat WSDL est visible en ajoutant "?WSDL" à la fin de l'url où se trouve le service Web.
  • 4. 4 Les architectures distribuées fournisseur de services client annuaire 1. publication d'une annonce 3. mise en correspondance 2. recherche d'un service
  • 5. 5 Les termes utilisés ❚ Fournisseur de service publie une annonce décrivant les services qu'il fournit = un "provider" ❚ annuaire = un "registry" ❚ un client demandeur (acheteur) d'un service = un "requester" ❚ une mise en relation entre client et fournisseur de service = un "binding"
  • 6. 6 Une architecture standardisée ❚ C'est une architecture orientée services ❚ = SOA = Service Oriented Architecture ❚ = un ensemble de protocoles et de composants logiciels pour utiliser une architecture orientée services ❚ Qui définit donc : le format des messages, les spécifications pour définir un client, un fournisseur de services, l'accès au service d'annuaire, la communication entre client et fournisseur de services, etc.
  • 7. 7 Services web (= web services) ❚ WSDL = Web Services Description Language = format XML pour décrire un service web ❚ SOAP = Simple Object Access Protocol = protocole d'envoi de messages formatés en XML entre clients et serveur web services ❚ La couche transport utilisé est soit HTTP (d'où le nom de web services) soit SMTP (i.e. le mail) ❚ échange de messages synchrones (en attente de réponse) ou asynchrone (publication, lecture de réponse plus tard) ❚ UDDI = Universal Description Discovery and Integration = annuaire de services pour utiliser les services Web.
  • 8. 8 Un environnement pour des WS : Axis ❚ Page d'accueil : http://ws.apache.org/axis/ ❚ Axis est un environnement de développement pour WS (classes pour faire des services et clients WS) et d'exécution mais aussi une application Web. ❚ On peut le télécharger à partir de l'URL ci dessus. Choisir la version axis 1.4 et la version .zip. Après extraction mettre l'application web (qui se trouve dans webapps de l'archive) sous tomcat. ❚ Voir tutorial d'axis à http://ws.apache.org/axis/java/user-guide.html
  • 9. 9 Développement d'un client et serveur WS ❚ Le serveur sera encapsulé dans l'appli web Axis. ❚ Le client est un programme Java ❚ Un serveur complet : Reponse.jws ❚ Ben oui c'est une classe Java. Le fichier doit avoir pour extension .jws public class Reponse { public String reponds(String st) { return "bonjour " + st; } public String disCoucou() { return "Coucou "; } }
  • 10. 10 Le serveur WS Reponse.jws ❚ Il est placé dans l'application web Axis (sous la racine de cette application web) ❚ Qui, a la première utilisation, va compiler ce fichier Java, exécuter la méthode appelée et retourner le résultat (si tout se passe bien !) ❚ Une manière d'accéder à ce Web Service et, dans un client web, de demander la page d'URL : http://localhost:8080/axis/Reponse.jws ❚ Une démonstration SVP. OK ! Attention, chrome n'affiche pas le XML. Utiliser IE par exemple. ❚ Pourquoi cela fonctionne ? ❚ Réponse : en fait tout ce qui se termine par .jws est traité par la servlet AxisServlet (voir le web.xml de l'application web Axis)
  • 11. 11 Le client WS HelloClient.java package hello; import org.apache.axis.client.Call; import org.apache.axis.client.Service; import org.apache.axis.encoding.XMLType; import org.apache.axis.utils.Options; import javax.xml.rpc.ParameterMode; public class HelloClient { public static void main(String [] args) throws Exception { Options options = new Options(args); String endpoint = "http://localhost:" + options.getPort() + "/axis/Reponse.jws"; args = options.getRemainingArgs(); if (args == null || args.length != 1) { System.err.println("Usage: java HelloClient [nom]"); return; } String nom = args[0]; Service service = new Service(); Call call = (Call) service.createCall(); call.setTargetEndpointAddress( new java.net.URL(endpoint) ); call.setOperationName( "reponds" ); call.addParameter( "st", XMLType.XSD_STRING, ParameterMode.IN ); call.setReturnType( XMLType.XSD_STRING ); String ret = (String) call.invoke( new Object [] { nom }); System.out.println("resultat retourné : n" + ret); } }
  • 12. 12 Le client WS HelloClient2.java package hello; import org.apache.axis.client.Call; import org.apache.axis.client.Service; import org.apache.axis.encoding.XMLType; import org.apache.axis.utils.Options; import javax.xml.rpc.ParameterMode; public class HelloClient2 { public static void main(String [] args) throws Exception { Options options = new Options(args); String endpoint = "http://localhost:" + options.getPort() + "/axis/Reponse.jws"; args = options.getRemainingArgs(); Service service2 = new Service(); Call call2 = (Call) service2.createCall(); call2.setTargetEndpointAddress( new java.net.URL(endpoint) ); call2.setOperationName( "disCoucou" ); call2.setReturnType( XMLType.XSD_STRING ); String ret2 = (String) call2.invoke(new Object [] { } ); System.out.println("resultat retourné : n" + ret2); } }
  • 13. 13 Et XML (SOAP) dans tout çà ? ❚ Nous n'avons fait que (!) de la programmation Java. ❚ Quid de SOAP ? ❚ En fait les messages échangés entre le client et le serveur WS sont en SOAP. ❚ Si, si.
  • 14. 14 TCPMonitor : tcpmon ❚ Axis propose un outil qui permet de voir les messages TCP échangés entre un client et un serveur : TCPMonitor ❚ Il suffit d'indiquer que le client envoit les messages à ... TCPMonitor, que TCPMonitor envoit les messages au serveur, et tout échange entre client et serveur est tracé dans cet outil. ❚ On lance cet outil par : java org.apache.axis.utils.tcpmon
  • 15. 15 Utilisation de TCPMonitor 1/4 ❚ Le client est programmé par : ❚ Lorsque TCPMonitor est lancé on obtient le premier écran : String endpoint = "http://localhost:7777" + "/axis/Reponse.jws"; ... Service service2 = new Service(); Call call2 = (Call) service2.createCall(); call2.setTargetEndpointAddress( new java.net.URL(endpoint) ); ....
  • 16. 16 Utilisation de TCPMonitor 2/4 ❚ Indiqué le port écouté dans le champ de texte qui suit dans Listen Port #. Ici 7777. ❚ Et cliquer le bouton Add
  • 17. 17 Utilisation de TCPMonitor 3/4 ❚ Dans le nouvel onglet obtenu, cocher XML Format (et Switch Layout). ❚ Puis (compiler et) lancer le client. ❚ Les messages véhiculés entre client et serveur sont affichés.
  • 19. 19 Bibliographie Web services ❚ http://fr.wikipedia.org/wiki/Service_Oriented_ Architecture ❚ http://java.sun.com/javaee/5/docs/tutorial/doc /bnayk.html : la partie du Java EE 5 tutorial consacrée aux services web (utilisant JAX-WS et les annotations) ❚ http://www.w3.org/2002/ws/desc/ : page d'accueil du "Web Services Description Working Group" ❚ http://ws.apache.org/axis/ : implémentation open source Axis pour construire des services web ❚ http://www.xmethods.com/ : site de web services