SlideShare une entreprise Scribd logo
1  sur  16
Mini projet : Service Web

Réalisés par
El HeniNazih
Ezzair Mayssa
Elghoul Sinda

2013-2014
Introduction
Un service

webest

un

programme

informatique

de

la

famille

des technologies

web permettant la communication et l'échange de données entre applications et systèmes
hétérogènes dans des environnements distribués. Il s'agit donc d'un ensemble de
fonctionnalités exposées sur internet ou sur un intranet, par et pour des applications ou
machines, sans intervention humaine, de manière synchrone ou asynchrone. En effet, le
protocole de communication est défini dans le cadre de la norme SOAP dans la signature du
service exposé (WSDL).
I. Présentation
Un document WSDL se compose d'un ensemble d'éléments décrivant les types de données
utilisés par le service, les messages que le service peut recevoir, ainsi que les liaisons SOAP
associées à chaque message. Le schéma suivant illustre la structure du langage WSDL qui est
un document XML, en décrivant les relations entre les sections constituant un document
WSDL.

1. Structure de document WSDL :

 Contenu de fichier WSDL :
Un fichier WSDL contient donc sept éléments.






Types : fournit la définition de types de données utilisés pour décrire les messages
échangés.
Messages : représente une définition abstraire (noms et types) des données en cours
de transmission.
PortTypes : décrit un ensemble d'opérations. Chaque opération a zéro ou un
message en entrée, zéro ou plusieurs messages de sortie ou d'erreurs.
Binding : spécifie une liaison entre un <portType> et un protocole concret (SOAP,
HTTP...).
Service : indique les adresses de port de chaque liaison.
Port : représente un point d'accès de services défini par une adresse réseau et une
liaison.
 Opération : c'est la description d'une action exposée dans le port.


Le document WSDL peut être divisé en deux parties. Une partie pour les définitions
abstraites, tandis que la deuxième contient les descriptions concrètes.

2. SOAP (Simple Object Access Protocol)
Les interactions entre services Web s'effectuent par le biais d'envois de messages structurés
au format XML. Le protocole SOAP (Simple Object Access Protocol) fournit le cadre
permettant ces échanges.

II. Type de liaison SOAP vs type de liaison WSDL :
Il existe deux modèles de style de communication qui sont utilisés pour traduire une liaison à
un corps de message SOAP/ WSDL.
Ils sont :
 Document
 RPC
L'avantage d'utiliser un modèle de style du document est que vous pouvez structurer le
corps SOAP comme vous le voulez aussi que le contenu du corps du message SOAP est une
instance XML arbitraire.
Cependant, avec un modèle de style RPC, la structure du corps de la demande SOAP doit
contenir à la fois le nom de l'opération et l'ensemble des paramètres de la méthode. Le
modèle de type RPC assume une structure spécifique à l'instance XML contenus dans le
corps du message.

 RPC VS document :
 RPC :
Le corps d'un message SOAP de type RPC est construit d'une manière spécifique, qui est
défini dans la norme SOAP. Il est construit autour de l'hypothèse que vous souhaitez appeler
le service Web comme vous le feriez appeler une fonction normale ou une méthode qui fait
partie de votre code d'application. Le corps du message contient un élément XML pour
chaque "paramètre" de la méthode. Ces éléments de paramètre sont enveloppés dans un
élément XML qui contient le nom de la méthode qui est appelée. La réponse renvoie une
valeur unique (codé en XML), tout comme une méthode de programmation. Le code WSDL
pour un service Web de style RPC est moins complexe que celle d'un service Web le
document de style, mais ce n'est pas un gros problème car WSDL ne sont pas destinés à être
manipulés par les humains.
(-)Le principal inconvénient de style RPC est qu'il est étroitement couplé au code de
l'application. Cela signifie que si vous voulez changer l'ordre des Paramètres ou modifier les
types de ces paramètres, ce changement aura une incidence sur la définition du service Web
lui-même.

 Document:
