1 

Les Web Services en Java

Introduction

Cet article a pour but de vous présenter comment utiliser des Web Services en java. A la fin de ce petit tutorial vous serez capable de faire appel à des Web Services via une application Web Java. Le langage Java  permet de concevoir à la fois des applications, des applets ou des sites internet (jsp). Java est un langage de programmation objet qui prend en charge tous ces concepts objets : l'héritage, le polymorphisme, la reflexion, les interfaces...

Les Web Services sont des applications modulaires basées sur Internet qui exécutent des tâches précises et qui respectent un format spécifique. Ainsi, cela permet à vos applications de faire appel à des fonctionnalités (décrites par les Web Services) à distance (soit sur le même réseau, soit sur Internet). Les protocoles existants : DCOM, RMI, CORBA, DIIOP et RPC sont progressivement abandonnés au profit des Web Services.

La définition des Web Services ne serait pas complète si l'on n'évoquait pas ses principaux standards : SOAP, WSDL et UDDI, des protocoles mis en place par Microsoft, IBM, Sun et bien d'autres. Les Web Services peuvent également servir au développement d'application distribuées et sont accessibles depuis n'importe quel type de client (WAP,Web, Applicatif, ...).

L'IDE (Environnement de Développement Intégré) utilisé pour les exemples sera SUN JAVA STUDIO CREATOR disponible sur à l'adresse suivante : http://wwws.sun.com/software/download/


1. Les Web Services

1.1. Pour quoi faire ?

Les Web Services comportent de nombreux avantages : utilisables à distance via n'importe quel type de plate-forme, ils peuvent servir au développement d'applications distribuées et sont accessibles depuis n'importe quel type de client. Les Web Services appartiennent à des applications capables de collaborer entre elles de manière transparente pour l'utilisateur.

A quelles applications se destinent les technologies des Web Services? Pourquoi les utiliser? Comment les mettre en place?

Les technologies des Web Services peuvent être appliquées à toutes sortes d'application auxquelles elles offrent de considérables avantages en comparaison aux anciennes API propriétaires, aux implémentations spécifiques à une plate-forme et à quelques autres restrictions classiques que l'on peut rencontrer (multi-plateforme, multi-langage, disponible sur Internet avec une information actualisée disponible en temps réelle, ...)

L'application des Web Services est multiple, autant dans les domaines du B2C, B2B que pour des domaines de gestion de stocks, etc...

En fait, les Web Services peuvent être utiles dans la plupart des scénarios applicatifs où la communication peut être établie sur un modèle bidirectionnel (requête/réponse). C'est néanmoins loin d'être aussi limitatif, beaucoup d'autres modèles peuvent avoir recours aux Web Services.

1.2. Les standards

Les composants logiciels des Web Services s'appuient sur plusieurs standards :

1.2.1 SOAP (Simple Object Access Protocol)

C'est un protocole à la fois simple et léger déstiné à l'échange d'informations. Il définit la structure des messages XML utilisés par les applications pour dialoguer entre elles. SOAP fait figure de pièce centrale parmis tout les protocoles évoqués.

1.2.2 WSDL (Web Service Description Language)

C'est un format de description des méthodes et des paramètres des composants invoquables par le biais des messages au format SOAP. C'est une grammaire dérivée de l'XML

1.2.3 UDDI (Universal Description, Discovery and Intégration)

C'est une spécification définissant la manière de publier et de découvrir les Web Services sur un réseau. Ainsi, lorsque l'on désire mettre à disposition un nouveau service à disposition, on crée un fichier appelé business Registery qui décrit le service en utilisant un langage dérivé de l'XML selon les spécifications de UDDI.

1.3. L'XML

L'XML (eXtended Markup Language) est à la base de tous les protocoles décrits. Le fait que les Web Services utilisent l'XML leurs procurre l'avantage d'être non-propriétaire et ainsi réellement multi-plateforme. Il est donc recommandé de posséder un minimum de bases (XML, DTD, les schémas, XSL, ...) afin de pouvoir mettre en place des Web Services réellement optimisés.



2. L'utilisation d'un Web Service

2.1. La création

L'emploi des Web Services, du fait qu'ils sont basés sur le XML, ne posent aucuns problèmes de compatibilité. Ils peuvent donc très bien être écrit dans un autre langage que JAVA. Le WSDL utilise par exemple plusieurs éléments pour définir un Web Service :

- L'élément Types fournit les définitions de types des données utilisées pour décrire les messages échangés.

- L'élément Message est une définition abstraite des données transmises, il fournit les définitions des types de données utilisées pour décrire les messages echangés.

- L'élément Opération est une description abstraite d'une action prise en charge par le service.

