10
Institut National des Sciences Appliquées et de Technologie TP1 : Les Services Web avec JAX-WS Dr. Lilia Sfaxi Objectifs du TP : Création de services web avec JAX-WS et l’IDE Netbeans LA 3 SIL – 2013/2014

Tp1 - WS avec JAXWS

Embed Size (px)

DESCRIPTION

Visitez http://liliasfaxi.wix.com/liliasfaxi

Citation preview

Page 1: Tp1 - WS avec JAXWS

I n s t i t u t N a t i o n a l d e s S c i e n c e s A p p l i q u é e s e t d e T e c h n o l o g i e

TP1 : Les Services Web avec JAX-WS Dr. Lilia Sfaxi

Objectifs du TP : Création de services web avec JAX-WS et l’IDE Netbeans

LA 3 SIL – 2013/2014

Page 2: Tp1 - WS avec JAXWS

2 TP1 : Les Services Web avec JAX-WS

Architecture  Orientée  Services

I. Les Services Web avec JAX-WS

I.1. Présentation de JAX-WS

JAX-WS1 (Java API for XML Web Services) est une API permettant de développer des services web étendus en utilisant le protocole SOAP et le langage WSDL via la plateforme de développement JAVA.

Le développement de Services Web avec JAX-WS est basé sur des POJO (Plain Old Java Object). Les fonctionnalités de base pour le développement de Web Services avec JAX-WS requièrent simplement l’utilisation d’annotations Java.

La figure suivante2 montre l’architecture d’un système utilisant JAX-WS.

Il existe deux façons pour développer un service web avec JAX-WS :

1. Approche Top-Down (Contract First) : permet, à partir d’un document WSDL, de générer les squelettes des différentes classes Java en utilisant l’outil wsimport, de compléter leur implémentation, puis de les compiler, déployer et tester.

1 JAX-WS: http://jax-ws.java.net/

2 Figure extraite du cours Développer des Services Web Étendus avec Java : JAX-WS, par Mickaël BARON.

Page 3: Tp1 - WS avec JAXWS

TP1 : Les Services Web avec JAX-WS 3

Architecture  Orientée  Services

2. Approche Bottom-Up (Code First) : permet de créer et d’annoter un POJO, de le compiler, déployer et tester, puis de générer automatiquement le document WSDL.

I.2. Installation et Démarrage

Pour les besoins de ce TP, on vous fournit les outils suivants3 (à installer dans l’ordre):

-­‐ jdk-7u9-windows-i586.exe : Pour l’installation de JDK 7. -­‐ java_ee_sdk-6u4-windows.exe : Kit de développement de Java EE6. Contient,

principalement, le serveur d’application Glassfish3, dans lequel nous allons déployer notre service web.

-­‐ netbeans-7.2.1-ml-javaee-windows.exe : C’est l’environnement de développement Netbeans, pour JavaEE.

-­‐ soapUI-x32-4.5.1.exe : outil de test léger pour les services web.

I.2.1. Installation de Java EE SDK

Pour installer Java EE SDK, il faut que JDK soit installé au préalable (version 1.6 au minimum). Il est recommandé de suivre les instructions suivantes :

-­‐ Configurer le serveur Glassfish comme suit (configuration standard) : o Login : admin o Mot de passe : (vide)

-­‐ Accepter les valeurs des ports par défaut : Admin Port (4848) et Http Port (8080)

Par défaut, votre serveur d’application sera installé directement sous : C:\glassfish3

I.2.2. Installation de Netbeans IDE

Pour installer Netbeans, il est recommandé de suivre les instructions suivantes :

-­‐ A la première page d’installation, décocher la case pour l’installation de Glassfish Server.

-­‐ Continuer l’installation normalement.

I.2.3. Configuration de Netbeans avec le serveur d’application Glassfish

Pour ajouter Glassfish comme serveur dans l’environnement Netbeans, suivre les instructions suivantes :

-­‐ Démarrer NetBeans. Dans le menu Tools, cliquer sur « Servers » -­‐ Cliquer sur le bouton « Add Server » -­‐ Choisir « Glassfish Server 3+ » et cliquer sur Next -­‐ Dans le chemin d’installation, naviguer vers votre répertoire d’installation de

Glassfish (par défaut C:\glassfish3) -­‐ Garder les informations sur le domaine identiques, et cliquer sur Finish.

3 Téléchargés à partir de http://www.oracle.com/index.html

Page 4: Tp1 - WS avec JAXWS

