Module SOA
A.U 2018-2019
Objectifs
• Présentation générale des Web Services
JAX-WS
2
Présentation des Services web
Un service web est:
Un composant logiciel encapsulant des fonctionnalités métier accessible via des protocoles standards
basés sur XML.
Abstrait
Un service web est une boîte noire dont l’implémentation interne est masquée au consommateur
Sans état
Ne nécessite pas la présence d ’un contexte d ’exécution
Réutilisable
JAX-WS
3
Architecture des Services Web
WSDL
Annuaire
Découverte Publication
SOAP
XML
Client Fournisseur
Interaction
Programme Client Service
JAX-WS
4
Architecture des Services Web
Messages
SOAP Appel
HTTP
Application
Serveur d’application
Cliente
Client Serveur
JAX-WS
5
Les technologies
L’architecture des web services repose essentiellement sur les technologies suivantes:
SOAP-Simple Object Acces Protocol: Protocole pour la communication entre Web Services.
JAX-WS
6
JAX-WS
JAX-WS (Java API for XML-based Web Services) :
Est un modèle standard de programmation des services web en Java.
AXIS2
CXF
Glassfish
JAX-WS
7
Généralités JAX-WS
Il est possible de développer des Services Web en dehors d’un serveur
d’application en mode autonome.
Le développement de Services Web avec JAX-WS est basé sur les POJO
(Plain Old Java Object).
JAX-WS
8
Développement Serveur
Le développement serveur est possible directement à partir de Java SE 6 via son serveur Web http
léger.
Approche Top/Down
clients dans des langages
différents
WSDL
Java
JAX-WS
PHP
Approche Bottom/Up
SOAP
.Net *.java
Serveur Web
Couche Cliente
Couche Serveur
JAX-WS
10
Développement Serveur: Bottom/Up
WSDL file
WSDL
Approche Bottom/Up
JAX-WS
Servlet
SOAP
Couche Serveur
JAX-WS
11
Développement Serveur: Bottom/Up
L’approche Bottom /Up consiste à démarrer le développement à partir d’une classe Java
(POJO).
Déployer l’application sur un serveur d’application (ou via directement Java SE 6).
Le document WSDL est généré automatiquement en respectant les valeurs par défauts.
URL du WSDL : http://monserveur/app/Service?WSDL
Toutes les méthodes public du POJO sont des opérations du Web Service.
JAX-WS
12
Développement Serveur: Bottom/Up
Exemple: Implémentation du Web Service HelloWorld:
JAX-WS
13
Développement Serveur: Bottom/Up
Exemple: Implémentation du Web Service HelloWorld:
JAX-WS
14
Développement Serveur: Bottom/Up
Exemple: Paramétrer le service web HelloWorld:
JAX-WS
15
Développement Serveur: Bottom/Up
Comme indiqué précédemment, la JRE 6 fournit des API et des outils pour manipuler des Services
Web.
L’outil wsgen génère des artifacts (JAXB, WSDL) à partir des classes Java annotées via JAX-WS.
L’utilisation de cet outil n’est pas obligatoire puisque cette génération est implicite lors de l’exécution.
Exemples d’utilisation:
JAX-WS
16
Développement Serveur: Bottom/Up
Un Service Web est déployé dans une application Web.
JAX-WS
17
Développement Serveur: Top/Down
WSDL file
Document WSDL décrivant le
service web à implémenter
WSDL file
WSDL
Approche Top/Down
Interface Java du
JAX-WS
PortType
Servlet
SOAP
Couche Serveur
JAX-WS
18
Développement Serveur: Top/Down
L’approche Top/Down consiste à démarrer le développement du service à
partir d’un document WSDL.
JAX-WS
19
Développement Client JAX-WS
Description du service Web
Servlet
Interface Java du
Classe Java du Service Conteneur Java
PortType
SOAP
Envoie/réception des
JAX-WS messages Soap
Serveur Web
Classe Java qui s’occupe de la
transformation objet/xml et de
l’envoie des paquets SOAP
Couche Serveur
*.java
JVM Java Client
Classe Java qui décrit le
programme qui appelle le
Couche Cliente Service Web
JAX-WS
20
Développement Client Java
Le développement du Client se fait à partir d’un programme Java en faisant
appel aux opérations de notre Service Web.
Le développeur ne manipule que du code Java, le code XML est caché
(JAXB)
JAX-WS
21
Développement Client Java
Le développement du Client suit une procédure similaire à l’approche Top/ Down où le point
de départ est le document WSDL (via une URL ou via un fichier physique).
JAX-WS
22
Développement Client Java
Exemple: Développer un Client Java pour le Service Web HelloWorld:
JAX-WS
23
Développement Client Java
Exemple: Développer un Client Java pour le Service Web HelloWorld (suite):
Création d’une instance de la classe
Service
JAX-WS
24
Annotations
JAX-WS repose sur l’utilisation massive des annotations pour la
configurations d’un Service Web.
JAX-WS
25
Annotations: @WebService
Annoter une classe Java pour définir l’implémentation du Service Web.
JAX-WS
26
Annotations: @WebMethod
Annoter une méthode d’une classe Java qui sera exposée comme
opération du Service Web.
JAX-WS
27
Annotations: @WebParam
Décrit la relation entre le paramètre d’entrée d’une méthode et le message
part d’une opération.
JAX-WS
28
Annotations: @WebResult
Décrit la relation entre le paramètre de sortie d’une méthode et un message
part d’une opération.
JAX-WS 29
Services web étendus VS REST 1/5
Services web étendus sont orientés activité
JAX-WS
30
Services web étendus VS REST 2/5
Protocole de communication
Services web étendus
Message SOAP
Client Serveur
REST
Requête/Réponse HTTP
Client Serveur
JAX-WS
31
Services web étendus VS REST 3/5
JAX-WS
32
Services web étendus VS REST 4/5
JAX-WS
33
Services web étendus VS REST 5/5
Services Web étendus Services Web REST
Avantages Avantages
-Standardisé -Simplicité
-Sécurité (WS-Security) -Lisibilité par l’humain
-Outillé -Représentations
multiples
Inconvénients Inconvénients
-Complexité, lourdeur -Sécurité restreinte
JAX-WS
34