Web Services 33

publicité
Chapitre 5
Web Services :
Le nouveau standard JAX-WS 2.0
Sommaire
Développement de Web services
 Revue des standards des Web services
 Le protocole SOAP
 Le langage WSDL
 Le service d’annuaires UDDI
 Développement classique avec Apache Axis
 Développement avec JAX-WS 2.0
M.Romdhani, INSAT, Octobre 2009
2
Développement de Web services
Définition de l’architecture SOA
 « Il s’agit d’un modèle pour organiser et
architecturer les services offerts par un
organisme » (Définition de l’OASIS)
Serviceoriented
architectures
Client/
server
Web
client
On-line
midrange
Batch
1970s
1980s
M.Romdhani, INSAT, Octobre 2009
1990s
2000s
2010s
3
Développement de Web services
SOA : Intégration on interopérabilité ?
Solution à fort couplage Architecture orientée Services
L’autre
Vous
Programming
Language
Database
Agreements
Object Model
Programming
Language
Database
Object Model
Schema
Operating
System
Operating
System
Application
Server
M.Romdhani, INSAT, Octobre 2009
Application
Server
4
Développement de Web services
L'architecture orientée service
« Service-oriented architectures are an approach to designing distributed
computing systems that considers software resources as
services available on a network. »
Les 4 principes fondamentaux de SOA
[Définition de microsoft « Don Box »] :
1. Frontière explicite
2. Services Autonomes
3. Les services partagent les schémas, les contrats mais pas les
classes
4. La compatibilité des services est négociée sur la base de
stratégies
M.Romdhani, INSAT, Octobre 2009
5
Développement de Web services
Services
Service
Message2
Message1
Logic
State
Contracts
M.Romdhani, INSAT, Octobre 2009
6
Développement de Web services
L‘idée principale de la SOA
 Messages
 Flux de données non encapsulées
 Pas de suppositions sur l‘implémentation
 Contrats: Frontières explicites
 Les types de données et les sémantiques y sont explicités
 Les types de données doivent permettre l‘évolution
 Les paramètres techniques de sécurité, de transactions pour les
Services sont négociables dynamiquement
 Processus autonomes.
 « Building Blocks », et non pas des Silos.
M.Romdhani, INSAT, Octobre 2009
7
Développement de Web services
Revue des standards des Web services
M.Romdhani, INSAT, Octobre 2009
8
Développement de Web services
Qu’est ce qu’un Web Service ?
 Les Web Services sont des services offerts via le web
 Un service Web est un ensemble de protocoles et de normes utilisés
pour échanger des données entre les applications
 Web Service = HTTP + XML
 Les prolifération des Services Web correspond à un nouveau
standard d’architectures applicatives qui est le SOA (Service
Oriented Architecture)
 Un exemple : un client demande le prix d’un article en envoyant un
message sur le web. Ce message contient la référence de l’article.
Le Web Service va recevoir la référence, effectuer le traitement du
service et renvoyer le prix au client via un autre message.
M.Romdhani, INSAT, Octobre 2009
9
Développement de Web services
Standards des Web services
Les Standards décrivent :
 Qu’est ce qui circule “sur le fil” ?
 Formats et protocoles (SOAP)
 Qu’est ce qui décrit ce qui circule “sur le fil” ?
 Langage de Description (WSDL)
 Qu’est ce qui nous permet de trouver ces
descriptions ?
 Référentiel (UDDI)
M.Romdhani, INSAT, Octobre 2009
10
Développement de Web services
SOAP (Simple Object Access Protocol)
 Standard W3C (Initiative IBM et Microsoft)
 C’est un protocole de RPC pour l’invocation des méthodes
d'objets distants
 Basé entièrement sur XML
 C’est une spécification non propriétaire
 Prend en charge :
 divers protocoles de transport (HTTP, SMTP,…)
 différents formats (MIME,…)