Un service Web de style de document, ne contient pas de restrictions sur la façon dont le
corps SOAP doit être construit. Il vous permet d'inclure toutes les données XML que vous
voulez et aussi d'inclure un schéma pour cette XML.
(+)Le code WSDL pour un service Web style document est beaucoup plus complexe que celle
d'un service Web de style RPC, mais ce n'est pas un gros problème car WSDL ne sont pas
destinés à être manipulés par les humains.
(+)Services de style de document n'ont pas le problème d’un couplage fort, ils sont
faiblement couplés avec le code de l'application. (Par exemple, avec un service de style de
document, ce n'est pas grave si le programmeur décide d'utiliser un «float» au lieu d'un "int"
pour représenter un paramètre particulier, car il est tout converti en texte XML à la fin).
III. Service Web de Calcul : somme de deux valeurs :
a) Etapes de création de ce service web :
1. Créer interface de service web : Calcul.java
2. Créer le côté serveur implémentant le service :CalculWS .java
3. Créer l’éditeur de service : CalculPublisher.java

1. Créer interface de service web : « Calcul.java »
packagecom.objis ;
importjavax.jws.WebService;
importjavax.jws.soap.SOAPBinding;

@WebService
@SOAPBinding(style = SOAPBinding.Style.RPC)
public interface Calcul {
String calplus(int a, int b);
}

2. Créer

le

côté

serveur

implémentant

« CalculWS .java »
packagecom.objis ;
import javax.jws.WebService;

@WebService(endpointInterface = "com.objis.Calcul")
public class CalculWS implements Calcul {

@Override
public String calplus(int a, int b) {
int c = a+b;
return "le résulatat de l'operation plus est
}

"+c;

le

service :
}

3. Créer l’éditeur de service : « CalculPublisher.java »
packagecom.objis;
importjavax.xml.ws.Endpoint;
public class CalculPublisher {
public static final String URI="http://localhost:8888/calcul";
public static void main(String[ ] args) {
CalculWSimpl = new CalculWS();
Endpoint endpoint = Endpoint.publish(URI, impl);
boolean status = endpoint.isPublished();
System.out.println("ISAMM ING -->web service de calculplus est disponible
?"+status);} }

b) Lib :
c) Phase de Test :
 On

commence

l’exécution

du

programme

de

publication « CalculPublisher.java »

 L’URL lancé est :http://localhost:8888/calcul/

 On lance l’URL suivant http://localhost:8888/calcul?wsdl/ pour tester le service
web :
 Résultat de l’exécution :
IV. Version RESTful :
Réaliser la version RESTful

1. Installation :
 Jersey

2. Réalisation :
1. Créer nouveau projet : « RestfullCalcul »
2. Copier tout les lib de Jersey qui sonttéléchargé vers WEB-INF/lib
3. Les Class Java :
 Class « Calcul.java » :

package com.isamm.res;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

// Plain old Java Object it does not extend as class or implements
// an interface

// The class registers its methods for the HTTP GET request using the @GET
annotation.
// Using the @Produces annotation, it defines that it can deliver several
MIME types,
// text, XML and HTML.

// The browser requests per default the HTML MIME type.

//Sets the path to base URL + /calcul
//http://localhost:8080/RestfullCalcul

@Path("/calcul")
public class Calcul {
int a= 5;
int b = 6 ;

// This method is called if TEXT_PLAIN is request
@GET
@Produces(MediaType.TEXT_PLAIN)
public String sayPlainTextHello() {
return ""+a+b;
}

// This method is called if XML is request
@GET
@Produces(MediaType.TEXT_XML)
public String sayXMLHello() {
int d= a+b ;
return "<?xml version="1.0"?>" + "<calcul> Nous les ingénieurs du web
ISAMM"+d+ "</calcul>";
}

// This method is called if HTML is request
@GET
@Produces(MediaType.TEXT_HTML)
public String sayHtmlHello() {
int d= a+b ;
return "<html> " + "<title>" + "Nous les ingénieurs du web ISAMM"
+"</title>"
+ "<body><h1>" + "le resulat du calcul est

:"+d+"</body></h1>"

+ "</html> ";
}
}

Cette classe elle-même s'inscrire comme une ressource Get via l'annotation @GET.
Via l'annotation @Produit elle définit ce qu’il délivre le texte et les types MIME HTML. Il
définit également par l’annotation @Path que son service est disponible sous Calcul l’URL.

4. Définirai« Jersey Servlet dispatcher »
On inscrire Jersey comme le régulateur de Servet pour les demandes REST.
On modifier le fichier web.xml :

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID"
version="3.0">
<display-name>RestfullCalcul</display-name>
<servlet>
<servlet-name>Jersey REST Service</servlet-name>
<servletclass>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com.isamm.res</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey REST Service</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
</web-app>

Le paramètre"com.sun.jersey.config.property.package" définie dans quel package jersey va
chercher les classes de service Web.

1. Exécuter le service :
On test le service par: "http://localhost:8080/de.vogella.jersey.first/rest/Calcul/". Ce nom
est dériver de "display-name" qui est définie dans le fichier « web.xml ».
2. Créer le client :
Jersey contient une bibliothèque de client REST qui peut être utilisé pour l'essai ou de
construire un véritable client en Java. Alternative on peut utiliser Apache HttpClient pour
créer un client.

Créer un nouveau "de.vogella.jersey.first.client" Java et ajouter les jars de jersey pour le
projet et le chemin de génération de projet. Et on crée la class suivante :
packagecom.isamm.client;
importjava.net.URI;
importjavax.ws.rs.core.MediaType;
importjavax.ws.rs.core.UriBuilder;
import com.sun.jersey.api.client.Client;
importcom.sun.jersey.api.client.ClientResponse;
importcom.sun.jersey.api.client.WebResource;
importcom.sun.jersey.api.client.config.ClientConfig;
importcom.sun.jersey.api.client.config.DefaultClientConfig;
public class TestClient {
public static void main(String[] args) {
ClientConfigconfig = new DefaultClientConfig();
Client client = Client.create(config);
WebResource service = client.resource(getBaseURI());
// Fluent interfaces
System.out.println(service.path("rest").path("calcul").accept(MediaType.TEX
T_PLAIN).get(ClientResponse.class).toString());
// Get plain text
//
System.out.println(service.path("rest").path("calcul").accept(MediaType.TEX
T_PLAIN).get(String.class));
// Get XML
System.out.println(service.path("rest").path("calcul").accept(MediaType.TEX
T_XML).get(String.class));
// The HTML
System.out.println(service.path("rest").path("calcul").accept(MediaType.TEX
T_HTML).get(String.class));
}
private static URI getBaseURI() {
return UriBuilder.fromUri("http://localhost:8080/RestfullCalcul").build();
}
}

