ARCHITECTURE & DÉVELOPPEMENT WEB
SPRING BOOT - PARTIE 2
Préparé par: Dr. Mohammed EL BAKKALI
Spring Boot ARCHITECTURE & DÉVELOPPEMENT WEB Préparé par : Dr. Mohammed EL BAKKALI
WEB SERVICE
Spring Boot ARCHITECTURE & DÉVELOPPEMENT WEB Préparé par : Dr. Mohammed EL BAKKALI 2
o Un Service Web est une application qui permet d’échanger des
données avec d’autres applications web. Même si ces dernières
sont construites dans des langages de programmation différents.
o Parmi les Services Web les plus connus on peut citer SOAP, REST
ou HTTP.
o Si nous souhaitons utiliser un Service Web, nous devons connaitre
l’API du service
Spring Boot ARCHITECTURE & DÉVELOPPEMENT WEB Préparé par : Dr. Mohammed EL BAKKALI 3
Quel est le format d’un message ?
o JSON
o XML
o SOAP
Le service web est-il protégé ?
Le service web peut-il limiter le transfert de certains données ?
Comment peut-on le créer le consommer ?
….
Spring Boot ARCHITECTURE & DÉVELOPPEMENT WEB Préparé par : Dr. Mohammed EL BAKKALI 4
Service web
2000 – prononcer par Bill Gates
Mais il existait de différentes formes:
1960 – EDI = système d’échange informatique de messages
1970 – FTP = protocole de transfert de données
1990 – RPC = protocole réseau permettant d’établir des appels de
procédures sur un ordinateur
1998 – XML = inspiré de SGML intégrant la simplicité …
XML-RPC : ensemble de règles simples basé sur XML pour
transmission sur le web
2001 – SOAP = Simple Object Access Protocol
Spring Boot ARCHITECTURE & DÉVELOPPEMENT WEB Préparé par : Dr. Mohammed EL BAKKALI 5
SOAP
Spring Boot ARCHITECTURE & DÉVELOPPEMENT WEB Préparé par : Dr. Mohammed EL BAKKALI 6
SOAP (Simple Object Access Protocol)
o Initialiser par Microsoft (fin 90)
o Reprendre par W3C [The World Wide Web Consortium] (2001)
Versions SOAP
o 2000 – SOAP 1.1
o 2007 – SOAP 1.2 (extensible, rapide)
Spring Boot ARCHITECTURE & DÉVELOPPEMENT WEB Préparé par : Dr. Mohammed EL BAKKALI 7
SOAP (Simple Object Access Protocol)
o Il est un protocole d'échange inter-applications
o Il échange des messages sur des réseaux entre un expéditeur
(SOAP sender) et un destinataire (SOAP receiver).
o Il est indépendant de toute plateforme
o Il est basé sur XML
o Il utilise généralement HTTP
SOAP = XML + HTTP
Spring Boot ARCHITECTURE & DÉVELOPPEMENT WEB Préparé par : Dr. Mohammed EL BAKKALI 8
Spring Boot ARCHITECTURE & DÉVELOPPEMENT WEB Préparé par : Dr. Mohammed EL BAKKALI 9
Exemple de message SOAP
<soapenv:Envelope xmlns:soapenv="[Link]
xmlns:m="[Link]
<soapenv:Header> Un message est constitué par : une enveloppe
Optional (SOAP envelope) contenant :
</soapenv:Header> o En-tête (SOAP header) optionnel
<soapenv:Body> o Charge utile (SOAP body).
<m:releve>
<m:temperature>
<m:valeur>6.0</m:valeur>
<m:unite>celsius</m:unite>
</m:temperature>
<m:lieu>
<m:ville>Bordeaux</m:ville>
</m:lieu>
</m:releve>
<soapenv:Fault>
Optional
</soapenv:Fault>
</soapenv:Body>
</soapenv:Envelope>
Spring Boot ARCHITECTURE & DÉVELOPPEMENT WEB Préparé par : Dr. Mohammed EL BAKKALI 10
Exemple de réponse SOAP
<soap:Envelope
xmlns:soap="[Link]
<soap:Body>
<soap:Fault>
<faultcode>soap:Server</faultcode>
<faultstring>Internal server error</faultstring>
</soap:Fault>
</soap:Body>
</soap:Envelope>
Spring Boot ARCHITECTURE & DÉVELOPPEMENT WEB Préparé par : Dr. Mohammed EL BAKKALI 11
Pour utiliser et assurer le transport des messages avec SOAP, nous
devons :
o Faire appel à WSDL pour décrire les services web
o Faire appel à UDDI pour découvrir les services web
Spring Boot ARCHITECTURE & DÉVELOPPEMENT WEB Préparé par : Dr. Mohammed EL BAKKALI 12
WSDL
Spring Boot ARCHITECTURE & DÉVELOPPEMENT WEB Préparé par : Dr. Mohammed EL BAKKALI 13
WSDL (Web Services Description Language)
o Il permet la description complète d’un service web
o Il donne la description au format XML
o Il permet de connaître :
les opérations disponibles / le format des messages
On distingue 2 approches pour développer un service Web WS-* :
o Contract firstOn
définit le contrat du service en spécifiant le WSDL et on utilise des outils pour
générer le code : des stubs.
o Contract lastOn
développe le service et on utilise des outils pour générer le WSDL.
Spring Boot ARCHITECTURE & DÉVELOPPEMENT WEB Préparé par : Dr. Mohammed EL BAKKALI 14
Structure de WSDL
<!-Structure d'un WSDL -->
<definitions name="MonService"
targetNamespace="[Link]
xmlns="[Link]
<!-- Définitions abstraites -->
<types> ... </types>
<message> ... </message>
<portType> ... </portType>
<!-- Définitions concrètes -->
<binding> ... </binding>
<service> ... </service>
</definitions>
Spring Boot ARCHITECTURE & DÉVELOPPEMENT WEB Préparé par : Dr. Mohammed EL BAKKALI 15
Spring Boot ARCHITECTURE & DÉVELOPPEMENT WEB Préparé par : Dr. Mohammed EL BAKKALI 16
Exemple de WSDL
<?xml version='1.0' encoding='UTF-8’?>
<definitions xmlns="[Link] xmlns:soap="[Link]
xmlns:wsam="[Link] xmlns:tns="[Link]
xmlns:xs="[Link] xmlns:ns1="[Link]
targetNamespace="[Link] name="MeteoService" >
<!-- Les types de données au format XML schema --> <types> <xs:schema version="1.0" targetNamespace="[Link]
elementFormDefault="qualified"> <xs:complexType name="temperature"> <xs:sequence> <xs:element name="valeur" type="xs:double"/>
<xs:element name="unite" type="xs:string"/> </xs:sequence> </xs:complexType> <xs:complexType name="lieu"> <xs:sequence>
<xs:element name="ville" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="releve"> <xs:sequence>
<xs:element name="temperature" type="ns1:temperature"/>
<xs:element name="lieu" type="ns1:lieu"/>
</xs:sequence>
</xs:complexType>
<xs:element name="lieu" type="ns1:lieu"/>
<xs:element name="releve" type="ns1:releve"/> </xs:schema> </types> <!-- La description de tous les messages possibles. Un message
est défini par un ensemble de parties (une partie pour le payload et une partie par en-tête) --> <message name="releveMeteo"> <part
name="partLieu" element="ns1:lieu"/> </message> <message name="releveMeteoResponse"> <part name="partReleve" element="ns1:releve"/>
</message> <!-- Description des interfaces (indépendantes de SOAP) Une interface est composée d'un ensemble d'opérations. Chaque
opération est définie par les messages en entrée et en sortie. --> <portType name="MeteoService"> <operation name="releveMeteo">
<input wsam:Action="[Link] message="tns:releveMeteo"/> <output
wsam:Action="[Link] message="tns:releveMeteoResponse"/>
</operation> </portType> <!-- Liaison des interfaces avec le protocole SOAP --> <binding name="MeteoServicePortBinding"
type="tns:MeteoService"> <soap:binding transport="[Link] style="document"/> <operation
name="releveMeteo"> <soap:operation soapAction=""/> <input> <soap:body use="literal"/> </input> <output> <soap:body use="literal"/>
</output> </operation> </binding> <!-- Localisation du service Dans le cas d'un binding SOAP avec un transport HTTP, on trouve ici
l'URL du service. --> <service name="MeteoService"> <port name="MeteoServicePort" binding="tns:MeteoServicePortBinding">
<soap:address location="[Link] </port> </service>
</definitions>
Spring Boot ARCHITECTURE & DÉVELOPPEMENT WEB Préparé par : Dr. Mohammed EL BAKKALI 17
Exemple de WSDL
[Link]
[Link]
[Link]
Spring Boot ARCHITECTURE & DÉVELOPPEMENT WEB Préparé par : Dr. Mohammed EL BAKKALI 18
Pour utiliser et assurer le transport des messages avec SOAP, nous
devons :
o Faire appel à WSDL pour décrire les services web
o Faire appel à UDDI pour découvrir les services web
Spring Boot ARCHITECTURE & DÉVELOPPEMENT WEB Préparé par : Dr. Mohammed EL BAKKALI 19
UDDI
Spring Boot ARCHITECTURE & DÉVELOPPEMENT WEB Préparé par : Dr. Mohammed EL BAKKALI 20
UDDI (Universal Description Discovery and Integration)
o Il est un annuaire de services basé sur XML (destiné surtout aux
services Web).
o Il permet de localiser le service web recherché sur le réseau
o Il permet l'accès aux répertoires des utilisateurs potentiels de
services web.
o Il utilise XML Schema pour décrire les structures de données
o Il existe 9 shémas:
• UDDI API Schema
• UDDI Custody Schema
• UDDI Subscription Schema
• UDDI Subscription listener Schema
• UDDI Replication Schema
• UDDI Value Set Validation Schema
• UDDI Value Set Catching
• UDDI Policy
• UDDI Policy Instance Parameters
Spring Boot ARCHITECTURE & DÉVELOPPEMENT WEB Préparé par : Dr. Mohammed EL BAKKALI 21
APPLICATION
SOAP
Spring Boot ARCHITECTURE & DÉVELOPPEMENT WEB Préparé par : Dr. Mohammed EL BAKKALI 22
JAX-WS
Spring Boot ARCHITECTURE & DÉVELOPPEMENT WEB Préparé par : Dr. Mohammed EL BAKKALI 23
JAX-WS (Java API for XML Web Services)
o Il est un ensemble d'interfaces (API) de langage Java
o Il est dédié pour le développement de services web.
o Il s’appuie sur un modèle standard, basée sur des annotations
Spring Boot ARCHITECTURE & DÉVELOPPEMENT WEB Préparé par : Dr. Mohammed EL BAKKALI 24
XSD
Spring Boot ARCHITECTURE & DÉVELOPPEMENT WEB Préparé par : Dr. Mohammed EL BAKKALI 25
XSD (Xml Schema Definition)
o Il définit un schéma qui est une définition de la façon dont un
document XML peut être structuré.
o Il peut être utilisé pour vérifier qu'un document XML est valide et
suit les règles que vous avez définies dans le schéma.
Spring Boot ARCHITECTURE & DÉVELOPPEMENT WEB Préparé par : Dr. Mohammed EL BAKKALI 26
JaxB
Spring Boot ARCHITECTURE & DÉVELOPPEMENT WEB Préparé par : Dr. Mohammed EL BAKKALI 27
JaxB (Java Architecture for XML Binding)
o Il permet de convertir des objets Java en XML et vice versa.
o Il fournit un moyen rapide et pratique de sérialiser/marshaler
(écrire) des objets Java en XML et de désérialiser/démarshaler
(lire) XML en objets.
o Ceci est établi à l’aide des annotations
Exemple:
@XmlRootElement(name = "product")
public class Product {
permet de convertir un objet java "Product" en XML nommé "product »
[Link]
Spring Boot ARCHITECTURE & DÉVELOPPEMENT WEB Préparé par : Dr. Mohammed EL BAKKALI 28
Annotations JaxB
@XmlRootElement
Convertir un objet en XML
@XmlType
Définir l'ordre dans lequel les champs sont écrits dans le fichier XML
@XmlElement
Définir le nom réel de l'élément XML qui sera utilisé
@XmlAttribute
Définir que le champ id est mappé en tant qu'attribut au lieu d'un élément
@XmlAccessorType([Link])
Donner le droit de mettre des annotations aux attribus
@XmlTransient
Annoter les champs que nous ne souhaitons pas inclure dans XML
Spring Boot ARCHITECTURE & DÉVELOPPEMENT WEB Préparé par : Dr. Mohammed EL BAKKALI 29
ARCHITECTURE
Spring Boot ARCHITECTURE & DÉVELOPPEMENT WEB Préparé par : Dr. Mohammed EL BAKKALI 30
ARCHITECTURE
CLIENT SOAP SERVER JAX-WS
(Java / .Net / …)
CLIENT WEB SERVICE
1 6 2 3 4
STUB (proxy) SOAP SKELETON (proxy)
5
Spring Boot ARCHITECTURE & DÉVELOPPEMENT WEB Préparé par : Dr. Mohammed EL BAKKALI 31