X. Importer le projet Yaps - côté client▲
Le projet YAPS Pet Store est composé de deux interfaces clientes. L'une dite légère et composée d'une
interface Web (JSF) et l'autre dite lourde (Java Swing).
Comme nous l'avons vu (voir ici), le client
« léger » de type Web est déployé avec les composants du serveur de l'application Yaps.
Nous allons décrire le processus d'importation du client « lourd » (Java Swing) sous le projet de
type « Java Applications » baptisé Yaps-Client.
L'ensemble des opérations qui suivent est réalisé sous NetBeans.
LLX-A. Créer un nouveau projet▲
LLX-A-1-a. Fermer les projets▲
Vous allez créer un nouveau de groupe de projets qui sera spécifique à Yaps-Client.
Si c'est le cas, il y a d'abord lieu de fermer l'ensemble des projets actuellement ouverts sous
NetBeans.
Sélectionnez l'onglet « Projects ».
Un clic droit fait apparaître le menu contextuel. L'option « Project Group (none) » permet de fermer
l'ensemble des projets ouverts :
LLX-A-1-b. Type de projet▲
Créez un nouveau projet de type « Java Application ».
Pour cela, sélectionnez l'onglet « Project » et créez un nouveau projet via le menu « File -> New
Project ».
Le projet que vous allez créer est de type « Java > Java Application » :
Cliquez sur le bouton « Next » pour continuer.
Java Desktop Application ?
Nous aurions tendance à opter pour un projet de type « Java Desktop Application » préconisé pour le développement
d'applications de type Swing.
L'application client de Yaps Pet Store est certes de type Swing mais son fonctionnement a été
enrichi par l'apport d'un framework baptisé XSwing.
Nous avons ainsi préféré rester dans le contexte d'une application Java standard pour rester dans
l'esprit de l'application originale.
LLX-A-1-c. Nom et répertoires▲
L'écran suivant nous permet de nommer le projet, et de définir le dossier cible :
Les informations à introduire sont les suivantes :
Project Name: | Yaps-Client |
Project Folder: | C:\Projects\YapsON\Yaps-Client |
Il n'est pas nécessaire de cocher l'option « Create Main Class », car nous allons importer nos propres codes sources.
Project Folder
Le répertoire du projet est donné ici à titre d'exemple et doit correspondre au répertoire où vous avez décompressé le fichier d'archives de l'application YapsON (voir ici).
Cliquez sur le bouton « Finish » pour terminer le processus.
LLX-A-1-d. Génération du projet▲
Le projet est maintenant généré et présente l'ensemble des dossiers suivants :
Vous êtes prêt à importer le code source du projet Yaps (côté client) de l'application Yaps vers l'arborescence de NetBeans.
LLX-B. Transférer le projet sous NetBeans▲
L'opération de transfert du projet Yaps consiste à copier les fichiers de la partie serveur de l'application Yaps vers l'application YapsON.
Pour faciliter cette opération, le script Ant « yapson.xml » (décrit dans la section 3.5) automatise la copie des fichiers.
Assurez-vous d'avoir configuré le fichier « yapson.properties » tel que décrit dans la section 4.
LLX-B-1. Positionner les variables d'environnement▲
Les commandes que vous allez exécuter nécessitent de positionner les variables d'environnement pour l'exécution des tâches Ant.
Rendez-vous dans le répertoire de l'application YapsON et exécutez le fichier de commande « setenv-yaps.cmd » :
C:> cd {yapson_home}
{yapson_home}> setenv-yaps.cmd
LLX-B-2. Transférer le projet▲
À partir de la ligne de commande, exécutez la tâche Ant « transferYapsClient » chargée de transférer le projet sous NetBeans :
%YAPSON-HOME%> ant -f yapson.xml transferYapsClient
Buildfile: yapson.xml
transferYapsClient:
[echo] Transfer to NetBeans the client's side of the Yaps project
...
L'exécution du script ANT commence par demander une confirmation à l'utilisateur avant de procéder au remplacement des fichiers :
...
[input] The target source files will be overwritten by the original YAPS project. Do you
want to continue? (y, n)
y
...
La tâche Ant copie code source Java du projet :
...
[echo] === Copy Java Sources ===
[copy] Copying 82 files to c:\Projects\YapsON\Yaps-Client\src\com\yaps\petstore\client
...
Pour terminer, les librairies sont copiées dans un répertoire spécifique :
...
[echo] === Copy Libraries ===
[copy] Copying 2 files to c:\Projects\YapsON\Tools\Lib
BUILD SUCCESSFUL
NetBeans rafraîchit automatiquement le projet Yaps-Client :
LLX-B-3. Référencer les librairies▲
Comme on peut le constater, des erreurs apparaissent dans le code source du projet.
Ces erreurs sont causées par l'absence de librairies requises par le projet :
- Les classes des EJBs du projet Yaps-Server
- Les librairies utilitaires (Apache Commons, Framework XSwing)
- Les librairies JMS
- Les librairies de TopLink
Les références à ces libraires se réalisent en modifiant les propriétés du projet.
Nous allons décrire comment référencer chacune de ces libraires ainsi que la manière de créer certaines d'entre elles sous NetBeans.
LLX-B-3-a. Référencer les classes de Yaps-Server▲
L'application Yaps-Client référence un ensemble de classes définies dans le projet Yaps-Server : entity, stateless, util, exception.
Vous allez ajouter la référence à la librairie contenant les classes construites dans le cadre de l'application Yaps-Server et plus spécifiquement les classes du module Yaps-Server-ejb.
Un clic droit sur le projet Yaps-Client fait apparaître le menu contextuel dans lequel vous allez activer l'option Properties :
Dans l'écran des propriétés du projet, sélectionnez la catégorie Libraries :
Dans la partie de droite, cliquez sur le bouton « Add JAR/Folder ». La boîte de dialogue permet de sélectionner la librairie à référencer dans le projet. Dans notre cas, vous devez retrouver la librairie Yaps-Servr-ejb.jar qui se trouve sous le répertoire Build du projet Yaps-Server :
{yapson_home}\build\Yaps-Server-ejb.jar
À ce stade, les librairies référencées dans le projet sont les suivantes :
Cliquez sur « OK » afin d'ajouter la référence de la libraire au projet.
En consultant le projet, on constate la disparition des erreurs relatives au référencement des classes du projet Yaps-Server.
LLX-B-3-b. Référencer les librairies utilitaires▲
En utilisant la méthode décrite précédemment, vous allez référencer les deux librairies utilitaires transférées du projet Yaps.
Ces deux librairies sont localisées sous le répertoire suivant :
{yapson_home}\Tools\Libs\commons-lang-2.3.jar
{yapson_home}\Tools\Libs\vstm-xcore-0.5.0.jar
À ce stade, les librairies référencées dans le projet sont les suivantes:
Cliquez sur « OK » afin d'ajouter la référence des libraires au projet.
En consultant le projet, on constate la disparition des erreurs relatives au référencement des classes d'Apache Commons et du framework XSwing.
LLX-B-3-c. Référencer les librairies JMS▲
L'application cliente met en oeuvre un MessageListener JMS pour être à l'écoute de la file de messages.
Il est donc nécessaire de référencer l'ensemble des classes JMS pour permettre à l'application de se connecter au topic JMS, de souscrire aux messages et de recevoir lesdits messages.
Le fournisseur JMS utilisé par l'application YAPS est celui fourni en standard avec Sun GlassFish à savoir Sun Java System Message Queue software.
Vous allez ajouter les références aux libraires JMS livrées avec Sun GlassFish.
Sous NetBeans, sélectionnez le menu « Tools > Libraries » :
L'écran suivant montre l'ensemble des librairies définies sous NetBeans :
Vous allez ajouter une nouvelle librairie.
Cliquez sur le bouton « New Library » pour ajouter une nouvelle libraire de type « Class
Libraries » que nous allons nommer « JMS » :
Cliquez sur « OK » pour poursuivre.
À ce stade, la libraire JMS est sélectionnée.
En utilisant le bouton « Add Jar/Folder », vous allez ajouter l'ensemble des fichiers suivants localisés sous le répertoire de Sun GlassFish :
- {glassfish-home}/lib/install/applications/jmsra/imqjmsra.jar
- {glassfish-home}/lib/appserv-admin.jar
- {glassfish-home}/imq/lib/imq.jar
- {glassfish-home}/lib/appserv-rt.jar
- {glassfish-home}/lib/javaee.jar
Les boutons « Move Up » et « Move Down » permettent d'agencer l'ordre des fichiers tel que nous l'avons décrit plus haut.
Cliquez sur le bouton OK pour appliquer vos modifications.
Maintenant que la librairie JMS est prête à l'emploi, vous allez ajouter sa référence au projet Yaps-Client.
Ouvrez les propriétés du projet Yaps-Client et sélectionnez la catégorie « Libraries » :
Cliquez sur le bouton « Add Library » :
Dans la liste des librairies, sélectionnez « JMS » et cliquez sur le bouton « Add Library » :
Cliquez sur « OK ».
La librairie JMS est maintenant référencée dans le projet Yaps-Client.
NetBeans va automatiquement compiler le projet et résoudre les références manquantes.
À ce stade, plus aucune erreur ne doit être détectée dans le projet :
LLX-B-3-d. Référencer les librairies TopLink▲
Durant la phase d'exécution du l'application Yaps-Client, des objets de type Entity sont manipulés pour lesquelles les classes du framework TopLink sont requises.
Vous allez référencer les classes du framework TopLink pour éviter les erreurs d'exécution.
Ouvrez les propriétés du projet et sélectionnez la catégorie « Libraries » :
Cliquez sur le bouton "Add Library" et sélectionnez la librairie TopLink Essentials :
Cliquez sur « Add Library ».
Cliquez ensuite sur OK afin d'ajouter la référence de la libraire TopLink :
LLX-B-4. Identifier la classe principale▲
Avant de tester l'application, il vous reste à localiser la classe principale « Main Class » qui sera invoquée à l'exécution.
Ouvrez les propriétés du projet et rendez-vous sur la catégorie « Run » :
Le champ « Main Class » permet d'identifier la classe principale.
Cliquez sur le bouton « Browse » pour sélectionner la classe principale « com.yaps.petstore.client.ui.PetstoreFrame » :
Cliquez sur le bouton « Select Main Class ».
Cliquez ensuite sur OK afin de sauver vos modifications dans les propriétés du projet :
LLX-B-5. Créer le groupe de projet▲
À partir du menu « File » ou via un clic droit dans la fenêtre « Projects », NetBeans offre la capacité de créer le nouveau groupe de projet :
Sélectionnez l'option « New group ».
La fenêtre suivante permet de nommer le groupe de projet qui est dans notre cas « Yaps - Client » :
Les options par défaut indiquent que les projets en cours de chargement dans l'IDE seront automatiquement ajoutés au groupe de projet.
Cliquez sur le bouton « Create Group ».
LLX-C. Compiler le projet▲
Un clic droit sur le projet fait apparaître le menu contextuel proposant les options pour compiler le projet (« Build » ou « Clean and Build ») :
Cliquez sur l'option « Clean and Build ».
La fenêtre « Output » affiche les traces de la compilation :
En analysant en détail les traces de la compilation, on relève les messages suivants :
...
Building jar: C:\Projects\YapsON\Yaps-Client\dist\Yaps-Client.jar
...
To run this application from the command line without Ant, try:
java -jar "C:\Projects\YapsON\Yaps-Client\dist\Yaps-Client.jar"
...
BUILD SUCCESSFUL (total time: 6 seconds)
Ces traces indiquent que l'application Yaps-Client a été correctement compilée et qu'il est possible de l'exécuter à partir de la ligne de commande en invoquant la commande suivante :
java -jar {yapson_home}\Yaps-Client\dist\Yaps-Client.jar
LLX-D. Tester le projet▲
Nous allons décrire les spécificités de NetBeans en matière d'exécutions d'applications Java.
LLX-D-1. Démarrer le serveur PetStore▲
Avant de démarrer l'application Yaps-Client, il est nécessaire de démarrer le serveur « PetStore ».
Rendez-vous sur l'onglet « Services » et démarrez le serveur PetStore :
LLX-D-2. Exécuter l'application Yaps-Client▲
Sous NetBeans, l'application Yaps-Client peut-être démarrée de différentes façons :
- En appuyant sur la touche « F6 »
- À partir du menu « Run -> Run Main project » :
- À partir de l'option « Run » du menu contextuel du projet :
- À partir de la barre d'outils en cliquant sur l'icône suivant :
L'application apparaît à l'écran :
Reportez-vous au livre de référence qui décrit les fonctionnalités de l'application client.
S'abonner au topic JMS
Pour recevoir les messages postés dans la file d'attente JMS (les articles de type « reptiles »), n'oubliez pas de vous abonner au topic JMS en ouvrant la fenêtre « Watch orders » disponible sous le menu « Order ».
L'application cliente ne gère pas la notion de durabilité des messages JMS.
La barre de statut de NetBeans (en bas et à droite) affiche le statut de l'application en cours d'exécution :
Pour stopper l'exécution de l'application, un clic droit sur la barre de statut propose un menu contextuel permettant de stopper l'application :
LLX-E. Conclusion▲
Les sources du client de l'application « Yaps» ont été transférées sous NetBeans dans une arborescence conforme au format préconisé par le Java Blueprints.
Les tests que nous avons réalisés attestent que l'application cliente Swing communique correctement avec les composants déployés sur le serveur.