 On prend le service de calcul avec Get de protocole Http

3. Résultat de l’exécution :
V.

Problèmesrésolue:
 Aucune class Servlet n’a été spécifiée pour la Servlet Jersey reset service

Contenu connexe

Tendances

Tendances (20)

Appels de procédures distants (RPC)
Appels de procédures distants (RPC)Appels de procédures distants (RPC)
Appels de procédures distants (RPC)
 
Architectures orientés services (SOA)
Architectures orientés services (SOA)Architectures orientés services (SOA)
Architectures orientés services (SOA)
 
Programmation réseau en JAVA
Programmation réseau en JAVAProgrammation réseau en JAVA
Programmation réseau en JAVA
 
Chp3 - Les Services Web
Chp3 - Les Services WebChp3 - Les Services Web
Chp3 - Les Services Web
 
Support de cours angular
Support de cours angularSupport de cours angular
Support de cours angular
 
Support JEE Servlet Jsp MVC M.Youssfi
Support JEE Servlet Jsp MVC M.YoussfiSupport JEE Servlet Jsp MVC M.Youssfi
Support JEE Servlet Jsp MVC M.Youssfi
 
Tp3 - Application SOA avec BPEL
Tp3 - Application SOA avec BPELTp3 - Application SOA avec BPEL
Tp3 - Application SOA avec BPEL
 
Services web rest_support_cours_nfaoui_el_habib
Services web rest_support_cours_nfaoui_el_habibServices web rest_support_cours_nfaoui_el_habib
Services web rest_support_cours_nfaoui_el_habib
 
Présentation SOA
Présentation SOAPrésentation SOA
Présentation SOA
 
Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...
 
Tp2 - WS avec JAXRS
Tp2 - WS avec JAXRSTp2 - WS avec JAXRS
Tp2 - WS avec JAXRS
 
Architecture des Systèmes Logiciels
Architecture des Systèmes LogicielsArchitecture des Systèmes Logiciels
Architecture des Systèmes Logiciels
 
Cours design pattern m youssfi partie 4 composite
Cours design pattern m youssfi partie 4 compositeCours design pattern m youssfi partie 4 composite
Cours design pattern m youssfi partie 4 composite
 
Soap, wsdl et uddi
Soap, wsdl et uddiSoap, wsdl et uddi
Soap, wsdl et uddi
 
Services web soap-el-habib-nfaoui
Services web soap-el-habib-nfaouiServices web soap-el-habib-nfaoui
Services web soap-el-habib-nfaoui
 
Le langage html
Le langage htmlLe langage html
Le langage html
 
Conception d’une plateforme web d’e-Commerce au sein d’une entreprise commerc...
Conception d’une plateforme web d’e-Commerce au sein d’une entreprise commerc...Conception d’une plateforme web d’e-Commerce au sein d’une entreprise commerc...
Conception d’une plateforme web d’e-Commerce au sein d’une entreprise commerc...
 
Support de cours entrepise java beans ejb m.youssfi
Support de cours entrepise java beans ejb m.youssfiSupport de cours entrepise java beans ejb m.youssfi
Support de cours entrepise java beans ejb m.youssfi
 
eServices-Chp4: ESB
eServices-Chp4: ESBeServices-Chp4: ESB
eServices-Chp4: ESB
 
Traitement distribue en BIg Data - KAFKA Broker and Kafka Streams
Traitement distribue en BIg Data - KAFKA Broker and Kafka StreamsTraitement distribue en BIg Data - KAFKA Broker and Kafka Streams
Traitement distribue en BIg Data - KAFKA Broker and Kafka Streams
 

En vedette

Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
Riadh K.
 
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
Riadh K.
 
Soutenance De Stage
Soutenance De StageSoutenance De Stage
Soutenance De Stage
guesta3231e
 
présentation soutenance PFE.ppt
présentation soutenance PFE.pptprésentation soutenance PFE.ppt
présentation soutenance PFE.ppt
Mohamed Ben Bouzid
 
Présentation Soutenance de Mémoire
Présentation Soutenance de MémoirePrésentation Soutenance de Mémoire
Présentation Soutenance de Mémoire
Claire Prigent
 

En vedette (17)

International Institute of technology (android)
International Institute of technology (android)International Institute of technology (android)
International Institute of technology (android)
 
Cahier de charges Projet CRM "Buisness Team" J2EE
Cahier de charges Projet CRM "Buisness Team" J2EECahier de charges Projet CRM "Buisness Team" J2EE
Cahier de charges Projet CRM "Buisness Team" J2EE
 
Software defined radio and the hacker
Software defined radio and the hackerSoftware defined radio and the hacker
Software defined radio and the hacker
 
GNU Radio
GNU RadioGNU Radio
GNU Radio
 
Asp.net Tutorials de L'application "Organizer"
Asp.net Tutorials de L'application "Organizer"Asp.net Tutorials de L'application "Organizer"
Asp.net Tutorials de L'application "Organizer"
 
Rapport de projet de fin d'étude licence informatique et multimédia
Rapport de projet de fin d'étude licence informatique et multimédiaRapport de projet de fin d'étude licence informatique et multimédia
Rapport de projet de fin d'étude licence informatique et multimédia
 
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
 
The Science of Memorable Presentations
The Science of Memorable PresentationsThe Science of Memorable Presentations
The Science of Memorable Presentations
 
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
 
Soutenance De Stage
Soutenance De StageSoutenance De Stage
Soutenance De Stage
 
présentation soutenance PFE.ppt
présentation soutenance PFE.pptprésentation soutenance PFE.ppt
présentation soutenance PFE.ppt
 
Fight for Yourself: How to Sell Your Ideas and Crush Presentations
Fight for Yourself: How to Sell Your Ideas and Crush PresentationsFight for Yourself: How to Sell Your Ideas and Crush Presentations
Fight for Yourself: How to Sell Your Ideas and Crush Presentations
 
Présentation Soutenance de Mémoire
Présentation Soutenance de MémoirePrésentation Soutenance de Mémoire
Présentation Soutenance de Mémoire
 
5 Ways To Surprise Your Audience (and keep their attention)
5 Ways To Surprise Your Audience (and keep their attention)5 Ways To Surprise Your Audience (and keep their attention)
5 Ways To Surprise Your Audience (and keep their attention)
 
17 Ways to Design a Presentation People Want to View
17 Ways to Design a Presentation People Want to View17 Ways to Design a Presentation People Want to View
17 Ways to Design a Presentation People Want to View
 
10 Powerful Body Language Tips for your next Presentation
10 Powerful Body Language Tips for your next Presentation10 Powerful Body Language Tips for your next Presentation
10 Powerful Body Language Tips for your next Presentation
 
8 Tips for an Awesome Powerpoint Presentation
8 Tips for an Awesome Powerpoint Presentation8 Tips for an Awesome Powerpoint Presentation
8 Tips for an Awesome Powerpoint Presentation
 

Similaire à comment realiser un Service Web

2 20 presentations_generales_des_web_services
2 20 presentations_generales_des_web_services2 20 presentations_generales_des_web_services
2 20 presentations_generales_des_web_services
Camus LANMADOUCELO
 

Similaire à comment realiser un Service Web (20)

2 20 presentations_generales_des_web_services
2 20 presentations_generales_des_web_services2 20 presentations_generales_des_web_services
2 20 presentations_generales_des_web_services
 
.NET DotNet CF - 3
.NET DotNet CF - 3.NET DotNet CF - 3
.NET DotNet CF - 3
 
0570-les-services-web.pdfbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
0570-les-services-web.pdfbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb0570-les-services-web.pdfbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
0570-les-services-web.pdfbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
 
education
educationeducation
education
 
Chap1 p1-introduction
Chap1 p1-introductionChap1 p1-introduction
Chap1 p1-introduction
 
Soap
SoapSoap
Soap
 
WebServices.pdfbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
WebServices.pdfbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbWebServices.pdfbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
WebServices.pdfbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
 
Support Web Services SOAP et RESTful Mr YOUSSFI
Support Web Services SOAP et RESTful Mr YOUSSFISupport Web Services SOAP et RESTful Mr YOUSSFI
Support Web Services SOAP et RESTful Mr YOUSSFI
 
Flex, une techno RIA incontournable pour les futures app web ?
Flex, une techno RIA incontournable pour les futures app web ?Flex, une techno RIA incontournable pour les futures app web ?
Flex, une techno RIA incontournable pour les futures app web ?
 
Architectures orientées services
Architectures orientées servicesArchitectures orientées services
Architectures orientées services
 
Ter Web Service Intro
Ter Web Service IntroTer Web Service Intro
Ter Web Service Intro
 
Soap
SoapSoap
Soap
 
intro-ws.pdfbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
intro-ws.pdfbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbintro-ws.pdfbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
intro-ws.pdfbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
 
les servlets-java EE
les  servlets-java EEles  servlets-java EE
les servlets-java EE
 
OpenESB et BPEL
OpenESB et BPELOpenESB et BPEL
OpenESB et BPEL
 
Tutoriel web service
Tutoriel  web serviceTutoriel  web service
Tutoriel web service
 
ASP.NET MVC, Web API & KnockoutJS
ASP.NET MVC, Web API & KnockoutJSASP.NET MVC, Web API & KnockoutJS
ASP.NET MVC, Web API & KnockoutJS
 
Introduction aux Technologies Web élaborée par Marouan OMEZZINE
Introduction aux Technologies Web élaborée par Marouan OMEZZINEIntroduction aux Technologies Web élaborée par Marouan OMEZZINE
Introduction aux Technologies Web élaborée par Marouan OMEZZINE
 
S51 vos projets web services ibm i a l aide de php
S51   vos projets web services ibm i a l aide de phpS51   vos projets web services ibm i a l aide de php
S51 vos projets web services ibm i a l aide de php
 
Spring MVC
Spring MVCSpring MVC
Spring MVC
 

Dernier

Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptxCopie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
ikospam0
 
Bilan énergétique des chambres froides.pdf
Bilan énergétique des chambres froides.pdfBilan énergétique des chambres froides.pdf
Bilan énergétique des chambres froides.pdf
AmgdoulHatim
 

Dernier (16)

Télécommunication et transport .pdfcours
Télécommunication et transport .pdfcoursTélécommunication et transport .pdfcours
Télécommunication et transport .pdfcours
 
Intégration des TICE dans l'enseignement de la Physique-Chimie.pptx
Intégration des TICE dans l'enseignement de la Physique-Chimie.pptxIntégration des TICE dans l'enseignement de la Physique-Chimie.pptx
Intégration des TICE dans l'enseignement de la Physique-Chimie.pptx
 
les_infections_a_streptocoques.pptkioljhk
les_infections_a_streptocoques.pptkioljhkles_infections_a_streptocoques.pptkioljhk
les_infections_a_streptocoques.pptkioljhk
 
Neuvaine de la Pentecôte avec des textes de saint Jean Eudes
Neuvaine de la Pentecôte avec des textes de saint Jean EudesNeuvaine de la Pentecôte avec des textes de saint Jean Eudes
Neuvaine de la Pentecôte avec des textes de saint Jean Eudes
 
Apolonia, Apolonia.pptx Film documentaire
Apolonia, Apolonia.pptx         Film documentaireApolonia, Apolonia.pptx         Film documentaire
Apolonia, Apolonia.pptx Film documentaire
 
L application de la physique classique dans le golf.pptx
L application de la physique classique dans le golf.pptxL application de la physique classique dans le golf.pptx
L application de la physique classique dans le golf.pptx
 
CompLit - Journal of European Literature, Arts and Society - n. 7 - Table of ...
CompLit - Journal of European Literature, Arts and Society - n. 7 - Table of ...CompLit - Journal of European Literature, Arts and Society - n. 7 - Table of ...
CompLit - Journal of European Literature, Arts and Society - n. 7 - Table of ...
 
python-Cours Officiel POO Python-m103.pdf
python-Cours Officiel POO Python-m103.pdfpython-Cours Officiel POO Python-m103.pdf
python-Cours Officiel POO Python-m103.pdf
 
Formation échiquéenne jwhyCHESS, parallèle avec la planification de projet
Formation échiquéenne jwhyCHESS, parallèle avec la planification de projetFormation échiquéenne jwhyCHESS, parallèle avec la planification de projet
Formation échiquéenne jwhyCHESS, parallèle avec la planification de projet
 
Echos libraries Burkina Faso newsletter 2024
Echos libraries Burkina Faso newsletter 2024Echos libraries Burkina Faso newsletter 2024
Echos libraries Burkina Faso newsletter 2024
 
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
 
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptxCopie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
 
L'expression du but : fiche et exercices niveau C1 FLE
L'expression du but : fiche et exercices  niveau C1 FLEL'expression du but : fiche et exercices  niveau C1 FLE
L'expression du but : fiche et exercices niveau C1 FLE
 
Cours Généralités sur les systèmes informatiques
Cours Généralités sur les systèmes informatiquesCours Généralités sur les systèmes informatiques
Cours Généralités sur les systèmes informatiques
 
RAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANK
RAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANKRAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANK
RAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANK
 
Bilan énergétique des chambres froides.pdf
Bilan énergétique des chambres froides.pdfBilan énergétique des chambres froides.pdf
Bilan énergétique des chambres froides.pdf
 

comment realiser un Service Web