4 TP1 : Les Services Web avec JAX-WS

Architecture  Orientée  Services

I.2.4. Démarrer le serveur Glassfish

Pour démarrer Glassfish, aller vers :

Démarrer -> Tous les programmes -> Java EE 6 SDK -> Démarrer le serveur d’application

Vous pourrez vérifier que votre serveur est bien démarré en lançant le navigateur, et en tapant :

http://localhost:8080

La page d’accueil de Glassfish s’affichera.

II. Première Application : Helloworld

II.1. Création du service web

Comme indiqué précédemment, deux approches sont possibles pour créer un service web : une approche Bottom-Up et une approche Top-Down. Nous allons dans ce qui suit vous montrer comment réaliser ces deux approches en utilisant NetBeans et le serveur Glassfish.

II.1.1. Approche Bottom-Up (Code first)

Pour créer un service web en utilisant l’approche Bottom-Up, nous allons suivre les étapes suivantes :

1. Ouvrir NetBeans, et créer un nouveau projet de type Web, en tapant :

File -> New Project -> Java Web -> Web Application

2. Cliquer sur Next. Appeler votre projet HelloWorldService, cliquer sur Next. 3. Garder la configuration du serveur par défaut, soit GlassFish Server 3+.

Remarque : Si vous n’avez pas configuré votre serveur comme indiqué dans I.2.3. , vous ne trouverez pas de serveur dans la liste déroulante. Veillez à configurer votre serveur d’abord.

4. Ne cochez aucun des frameworks proposés, et cliquer sur Finish.

Un nouveau projet de type WebApplication sera créé. Son arborescence sera comme représenté dans la figure suivante :

Page 5: Tp1 - WS avec JAXWS

TP1 : Les Services Web avec JAX-WS 5

Architecture  Orientée  Services

5. Sous le répertoire Source Packages, faire un clic-droit, et choisir New -> Java Class. Appeler votre nouvelle classe Hello et taper comme nom de package insat.soa.tp1.service

6. Taper le code suivant dans votre classe.

7. Pour déployer votre service sur le serveur Glassfish, faire un clic-droit sur le projet, et

choisir Deploy. Votre service web a bien été déployé si la console Netbeans affiche un message comme celui-ci :

8. Il est possible de visualiser le fichier WSDL correspondant à la description de votre service en tapant l’URL suivant dans votre navigateur :

Importation des annotations @WebService et @WebMethod

Indique que la classe Hello est un service web

Constructeur par défaut (obligatoire si on définti d’autres constructeurs)

Méthode représentant un port du service: permet de saisir le nom de la personne, et de retourner un message de bienvenue.

Page 6: Tp1 - WS avec JAXWS

6 TP1 : Les Services Web avec JAX-WS

Architecture  Orientée  Services

http://localhost:8080/HelloWorldService/HelloService?wsdl

Le résultat sera comme suit :

II.1.2. Approche Top-Down (Contract first)

Pour réaliser un service Web à partir d’un fichier WSDL existant, suivre les instructions suivantes :

1. Créer un nouveau projet de type Web Application, et l’appeler HelloWorldApplication2.

2. Faire un clic-droit sur le nom du projet créé, et choisir : New -> Web Service from WSDL.

3. Nommer votre service web Hello2, votre package insat.soa.tp1.service2 et taper dans la case « Select Local WSDL File or Enter WSDL URL » l’URL vers le WSDL de votre première application HelloWorldService, soit :

http://localhost:8080/HelloWorldService/HelloService?wsdl 4. Cliquer sur Finish. Modifier le contenu de la classe Hello2 de manière à implémenter

votre service. On désire que l’implémentation soit identique à celle de la classe Hello du service HelloWorldService, avec la différence qu’au lieu d’afficher « Hello <name> ! », on veut qu’elle affiche « Bonjour <name> ! » .

5. Clic-droit sur votre projet, et choisir Clean and Build.

Remarque : Il est possible que suite à cette manœuvre, la console vous affiche une erreur due à l’encodage. Le message sera comme suit :

error: unmappable character for encoding UTF-8 Pour corriger cette erreur, faites un clic-droit sur votre projet, et choisir Properties. Dans la partie Sources et dans la liste déroulante Encoding, choisir ISO-8859-1. Refaites ensuite un Clean and Build à votre application.

6. Une fois le message Build Successful affiché, déployer votre service, et visualiser son fichier WSDL en tapant :