M.Romdhani, INSAT, Octobre 2009
11
Développement de Web services
Structure d’un message SOAP
Message SOAP
=
Enveloppe
( Header + Body )
SAOP Header
(Optional)
SAOP Body
M.Romdhani, INSAT, Octobre 2009
12
Développement de Web services
WSDL (Web Services Description Language)
 Standard W3C
 Langage de description des services Web
 Basé entièrement sur XML (Schéma XML)
 Définition de l’interface, de l’URL et du port du Web Service
M.Romdhani, INSAT, Octobre 2009
13
Développement de Web services
Contrat WSDL
 Constitué par :
 Un composant d’interface :
-
Format de transmission des messages
Protocole du Service Web
Opérations de transmission des messages
 Un composant
d’implémentation : le point
d’accès (URL) du Service Web
M.Romdhani, INSAT, Octobre 2009
14
Développement de Web services
UDDI (Universal Description Discovery
and Integration)
 Les Services Web n’ont un sens que si des
utilisateurs potentiels peuvent les localiser
 C’est une technologie d'annuaire
 Recommandation OASIS (Consortium travaillant sur la
standardisation des technologies Web Services)
 Référentiel défini lui-même en WSDL
 Référentiel Public / Privé
M.Romdhani, INSAT, Octobre 2009
15
Développement de Web services
UDDI : comment ça marche ?
M.Romdhani, INSAT, Octobre 2009
16
Développement de Web services
Composition du répertoire UDDI
 Chaque entrée du répertoire UDDI est constituée
de trois parties :
1. Les "pages blanches" décrivent l'entreprise qui offre le
service (nom, adresse, contacts,…)
2. Les "pages jaunes" comportent les catégories industrielles
3. Les "pages vertes" : contiennent une description technique
de l’interface
M.Romdhani, INSAT, Octobre 2009
17
Développement de Web services
Récapitulatif SOAP, WSDL, et UDDI
WSDL
C’est le langage
de description des
services Web
UDDI
C’est une
technologie
d'annuaire
M.Romdhani, INSAT, Octobre 2009
Standard W3C
SOAP 1.2
Standard W3C
WSDL 2.0
Recommandation
OASIS
UDDI 3.0
IBM,
MICROSOFT
ARIBA
COMPAQ HP…
Entièrement basés sur XML
SOAP
C’est un protocole
de RPC pour
l’invocation des
méthodes d'objets
distants
IBM
MICROSOFT
ARIBA
ARIBA
18
Développement de Web services
Scénario de déroulement
1
Enregistrement du service
Annuaire
UDDI
SOAP
2
SOAP
Recherche d’un service
Service
Web
Client
HTTP
3
Interface
WSDL
Récupération de l’interface du service
SOAP
proxy
4 Utilisation du service
M.Romdhani, INSAT, Octobre 2009
19
Développement de Web services
Le protocole SOAP
M.Romdhani, INSAT, Octobre 2009
20
Développement de Web services
Exemple de message SOAP
POST /StockQuote HTTP/1.1
Host: www.stockquoteserver.com
Content-Type: text/xml; charset="utf-8"
Propre au portage sur HTTP
Content-Length: nnnn
SOAPAction: "Some-URI"
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<m:GetLastTradePrice xmlns:m="Some-URI">
<symbol>DIS</symbol>
</m:GetLastTradePrice>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
M.Romdhani, INSAT, Octobre 2009
21
Développement de Web services
Exemple de message de réponse
HTTP/1.1 200 OK
Content-Type: text/xml; charset="utf-8"
Propre au portage sur HTTP
Content-Length: nnnn
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
<SOAP-ENV:Body>
<m:GetLastTradePriceResponse xmlns:m="Some-URI">
<Price>34.5</Price>
</m:GetLastTradePriceResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
M.Romdhani, INSAT, Octobre 2009
22
Développement de Web services
Analyse de l’exemple
 Des Balises Utilisateur
 GetLastTradePriceResponse
 Symbol
 Price
 Un Namespace Utilisateur
 xmlns:m="Some-URI"
 Des Balises SOAP
 Enveloppe
 Body
 Un Namespace SOAP
 xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
 Des informations dans la partie HTTP
