Les technologies xml
This presentation is the property of its rightful owner.
Sponsored Links
1 / 13

Les technologies XML PowerPoint PPT Presentation


  • 44 Views
  • Uploaded on
  • Presentation posted in: General

Les technologies XML. Cours 3 : Les Web Services – Implémentation – JAX-WS Février 2011 - Version 1.0 -. Web Services. JAX-WS remplace JAX-RPC à partir de JEE 5.

Download Presentation

Les technologies XML

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


Les technologies xml

Les technologies XML

Cours 3 : Les Web Services – Implémentation – JAX-WS

Février 2011

- Version 1.0 -


Web services

Web Services

  • JAX-WS remplace JAX-RPC à partir de JEE 5.

    Ce changement de nom reflète la changement de philosophie des développements Web Services en Java, passant d’un modèle « RPC » à un modèle « document »

  • A partir de J2SE 5, le langage intègre des annotations permettant de simplifier le développement de Web Services.

  • Ces annotations correspondent à la JSR 224 et à la JSR 181.


Web services1

Web Services

  • La version intégré à JEE 5 est JAX-WS 2.0

  • L’implémentation de référence de la norme est un sous-projet OpenSource qui fait partie du projet « Metro ».

  • Metro lui-même est un sous projet de GlassFish le serveur d’application OpenSource de Sun.


Webservices encodage des messages

WebServices – Encodage des messages

  • Messages de type RPC

  • Messages XML destinés à représenter, indépendamment du langage de programmation, l’invocation d’un service, ainsi que son résultat éventuel. La structure générale de la requête et de la réponse est imposée par la spécification. Cette dernière aborde aussi les problèmes d’encodage des paramètres, notamment des tableaux et des graphes d’objets : RPC / encoded. Ce modèle de messages est le plus simple des deux, mais aussi le plus contraignant.


Webservices encodage des messages1

WebServices – Encodage des messages

  • Messages de type Document

  • La spécification SOAP n’impose, dans ce cas, aucune contrainte sur la structure de ces messages. Le sens des données XML véhiculées est laissé à l’appréciation des applications participant à l’échange. Ce modèle de messages offre plus de liberté, mais peut être à l’origine de problèmes d’interopérabilité.


Webservices encodage des messages2

WebServices – Encodage des messages

  • Notez bien que dans les 2 cas, la structure des messages XML échangés est complètement décrite par le document WSDL. Dans le 1er cas, le serveur est obligé de respecter certaines règles. Dans le 2ème cas, il peut décrire n’importe quelle structure XML.

  • Le modèle de messages de type RPC est tombé en désuétude :

  • Dans SOAP 1.2, seul le support du modèle Document est obligatoire ;

  • On constate une évolution similaire en Java avec la dernière API : JAX-WS 2.0 ;

  • Quant à .Net, il préconise depuis le début l’utilisation des messages de type Document.

  • Gare donc aux problèmes d’interopérabilité entre les anciennes applications qui s’appuient sur le modèle RPC et certains nouveaux outils qui ne supportent que le modèle Document.

  • Pour invoquer un Web Service, les plates-formes s’appuient donc aujourd’hui sur le modèle Document. Mais, comme la structure des messages XML est libre, comment par exemple repérer dans le document XML le nom du service invoqué ?

  • En fait, pour résoudre ce problème, les plates-formes utilisent généralement le modèle Document/literal wrapped. Ce modèle impose quelques contraintes. Notamment le fait que la balise racine du message XML transporté corresponde au nom de l’opération invoquée.


Web services2

Web Services

  • Description des annotations JSR 181 (WS MetaData)


Web services3

Web Services

  • Description des annotations JSR 181 (WS MetaData)


Web services4

Web Services

  • Description des annotations JSR 224 (JAX-WS 2.0)


Web services serveurs

Web Services - Serveurs

  • Interface

    @WebService(name="Convertisseur", serviceName="ConvertisseurService", targetNamespace="peut.etre.different")

    ….

    }

  • Implementation

    WebService(endpointInterface="fr.lgr.exemple.ws.Convertisseur")

    publicclass ConvertisseurImpl implements Convertisseur {

    ….

    @WebMethod

    publicdouble getEuro(double franc) throws ConvertisseurException {

    ….

    }

    }

  • Exception

    @WebFault publicclass ConvertisseurException extends RemoteException {

    }


Web services client

Web Services - Client

  • Les classes clientes sont générées à l’aide d’un outil.

  • Exemple :

    @WebServiceClient(name = "ConvertisseurImplService", targetNamespace = "http://impl.ws.exemple.lgr.fr/", wsdlLocation = "http://localhost:9080/convertisseur-web/mesWebServices/Convertisseur?wsdl")

    publicclass ConvertisseurImplService

    extends Service

    {

    ..

    }


Web services client1

Web Services - Client

@WebService(name = "Convertisseur", targetNamespace = "peut.etre.different")

@XmlSeeAlso({

ObjectFactory.class

})

publicinterface Convertisseur {

/**

*

* @param arg0

* @return

* returns double

*/

@WebMethod

@WebResult(targetNamespace = "")

@RequestWrapper(localName = "getEuro", targetNamespace = "peut.etre.different", className = "fr.lgr.exemple.ws.client.generated.GetEuro")

@ResponseWrapper(localName = "getEuroResponse", targetNamespace = "peut.etre.different", className = "fr.lgr.exemple.ws.client.generated.GetEuroResponse")

publicdouble getEuro(

@WebParam(name = "arg0", targetNamespace = "")

double arg0);


Web services5

Web Services

  • Référence

    • https://jax-ws.dev.java.net/

    • https://glassfish.dev.java.net/

    • https://metro.dev.java.net/


  • Login