http://localhost:8080/HelloWorldService2/Hello2Service?wsdl

Page 7: Tp1 - WS avec JAXWS

TP1 : Les Services Web avec JAX-WS 7

Architecture  Orientée  Services

Vérifier bien que ce fichier est identique au fichier WSDL du premier service.

II.2. Consommation du service web

Pour tester ou utiliser votre service web, plusieurs méthodes sont disponibles. Nous allons en montrer 3.

II.2.1. Tester le service web avec le Tester de Glassfish

Le serveur Glassfish vous fournit un outil pour tester votre service web directement sur le serveur. Pour cela, suivre les instructions suivantes :

1. Ouvrir un navigateur web et taper l’URL suivante :

http://localhost:8080/HelloWorldService/HelloService?Tester

2. La page suivante sera affichée :

3. Taper votre nom dans la case qui vous est fournie, et cliquer sur SayHello. Observer le résultat, ainsi que les requêtes et réponses SOAP générées.

4. Faites le test également pour le service HelloWorldService2. Quelle est la différence entre les deux services ?

II.2.2. Tester le service web avec soapUI

Le serveur d’application qui héberge le service peut parfois être inaccessible à l’utilisateur. On dispose donc d’autres outils pour tester notre service web. On cite par exemple l’outil soapUI4 qui est une solution de test open source et multi-plateforme, permettant de créer rapidement et facilement des tests fonctionnels, grâce à une interface graphique intuitive.

1. Installer l’outil soapui (il est inutile d’installer Hermer JMS). L’interface d’accueil a la forme suivante :

4 soapUI : www.soapui.org

Page 8: Tp1 - WS avec JAXWS

8 TP1 : Les Services Web avec JAX-WS

Architecture  Orientée  Services

2. Pour tester votre service, créer un nouveau projet en tapant : File -> New soapUI Project

3. Taper comme nom de projet HelloWorldTest et donner l’URL du fichier WSDL du service HelloWorldService. Cliquer ensuite sur OK.

4. L’arborescence de votre projet devient comme suit :

5. Double-cliquer sur Request1. La fenêtre suivante va s’ouvrir.

6. Le premier cadre représente la requête soap, et le second représentera la réponse. Pour tester le service, taper votre nom à la place du « ? » dans la balise <arg0> ?</arg0>

7. Cliquer sur la flèche et observer le résultat.

Page 9: Tp1 - WS avec JAXWS

TP1 : Les Services Web avec JAX-WS 9

Architecture  Orientée  Services

Refaites le test pour le service HelloWorldService2.

II.2.3. Consommer le service web avec une application cliente Java

Nous allons dans ce qui suit vous montrer comment consommer un service web avec une application en Java, en utilisant NetBeans.

1. Créer un nouveau projet de type : Enterprise Application Client (catégorie : JavaEE), que vous appellerez HelloWorldClient.

2. Pour définir un client au service web dans ce projet, faire un clic-droit sur le projet, et choisir : New -> Web Service Client… La fenêtre suivante va apparaître :

3. Entrer dans le champs WSDL URL, l’URL du fichier wsdl du service HelloWorldService 4. Définir comme package : insat.soa.tp1.client, et cliquer sur Finish 5. L’arborescence du projet devient alors comme suit :

6. Pour faire appel au service web, faites glisser la méthode sayHello (ci-dessus encadrée en rouge) qui se trouve dans Web Service References -> HelloService -> HelloService -> HelloPort dans le code de la classe Main.java

7. Dans la méthode main de cette classe, ajouter l’appel à cette méthode en tapant :

System.out.println(sayHello(<votre nom>)) ;

Page 10: Tp1 - WS avec JAXWS

10 TP1 : Les Services Web avec JAX-WS

Architecture  Orientée  Services

8. Exécuter votre client, et observer le résultat.

Refaites la même opération, dans le même projet client, pour le service HelloWorldService2, de manière à ce que l’affichage appelle les deux services l’un après l’autre.

III. Homework

On se propose de créer un convertisseur de monnaie du dinar vers l’euro et vice versa. Pour cela, réaliser les tâches suivantes :

1. Créer un service web ConvertisseurMonnaieService contenant deux méthodes : une méthode qui prend une valeur en dinar pour la traduire en euro, et une autre qui prend une valeur en euro pour la traduire en dinar.

2. Tester votre service web en utilisant les trois méthodes qui vous ont été montrées en TP.

Date de remise du travail : prochaine séance de TP.