M.Romdhani, INSAT, Octobre 2009
23
Développement de Web services
SOAP Header
Mécanisme d’extension du protocol SOAP
 La balise Header est optionnelle
 Si la balise Header est présente, elle doit être le premier fils de la balise
Envelope
 La balise Header contient des entrées
 Une entrée est n’importe quelle balise incluse dans un namespace
Exemple de SOAP HEADER
<SOAP-ENV:Header>
<t:Transaction xmlns:t="some-URI">
5
</t:Transaction>
</SOAP-ENV:Header>
M.Romdhani, INSAT, Octobre 2009
24
Développement de Web services
SOAP Body
Le Body contient le message à échanger
 La balise Body est obligatoire
 La balise Body doit être le premier fils de la balise Envelope (ou le deuxième si il
existe une balise Header)
 La balise Body contient des entrées
 Une entrée est n’importe quelle balise incluse optionnellement dans un
namespace
 Une entrée peut être une Fault.
M.Romdhani, INSAT, Octobre 2009
25
Développement de Web services
Encodage
 Un message SOAP contient des données typées. Il faut donc définir un
moyen d’encoder ces données.
 Vocabulaire SOAP :
 Value (valeur d’une donnée)
 Simple value (string, integers,etc)
 Compound value (array, struct, …)
 Type (d’une value)
 Simple Type
 Compound Type
M.Romdhani, INSAT, Octobre 2009
26
Développement de Web services
SOAP avec HTTP
 SOAP peut être facilement porté sur Http
 Convient au mode Request/Response de Http
 Le message SOAP est mis dans une requête POST avec un contenttype text/xml
 Définition d’un header http : SOAPAction
 Utilisation des codes http (2xx, 4xx, 5xx)
M.Romdhani, INSAT, Octobre 2009
27
Développement de Web services
Le langage WSDL
M.Romdhani, INSAT, Octobre 2009
28
Développement de Web services
Présentation
Une description WSDL :
1.
Décrit le type d’un service web (méthodes, types des paramètres)
Cette description peut être comparée à la description IDL CORBA, elle
peut servir à générer automatiquement des amorces.
2.
Décrit les aspects techniques d’implantation d’un service web (quel est
le protocole utilisé, quel est le l’adresse du service)
Cette description sert à se connecter concrètement à un service web.
M.Romdhani, INSAT, Octobre 2009
29
Développement de Web services
Balises
 Une description WSDL est un document XML qui
commence par la balise definition et contient les
balises suivantes :
 types: cette balise décrit les types utilisés
 message: cette balise décrit la structure d’un message échangé
 portType: cette balise décrit un ensemble d’opérations (interface d’un
service web)
 operation: cette balise décrit une opération réalisée par le service web. Une opération
reçoit des messages et envois des messages.
 binding: cette balise décrit le lien entre un protocole (http) et un
portType.
 service: cette balise décrit un service comme un ensemble de ports.
 port: cette balise décrit un port au travers duquel il est possible d’accéder à un
ensemble d’opérations. Un port référence un Binding
M.Romdhani, INSAT, Octobre 2009
30
Développement de Web services
Développer des Web services
avec Apache Axis
M.Romdhani, INSAT, Octobre 2009
31
Développement de Web services
Architecture (Serveur)
 Axis fournit une Servlet (AxisServlet) qui reçoit des message
SOAP sur http et qui transforme l’appel en un appel de méthode
classique Java
 Développer un Web Service revient alors à développer un objet
Java et à enregistrer ses méthodes auprès de la Servlet
AxisServlet.
 Les clients envoient alors leurs messages SOAP sur http à
AxisServlet.
 Pour SMTP les clients envoient leurs messages par mail à un
