SlideShare une entreprise Scribd logo
1  sur  20
Télécharger pour lire hors ligne
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

Similaire à WebServices.pdfbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb

cours-gratuit.com--id-1964.pdf
cours-gratuit.com--id-1964.pdfcours-gratuit.com--id-1964.pdf
cours-gratuit.com--id-1964.pdfRachida19
 
Architecture java j2 ee a partager
Architecture java j2 ee a partagerArchitecture java j2 ee a partager
Architecture java j2 ee a partageraliagadir
 
les servlets-java EE
les  servlets-java EEles  servlets-java EE
les servlets-java EEYassine Badri
 
Tp1 - WS avec JAXWS
Tp1 - WS avec JAXWSTp1 - WS avec JAXWS
Tp1 - WS avec JAXWSLilia Sfaxi
 
Cours services web_fabrice_mourlin
Cours services web_fabrice_mourlinCours services web_fabrice_mourlin
Cours services web_fabrice_mourlinangeeLee
 
Chp3 - Les Services Web
Chp3 - Les Services WebChp3 - Les Services Web
Chp3 - Les Services WebLilia Sfaxi
 
Webserver tomcat-jboss-jrun-jonas doc
Webserver tomcat-jboss-jrun-jonas docWebserver tomcat-jboss-jrun-jonas doc
Webserver tomcat-jboss-jrun-jonas docWinslo Nwan
 
xml-webservices-intro.pdfhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
xml-webservices-intro.pdfhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhxml-webservices-intro.pdfhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
xml-webservices-intro.pdfhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhindguendouz2000
 
Tp2 - WS avec JAXRS
Tp2 - WS avec JAXRSTp2 - WS avec JAXRS
Tp2 - WS avec JAXRSLilia Sfaxi
 
Présentation de WAMP.ws, le protocole pour faire du PUB/SUB et RPC over Webso...
Présentation de WAMP.ws, le protocole pour faire du PUB/SUB et RPC over Webso...Présentation de WAMP.ws, le protocole pour faire du PUB/SUB et RPC over Webso...
Présentation de WAMP.ws, le protocole pour faire du PUB/SUB et RPC over Webso...sametmax
 
Envoi sms oracle_forms_10g
Envoi sms oracle_forms_10gEnvoi sms oracle_forms_10g
Envoi sms oracle_forms_10gEmpterprize
 
Aspnetcore introduction
Aspnetcore introductionAspnetcore introduction
Aspnetcore introductionMichel Bruchet
 

Similaire à WebServices.pdfbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb (20)

APACHE TOMCAT
APACHE TOMCATAPACHE TOMCAT
APACHE TOMCAT
 
Axis2 services fr
Axis2 services frAxis2 services fr
Axis2 services fr
 
cours-gratuit.com--id-1964.pdf
cours-gratuit.com--id-1964.pdfcours-gratuit.com--id-1964.pdf
cours-gratuit.com--id-1964.pdf
 
Architecture java j2 ee a partager
Architecture java j2 ee a partagerArchitecture java j2 ee a partager
Architecture java j2 ee a partager
 
Ter Web Service Intro
Ter Web Service IntroTer Web Service Intro
Ter Web Service Intro
 
les servlets-java EE
les  servlets-java EEles  servlets-java EE
les servlets-java EE
 
Soap
SoapSoap
Soap
 
education
educationeducation
education
 
Tp1 - WS avec JAXWS
Tp1 - WS avec JAXWSTp1 - WS avec JAXWS
Tp1 - WS avec JAXWS
 
Cours services web_fabrice_mourlin
Cours services web_fabrice_mourlinCours services web_fabrice_mourlin
Cours services web_fabrice_mourlin
 
Chp3 - Les Services Web
Chp3 - Les Services WebChp3 - Les Services Web
Chp3 - Les Services Web
 
Webserver tomcat-jboss-jrun-jonas doc
Webserver tomcat-jboss-jrun-jonas docWebserver tomcat-jboss-jrun-jonas doc
Webserver tomcat-jboss-jrun-jonas doc
 
Advanced html5
Advanced html5Advanced html5
Advanced html5
 
xml-webservices-intro.pdfhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
xml-webservices-intro.pdfhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhxml-webservices-intro.pdfhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
xml-webservices-intro.pdfhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
 
Tp2 - WS avec JAXRS
Tp2 - WS avec JAXRSTp2 - WS avec JAXRS
Tp2 - WS avec JAXRS
 
Présentation de WAMP.ws, le protocole pour faire du PUB/SUB et RPC over Webso...
Présentation de WAMP.ws, le protocole pour faire du PUB/SUB et RPC over Webso...Présentation de WAMP.ws, le protocole pour faire du PUB/SUB et RPC over Webso...
Présentation de WAMP.ws, le protocole pour faire du PUB/SUB et RPC over Webso...
 
Envoi sms oracle_forms_10g
Envoi sms oracle_forms_10gEnvoi sms oracle_forms_10g
Envoi sms oracle_forms_10g
 
Web Services
Web ServicesWeb Services
Web Services
 
Aspnetcore introduction
Aspnetcore introductionAspnetcore introduction
Aspnetcore introduction
 
Présentation SOA
Présentation SOAPrésentation SOA
Présentation SOA
 

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