1 / 13

Les technologies XML

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.

taber
Télécharger la présentation

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. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Les technologies XML Cours 3 : Les Web Services – Implémentation – JAX-WS Février 2011 - Version 1.0 -

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

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

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

  5. 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é.

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

  7. Web Services • Description des annotations JSR 181 (WS MetaData)

  8. Web Services • Description des annotations JSR 181 (WS MetaData)

  9. Web Services • Description des annotations JSR 224 (JAX-WS 2.0)

  10. 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 { … }

  11. 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 { .. }

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

  13. Web Services • Référence • https://jax-ws.dev.java.net/ • https://glassfish.dev.java.net/ • https://metro.dev.java.net/

More Related