  • 1. Mini projet : Service Web Réalisés par El HeniNazih Ezzair Mayssa Elghoul Sinda 2013-2014
  • 2. Introduction Un service webest un programme informatique de la famille des technologies web permettant la communication et l'échange de données entre applications et systèmes hétérogènes dans des environnements distribués. Il s'agit donc d'un ensemble de fonctionnalités exposées sur internet ou sur un intranet, par et pour des applications ou machines, sans intervention humaine, de manière synchrone ou asynchrone. En effet, le protocole de communication est défini dans le cadre de la norme SOAP dans la signature du service exposé (WSDL).
  • 3. I. Présentation Un document WSDL se compose d'un ensemble d'éléments décrivant les types de données utilisés par le service, les messages que le service peut recevoir, ainsi que les liaisons SOAP associées à chaque message. Le schéma suivant illustre la structure du langage WSDL qui est un document XML, en décrivant les relations entre les sections constituant un document WSDL. 1. Structure de document WSDL :  Contenu de fichier WSDL : Un fichier WSDL contient donc sept éléments.      Types : fournit la définition de types de données utilisés pour décrire les messages échangés. Messages : représente une définition abstraire (noms et types) des données en cours de transmission. PortTypes : décrit un ensemble d'opérations. Chaque opération a zéro ou un message en entrée, zéro ou plusieurs messages de sortie ou d'erreurs. Binding : spécifie une liaison entre un <portType> et un protocole concret (SOAP, HTTP...). Service : indique les adresses de port de chaque liaison.
  • 4. Port : représente un point d'accès de services défini par une adresse réseau et une liaison.  Opération : c'est la description d'une action exposée dans le port.  Le document WSDL peut être divisé en deux parties. Une partie pour les définitions abstraites, tandis que la deuxième contient les descriptions concrètes. 2. SOAP (Simple Object Access Protocol) Les interactions entre services Web s'effectuent par le biais d'envois de messages structurés au format XML. Le protocole SOAP (Simple Object Access Protocol) fournit le cadre permettant ces échanges. II. Type de liaison SOAP vs type de liaison WSDL : Il existe deux modèles de style de communication qui sont utilisés pour traduire une liaison à un corps de message SOAP/ WSDL. Ils sont :  Document  RPC L'avantage d'utiliser un modèle de style du document est que vous pouvez structurer le corps SOAP comme vous le voulez aussi que le contenu du corps du message SOAP est une instance XML arbitraire. Cependant, avec un modèle de style RPC, la structure du corps de la demande SOAP doit contenir à la fois le nom de l'opération et l'ensemble des paramètres de la méthode. Le modèle de type RPC assume une structure spécifique à l'instance XML contenus dans le corps du message.  RPC VS document :  RPC :
  • 5. Le corps d'un message SOAP de type RPC est construit d'une manière spécifique, qui est défini dans la norme SOAP. Il est construit autour de l'hypothèse que vous souhaitez appeler le service Web comme vous le feriez appeler une fonction normale ou une méthode qui fait partie de votre code d'application. Le corps du message contient un élément XML pour chaque "paramètre" de la méthode. Ces éléments de paramètre sont enveloppés dans un élément XML qui contient le nom de la méthode qui est appelée. La réponse renvoie une valeur unique (codé en XML), tout comme une méthode de programmation. Le code WSDL pour un service Web de style RPC est moins complexe que celle d'un service Web le document de style, mais ce n'est pas un gros problème car WSDL ne sont pas destinés à être manipulés par les humains. (-)Le principal inconvénient de style RPC est qu'il est étroitement couplé au code de l'application. Cela signifie que si vous voulez changer l'ordre des Paramètres ou modifier les types de ces paramètres, ce changement aura une incidence sur la définition du service Web lui-même.  Document: Un service Web de style de document, ne contient pas de restrictions sur la façon dont le corps SOAP doit être construit. Il vous permet d'inclure toutes les données XML que vous voulez et aussi d'inclure un schéma pour cette XML. (+)Le code WSDL pour un service Web style document est beaucoup plus complexe que celle d'un service Web de style RPC, mais ce n'est pas un gros problème car WSDL ne sont pas destinés à être manipulés par les humains. (+)Services de style de document n'ont pas le problème d’un couplage fort, ils sont faiblement couplés avec le code de l'application. (Par exemple, avec un service de style de document, ce n'est pas grave si le programmeur décide d'utiliser un «float» au lieu d'un "int" pour représenter un paramètre particulier, car il est tout converti en texte XML à la fin).
  • 6. III. Service Web de Calcul : somme de deux valeurs : a) Etapes de création de ce service web : 1. Créer interface de service web : Calcul.java 2. Créer le côté serveur implémentant le service :CalculWS .java 3. Créer l’éditeur de service : CalculPublisher.java 1. Créer interface de service web : « Calcul.java » packagecom.objis ; importjavax.jws.WebService; importjavax.jws.soap.SOAPBinding; @WebService @SOAPBinding(style = SOAPBinding.Style.RPC) public interface Calcul { String calplus(int a, int b); } 2. Créer le côté serveur implémentant « CalculWS .java » packagecom.objis ; import javax.jws.WebService; @WebService(endpointInterface = "com.objis.Calcul") public class CalculWS implements Calcul { @Override public String calplus(int a, int b) { int c = a+b; return "le résulatat de l'operation plus est } "+c; le service :
  • 7. } 3. Créer l’éditeur de service : « CalculPublisher.java » packagecom.objis; importjavax.xml.ws.Endpoint; public class CalculPublisher { public static final String URI="http://localhost:8888/calcul"; public static void main(String[ ] args) { CalculWSimpl = new CalculWS(); Endpoint endpoint = Endpoint.publish(URI, impl); boolean status = endpoint.isPublished(); System.out.println("ISAMM ING -->web service de calculplus est disponible ?"+status);} } b) Lib :
  • 8. c) Phase de Test :  On commence l’exécution du programme de publication « CalculPublisher.java »  L’URL lancé est :http://localhost:8888/calcul/  On lance l’URL suivant http://localhost:8888/calcul?wsdl/ pour tester le service web :
  • 9.  Résultat de l’exécution :
  • 10. IV. Version RESTful : Réaliser la version RESTful 1. Installation :  Jersey 2. Réalisation : 1. Créer nouveau projet : « RestfullCalcul » 2. Copier tout les lib de Jersey qui sonttéléchargé vers WEB-INF/lib
  • 11. 3. Les Class Java :  Class « Calcul.java » : package com.isamm.res; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; // Plain old Java Object it does not extend as class or implements // an interface // The class registers its methods for the HTTP GET request using the @GET annotation. // Using the @Produces annotation, it defines that it can deliver several MIME types, // text, XML and HTML. // The browser requests per default the HTML MIME type. //Sets the path to base URL + /calcul //http://localhost:8080/RestfullCalcul @Path("/calcul") public class Calcul { int a= 5; int b = 6 ; // This method is called if TEXT_PLAIN is request @GET @Produces(MediaType.TEXT_PLAIN)
  • 12. public String sayPlainTextHello() { return ""+a+b; } // This method is called if XML is request @GET @Produces(MediaType.TEXT_XML) public String sayXMLHello() { int d= a+b ; return "<?xml version="1.0"?>" + "<calcul> Nous les ingénieurs du web ISAMM"+d+ "</calcul>"; } // This method is called if HTML is request @GET @Produces(MediaType.TEXT_HTML) public String sayHtmlHello() { int d= a+b ; return "<html> " + "<title>" + "Nous les ingénieurs du web ISAMM" +"</title>" + "<body><h1>" + "le resulat du calcul est :"+d+"</body></h1>" + "</html> "; } } Cette classe elle-même s'inscrire comme une ressource Get via l'annotation @GET. Via l'annotation @Produit elle définit ce qu’il délivre le texte et les types MIME HTML. Il définit également par l’annotation @Path que son service est disponible sous Calcul l’URL. 4. Définirai« Jersey Servlet dispatcher » On inscrire Jersey comme le régulateur de Servet pour les demandes REST.
  • 13. On modifier le fichier web.xml : <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <display-name>RestfullCalcul</display-name> <servlet> <servlet-name>Jersey REST Service</servlet-name> <servletclass>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class> <init-param> <param-name>com.sun.jersey.config.property.packages</param-name> <param-value>com.isamm.res</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Jersey REST Service</servlet-name> <url-pattern>/rest/*</url-pattern> </servlet-mapping> </web-app> Le paramètre"com.sun.jersey.config.property.package" définie dans quel package jersey va chercher les classes de service Web. 1. Exécuter le service : On test le service par: "http://localhost:8080/de.vogella.jersey.first/rest/Calcul/". Ce nom est dériver de "display-name" qui est définie dans le fichier « web.xml ».
  • 14. 2. Créer le client : Jersey contient une bibliothèque de client REST qui peut être utilisé pour l'essai ou de construire un véritable client en Java. Alternative on peut utiliser Apache HttpClient pour créer un client. Créer un nouveau "de.vogella.jersey.first.client" Java et ajouter les jars de jersey pour le projet et le chemin de génération de projet. Et on crée la class suivante : packagecom.isamm.client; importjava.net.URI; importjavax.ws.rs.core.MediaType; importjavax.ws.rs.core.UriBuilder; import com.sun.jersey.api.client.Client; importcom.sun.jersey.api.client.ClientResponse; importcom.sun.jersey.api.client.WebResource; importcom.sun.jersey.api.client.config.ClientConfig; importcom.sun.jersey.api.client.config.DefaultClientConfig; public class TestClient { public static void main(String[] args) { ClientConfigconfig = new DefaultClientConfig(); Client client = Client.create(config); WebResource service = client.resource(getBaseURI()); // Fluent interfaces System.out.println(service.path("rest").path("calcul").accept(MediaType.TEX T_PLAIN).get(ClientResponse.class).toString()); // Get plain text // System.out.println(service.path("rest").path("calcul").accept(MediaType.TEX T_PLAIN).get(String.class)); // Get XML System.out.println(service.path("rest").path("calcul").accept(MediaType.TEX T_XML).get(String.class)); // The HTML System.out.println(service.path("rest").path("calcul").accept(MediaType.TEX T_HTML).get(String.class));
  • 15. } private static URI getBaseURI() { return UriBuilder.fromUri("http://localhost:8080/RestfullCalcul").build(); } }  On prend le service de calcul avec Get de protocole Http 3. Résultat de l’exécution :
  • 16. V. Problèmesrésolue:  Aucune class Servlet n’a été spécifiée pour la Servlet Jersey reset service