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
 

Dernier

JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...Institut de l'Elevage - Idele
 
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...Institut de l'Elevage - Idele
 
GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenus
GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenusGAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenus
GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenusInstitut de l'Elevage - Idele
 
Câblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdfCâblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdfmia884611
 
GAL2024 - Consommations et productions d'énergies dans les exploitations lait...
GAL2024 - Consommations et productions d'énergies dans les exploitations lait...GAL2024 - Consommations et productions d'énergies dans les exploitations lait...
GAL2024 - Consommations et productions d'énergies dans les exploitations lait...Institut de l'Elevage - Idele
 
GAL2024 - Décarbonation du secteur laitier : la filière s'engage
GAL2024 - Décarbonation du secteur laitier : la filière s'engageGAL2024 - Décarbonation du secteur laitier : la filière s'engage
GAL2024 - Décarbonation du secteur laitier : la filière s'engageInstitut de l'Elevage - Idele
 
JTC 2024 La relance de la filière de la viande de chevreau.pdf
JTC 2024 La relance de la filière de la viande de chevreau.pdfJTC 2024 La relance de la filière de la viande de chevreau.pdf
JTC 2024 La relance de la filière de la viande de chevreau.pdfInstitut de l'Elevage - Idele
 
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdfJTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdfInstitut de l'Elevage - Idele
 
conception d'un batiment r+4 comparative de defferente ariante de plancher
conception d'un  batiment  r+4 comparative de defferente ariante de plancherconception d'un  batiment  r+4 comparative de defferente ariante de plancher
conception d'un batiment r+4 comparative de defferente ariante de planchermansouriahlam
 
WBS OBS RACI_2020-etunhjjlllllll pdf.pdf
WBS OBS RACI_2020-etunhjjlllllll pdf.pdfWBS OBS RACI_2020-etunhjjlllllll pdf.pdf
WBS OBS RACI_2020-etunhjjlllllll pdf.pdfSophie569778
 
GAL2024 - L'élevage laitier cultive la biodiversité
GAL2024 - L'élevage laitier cultive la biodiversitéGAL2024 - L'élevage laitier cultive la biodiversité
GAL2024 - L'élevage laitier cultive la biodiversitéInstitut de l'Elevage - Idele
 
Algo II : les piles ( cours + exercices)
Algo II :  les piles ( cours + exercices)Algo II :  les piles ( cours + exercices)
Algo II : les piles ( cours + exercices)Sana REFAI
 
comprehension de DDMRP dans le domaine de gestion
comprehension de DDMRP dans le domaine de gestioncomprehension de DDMRP dans le domaine de gestion
comprehension de DDMRP dans le domaine de gestionyakinekaidouchi1
 
GAL2024 - Changements climatiques et maladies émergentes
GAL2024 - Changements climatiques et maladies émergentesGAL2024 - Changements climatiques et maladies émergentes
GAL2024 - Changements climatiques et maladies émergentesInstitut de l'Elevage - Idele
 
GAL2024 - Parcellaire des fermes laitières : en enjeu de compétitivité et de ...
GAL2024 - Parcellaire des fermes laitières : en enjeu de compétitivité et de ...GAL2024 - Parcellaire des fermes laitières : en enjeu de compétitivité et de ...
GAL2024 - Parcellaire des fermes laitières : en enjeu de compétitivité et de ...Institut de l'Elevage - Idele
 
GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...
GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...
GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...Institut de l'Elevage - Idele
 
JTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdfJTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdfInstitut de l'Elevage - Idele
 

Dernier (20)

JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
 
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...
 
GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenus
GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenusGAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenus
GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenus
 
JTC 2024 Bâtiment et Photovoltaïque.pdf
JTC 2024  Bâtiment et Photovoltaïque.pdfJTC 2024  Bâtiment et Photovoltaïque.pdf
JTC 2024 Bâtiment et Photovoltaïque.pdf
 
Câblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdfCâblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdf
 
GAL2024 - Consommations et productions d'énergies dans les exploitations lait...
GAL2024 - Consommations et productions d'énergies dans les exploitations lait...GAL2024 - Consommations et productions d'énergies dans les exploitations lait...
GAL2024 - Consommations et productions d'énergies dans les exploitations lait...
 
GAL2024 - Décarbonation du secteur laitier : la filière s'engage
GAL2024 - Décarbonation du secteur laitier : la filière s'engageGAL2024 - Décarbonation du secteur laitier : la filière s'engage
GAL2024 - Décarbonation du secteur laitier : la filière s'engage
 
JTC 2024 La relance de la filière de la viande de chevreau.pdf
JTC 2024 La relance de la filière de la viande de chevreau.pdfJTC 2024 La relance de la filière de la viande de chevreau.pdf
JTC 2024 La relance de la filière de la viande de chevreau.pdf
 
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdfJTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
 
conception d'un batiment r+4 comparative de defferente ariante de plancher
conception d'un  batiment  r+4 comparative de defferente ariante de plancherconception d'un  batiment  r+4 comparative de defferente ariante de plancher
conception d'un batiment r+4 comparative de defferente ariante de plancher
 
WBS OBS RACI_2020-etunhjjlllllll pdf.pdf
WBS OBS RACI_2020-etunhjjlllllll pdf.pdfWBS OBS RACI_2020-etunhjjlllllll pdf.pdf
WBS OBS RACI_2020-etunhjjlllllll pdf.pdf
 
GAL2024 - L'élevage laitier cultive la biodiversité
GAL2024 - L'élevage laitier cultive la biodiversitéGAL2024 - L'élevage laitier cultive la biodiversité
GAL2024 - L'élevage laitier cultive la biodiversité
 
Algo II : les piles ( cours + exercices)
Algo II :  les piles ( cours + exercices)Algo II :  les piles ( cours + exercices)
Algo II : les piles ( cours + exercices)
 
comprehension de DDMRP dans le domaine de gestion
comprehension de DDMRP dans le domaine de gestioncomprehension de DDMRP dans le domaine de gestion
comprehension de DDMRP dans le domaine de gestion
 
GAL2024 - Changements climatiques et maladies émergentes
GAL2024 - Changements climatiques et maladies émergentesGAL2024 - Changements climatiques et maladies émergentes
GAL2024 - Changements climatiques et maladies émergentes
 
GAL2024 - Parcellaire des fermes laitières : en enjeu de compétitivité et de ...
GAL2024 - Parcellaire des fermes laitières : en enjeu de compétitivité et de ...GAL2024 - Parcellaire des fermes laitières : en enjeu de compétitivité et de ...
GAL2024 - Parcellaire des fermes laitières : en enjeu de compétitivité et de ...
 
GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...
GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...
GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...
 
JTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdfJTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdf
 
CAP2ER_GC_Presentation_Outil_20240422.pptx
CAP2ER_GC_Presentation_Outil_20240422.pptxCAP2ER_GC_Presentation_Outil_20240422.pptx
CAP2ER_GC_Presentation_Outil_20240422.pptx
 
JTC 2024 - DeCremoux_Anomalies_génétiques.pdf
JTC 2024 - DeCremoux_Anomalies_génétiques.pdfJTC 2024 - DeCremoux_Anomalies_génétiques.pdf
JTC 2024 - DeCremoux_Anomalies_génétiques.pdf
 

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