chapitre 5 web services le nouveau standard jax ws 2 0 n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Chapitre 5 Web Services : Le nouveau standard JAX-WS 2.0 PowerPoint Presentation
Download Presentation
Chapitre 5 Web Services : Le nouveau standard JAX-WS 2.0

Loading in 2 Seconds...

play fullscreen
1 / 42

Chapitre 5 Web Services : Le nouveau standard JAX-WS 2.0 - PowerPoint PPT Presentation


  • 115 Views
  • Uploaded on

Chapitre 5 Web Services : Le nouveau standard JAX-WS 2.0. Sommaire. 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. Définition de l’architecture SOA.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Chapitre 5 Web Services : Le nouveau standard JAX-WS 2.0' - argyle


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
sommaire
Sommaire
  • 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
d finition de l architecture soa
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)

Service-

oriented

architectures

Web

client

Client/

server

On-line

midrange

Batch

1970s

1980s

1990s

2000s

2010s

soa int gration on interop rabilit
SOA : Intégration on interopérabilité ?

Solution à fort couplage

Architecture orientée Services

Vous

L’autre

Programming

Language

Programming

Language

Database

Database

Agreements

Object Model

Object Model

Schema

Operating

System

Operating

System

Application

Server

Application

Server

l architecture orient e service
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 »] :

  • Frontière explicite
  • Services Autonomes
  • Les services partagent les schémas, les contrats mais pas les classes
  • La compatibilité des services est négociée sur la base de stratégies
services
Services

Message1

Message2

Service

Logic

State

Contracts

l id e principale de la soa
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.
qu est ce qu un web service
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.
standards des 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)
soap simple object access protocol
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,…)
structure d un message soap
Structure d’un message SOAP

SAOP Header

(Optional)

SAOP Body

Message SOAP =

Enveloppe ( Header + Body )

wsdl web services description language
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
contrat wsdl
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
uddi universal description discovery and integration
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é
composition du r pertoire uddi
Composition du répertoire UDDI
  • Chaque entrée du répertoire UDDI est constituée de trois parties :
    • Les "pages blanches" décrivent l'entreprise qui offre le service (nom, adresse, contacts,…)
    • Les "pages jaunes" comportent les catégories industrielles
    • Les "pages vertes" : contiennent une description technique de l’interface
r capitulatif soap wsdl et uddi
Récapitulatif SOAP, WSDL, et UDDI

IBM, MICROSOFT ARIBA COMPAQ HP…

C’est un protocole de RPC pour l’invocation des méthodes d'objets distants

SOAP

Standard W3C

SOAP 1.2

C’est le langage de description des services Web

IBM MICROSOFTARIBA

Standard W3C

WSDL 2.0

WSDL

Entièrement basés sur XML

C’est une technologie d'annuaire

UDDI

Recommandation OASIS

UDDI 3.0

ARIBA

sc nario de d roulement
Scénario de déroulement

1

Enregistrement du service

Annuaire

UDDI

Service

Web

Client

SOAP

SOAP

2

Recherche d’un service

Interface

WSDL

HTTP

3

Récupération de l’interface du service

proxy

SOAP

4

Utilisation du service

exemple de message soap
Exemple de message SOAP

POST /StockQuote HTTP/1.1

Host: www.stockquoteserver.com

Content-Type: text/xml; charset="utf-8"

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>

Propre au portage sur HTTP

exemple de message de r ponse
Exemple de message de réponse

HTTP/1.1 200 OK

Content-Type: text/xml; charset="utf-8"

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>

Propre au portage sur HTTP

analyse de l exemple
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
soap header
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>

soap body
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.
encodage
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
soap avec http
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 content-type text/xml
    • Définition d’un header http : SOAPAction
    • Utilisation des codes http (2xx, 4xx, 5xx)
pr sentation
Présentation

Une description WSDL :

  • 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.
  • 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.
balises
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
architecture serveur
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.
architecture serveur1
Architecture (Serveur)

La Servlet AxisServlet reçoit et renvoie les messages SOAP et transmet aux objets Java correspondant

Les Objets Java effectuent les services. Ils sont des objets Java classiques.

AxisServlet

SOAP/HTTP

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).

d veloppement d un web service
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;

}

}

d ploiement un web service
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

d ploiement un web service1
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
le client partir du wsdl
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
obtention du wsdl de l exemple
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
java api 4 xml based 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
exemple de service
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"));

sc nario de g n ration d art facts
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