- L'élément Port type est une série d'opération (messages d'entrée et de sortie).

- L'élément Binding est une spécification relative au protocole et au format de données pour un type de port spécifique.

Ces éléments : Types, Message, Opération, Port type et Binding sont parmis les éléments les plus importants pour la description des Web Services

2.2. L'appel

L'UDDI définit différents annuaires qui permettent de présenter les services d'une entreprise à d'autres. Une compagnie peut donc publier un de ses Web Services qu'elle à développé dans un annuaire. C'est l'adoption de cet annuaire par les sociétés qui permettra d'accélérer les échanges commerciaux par exemples.

Vous pouvez ainsi vous même rechercher des Web Services existant afin d'accélérer votre développement. Il vous suffit d'utiliser un moteur de recherche via annuaire UDDI, par exemple :

https://uddi.ibm.com/beta/find

http://www.strikeiron.com

Les Web Services peuvent fonctionner de différentes manières (selon le choix du programmeur qu'il les a développés). Ils peuvent traiter des opérations unidirectionnelles, des opérations requêtes/réponses, des opérations sollicitations/réponses ou bien des opérations de notifications.

2.3. La communication

La communication avec les Web Services s'effectue via le protocole SOAP.

SOAP peut être utilisé :

  • pour l'appel de méthodes (SOAP RPC)
  • pour l'échange de message (SOAP Messaging)

SOAP définit la structure principale du message, dite « enveloppe » qui contient deux parties :

  • en tête (Header) : facultatif
  • le corps (Body) : obligatoire

SOAP définit aussi l'encodage pour les différents types de données qui est basé sur la technologie schéma XML du W3C. Les données peuvent être de type simple (chaîne, entier, flottant, ...) ou de type composé.


3. Cas applicatif

3.1. Description du cas

Une fois que vous avez trouvé le contrat WSDL du Web Service que vous souhaitez utiliser, vous pouvez l'ouvrir via un navigateur afin de visualiser sa structure XML.

Voici quelques exemples des Web Services utilisés lors des prochains exemples. Il faut tout d'abord que vous ajoutiez un Web Service via votre "Server Navigator" de l'IDE.

- Le Web Service suivant permet d'obtenir la température en Fahrenheit à partir d'un code postal Américain : http://www.xmethods.net/sd/2001/TemperatureService.wsdl

- Ce Web Service permet de convertir la température selon les différentes unités : http://www.webservicex.net/ConvertTemperature.asmx?WSDL

Lorsque vous effectuez l'ajout d'un Web Service, celui-ci est ajouté en bas de page JSP dans l'IDE.

3.2. Utilisation

Voici un exemple de la page JSP appellant les deux Web Services :

Le premier permet de retourner, grâce au code postal américain, la température actuel de la ville. Ce Web Service renvoie une température en degré Fahrenheit. Il faut donc en utiliser un deuxième afin de convertir les températures selon les différentes mesures appliquées, ici on utilisera la conversion degré Fahrenheit en degré Celsuis.

Entrez une valeur d'un code postal Américain (ex : 23320 : Cheasepeake)

Lorsque vous cliquez sur le premier bouton, l'appel au premier Web Service est fait :

Quand vous cliquez sur le deuxième bouton, l'appel au deuxième Web Service est fait :

3.3. Explication

Il est possible de faire communiquer les Web Services autant avec une application form qu'une simple page Web. Dans l'exemple ci-dessus c'est une page JSP qui dialogue avec les 2 Web Services cités.

Pour utiliser un Web Service il faut utiliser l'instance créée lors de l'ajout de celui-ci au projet. Ensuite vous pourrez appeler ses méthodes selon vos souhaits.

Voici le code d'appel du Web Service "temperatureServiceClient1" :

Voici le code d'appel du Web Service "convertTemperaturClient1" :

Conclusion

Les Web Services offrent de nombreuses fonctionnalités et une réelle souplesse d'utilisation. Ils vous permettront d'accélérer votre développement.

Dans cet article, nous avons simplement vu comment rechercher et utiliser des Web Services existants publiés sur Internet ou même sur votre réseau d'entreprise.

Vous pouvez cependant vous intéresser à la création de vos propres Web Services personnalisés et vous procurrer les livres suivants :

"Java Web Services", O'REILLY

"Services Web avec SOAP, WSDL, UDDI, ebXML...", EYROLLES


1 

Retrouvez ci-dessous les autres sections du Laboratoire Sun
Evènements
Java Sun Net Talk LIVE CHAT le 2 Avril à 16h303/29/08
SolarisSunDécouvrez les nouveaux Sun Fire sous Intel10/11/07
JavaValtech Days10/9/07
JavaApacheCon du 1 au 4 mai à Amsterdam2/13/07

Exemples de code
JavaManipuler les looks and feel (lister et affecter)10/15/07
JavaFaire sa propre injection de dépendance avec les annotations5/9/06
JavaSplash screen avec progress Bar5/5/06
JavaFaire un splash screen en swing5/5/06

Actualités
SunSun Microsystems en forme !8/4/08
SunOpenDS un ldap 100% java7/24/08
SunSun et Fujitsu annoncent un nouveau Sparc647/16/08
SunVisualVM, un outil de surveillance des applications Java7/10/08
SunSun, Microsoft et Cisco contre le DNS Cache Poisoning7/9/08

Tips du laboratoire
EclipseVisual Editor avec Eclipse Europa, c'est possible3/28/08
EclipseGérer les projets dans un workspace.10/16/07
JavaManager votre server d'application avec Eclipse4/21/07
JavaVue des sub-packages avec Eclipse4/21/07
JavaGlisser-déposer avec Eclipse4/21/07

Laboratoire SUPINFO des technologies Sun
labo-sun@supinfo.com


Conditions d'utilisation et © Copyright SUPINFO International University
23, rue de Château Landon - 75010 PARIS - Tél : +33 (0) 153359700 Fax : +33 (0) 153359701
Respect de la vie privée