démon. Le démon reçoit ces messages et les renvoie sur http à
AxisServlet.
M.Romdhani, INSAT, Octobre 2009
32
Développement de Web services
Architecture (Serveur)
La Servlet AxisServlet reçoit et
renvoie les messages SOAP et
transmet aux objets Java
correspondant
SOAP/HTTP
Les Objets Java effectuent
les services. Ils sont des
objets Java classiques.
AxisServlet
Moteur de Servlet
Le client envoie
des messages
SOAP/HTTP
JVM
Objets Java et Servlet sont dans la
même JVM (pas de répartition).
M.Romdhani, INSAT, Octobre 2009
33
Développement de Web services
Développement d’un Web Service
Développer une classe Java
public class MyFirstWebService {
public final String BOOK1 = "La méthode";
public final String BOOK2 = "Le Macroscope";
public int getPrice(String bookTitle) {
if (bookTitle.compareTo(BOOK1)==0) {
return 15;
}
else if (bookTitle.compareTo(BOOK2)==0) {
return 20;
}
else return 300;
}
}
M.Romdhani, INSAT, Octobre 2009
34
Développement de Web services
Déploiement un Web Service
Elaborer un descripteur SOAP de votre classe
<deployment xmlns="http://xml.apache.org/axis/wsdd/"
xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
<service name="MyFirstWebService" provider="java:RPC">
<parameter name="className" value="MyFirstWebService"/>
<parameter name="allowedMethods" value="*"/>
</service>
</deployment>
Exporter le descripteur
java org.apache.axis.client.AdminClient deploy.wsdd
M.Romdhani, INSAT, Octobre 2009
35
Développement de Web services
Déploiement un Web Service
 Le fichier jws sont les équivalents des jsp pour les Web Service.
 Construction d’un fichier jws à partir d’une classe java:
 Copy MyFirstWebService.java /…/MyFirstWebService.jws
M.Romdhani, INSAT, Octobre 2009
36
Développement de Web services
Le Client à partir du WSDL
 Génération d’un ensemble de classes facilitant l’envoi de message SOAP:
 java org.apache.axis.wsdl.WSDL2Java file.wsdl
 Classes générées:
 Pour les Type
 Pour les PortType
 Pour les Binding
 Pour les Port
 Pour les Service
M.Romdhani, INSAT, Octobre 2009
37
Développement de Web services
Obtention du WSDL de l’exemple
 Sous axis, dans un navigateur, mettre l’adresse du Web Service suivie
de ?WSDL
 http://localhost:8080/axis/jwspages/MyFirstWebService.jws?WSDL
M.Romdhani, INSAT, Octobre 2009
38
Développement de Web services
Développement avec JAX-WS 2.0
M.Romdhani, INSAT, Octobre 2009
39
Développement de Web services
Java API 4 XML-based Web Services
 Successeur de JAX-RPC.
 Actuellement en version 2.0
 Permet de créer des services Web
 dans le conteneur Web
 dans le conteneur EJB
 Supporte les injections de dépendances
M.Romdhani, INSAT, Octobre 2009
40
Développement de Web services
Exemple de Service
@javax.ejb.Stateless () // à supprimer si le service est créé dans un WAR
@javax.jws.WebService ()
public class SubjectInfo {
@javax.jws.WebMethod
public String getSubjectInfo (String subjectID) {
...
}
@javax.jws.WebMethod
public String [] getAllSubjects () {
...
}
}
// Référencement du service à partir d'un client
@WebServiceRef (wsdlLocation="http://xxx:8080/SubjectInfoService/SubjectInfo?wsdl")
static SubjectInfoService service;
// Recherche du "port"
SubjectInfo subjectInfo = service.getSubjectInfoPort ();
System.out.println(subjectInfo.getSubjectInfo ("S07"));
M.Romdhani, INSAT, Octobre 2009
41
Développement de Web services
Scénario de génération d'artéfacts
 Créer le service et le compiler
 Utiliser wsgen pour générer les artifacts
 Assembler dans un WAR/JAR et le déployer
 Utiliser wsimport pour générer les artifacts
 Coder le client
 Exécuter le client
M.Romdhani, INSAT, Octobre 2009
42
Téléchargement