IX. Importer le projet Yaps - côté serveur▲
Le projet Yaps-Server est une application de type « Enterprise Applications »qui a pour fonction d'héberger la logique serveur de l'application Yaps.
Le projet Yaps-Server est composé des modules suivants :
- Module EJB : Entity, Stateless, Statefull, Message Driver Bean
- Module Web : JSF
L'ensemble des opérations qui suivent est réalisé sous NetBeans.
LLIX-A. Créer un nouveau projet▲
LLIX-A-1. Fermeture des projets▲
Vous allez créer un nouveau de groupe de projets qui sera spécifique à Yaps-Server.
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 :
LLIX-A-2. Type de projet▲
Créez un nouveau projet de type Enterprise 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 EE > Enterprise Application » :
Cliquez sur le bouton « Next » pour continuer.
LLIX-A-3. Nom et répertoires▲
L'écran suivant vous permet de nommer le projet, et de définir le dossier cible:
Les informations à introduire sont les suivantes:
Project Name: | Yaps-Server |
Project Folder: | C:\Projects\YapsON\Yaps-Server |
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 « Next » pour continuer.
LLIX-A-4. Configuration du serveur▲
Cette étape vous permet d'identifier le serveur d'applications « PetStore » (voir ici) sur lequel sera déployée l'application PetEx ainsi que les modules (EJB et Web) associés au projet:
La configuration utilisée pour le déploiement est la suivante :
Server: | Petstore |
EJB Module: | Yaps-Server-ejb |
Web Application Module: | Yaps-Server-war |
Cliquez sur le bouton « Finish » pour terminer le processus de création du projet.
LLIX-A-5. 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é serveur) de l'application Yaps vers l'arborescence de NetBeans.
LLIX-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.
LLIX-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
LLIX-B-2. Transférer le projet▲
À partir de la ligne de commande, exécutez la tâche Ant « transferYapsServer » chargée de transférer le projet sous NetBeans :
%YAPSON-HOME%> ant -f yapson.xml transferYapsServer
Buildfile: yapson.xml
transferYapsServer:
[echo] Transfer to NetBeans the server part 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 ensuite les éléments requis pour le module « Yaps-Server-ejb » :
...
[echo] >>>>>> Module Yaps-Server-ejb >>>>>>
[echo] === Copy Java Sources ===
[echo] entity ...
[copy] Copying 8 files to c:\Projects\YapsON\Yaps-Server\Yaps-Serverejb\
src\java\com\yaps\petstore\entity
[echo] exception ...
[copy] Copying 2 files to c:\Projects\YapsON\Yaps-Server\Yaps-Serverejb\
src\java\com\yaps\petstore\exception
[echo] mdb ...
[copy] Copying 2 files to c:\Projects\YapsON\Yaps-Server\Yaps-Serverejb\
src\java\com\yaps\petstore\mdb
[echo] stateless ...
[copy] Copying 9 files to c:\Projects\YapsON\Yaps-Server\Yaps-Serverejb\
src\java\com\yaps\petstore\stateless
[echo] statefull ...
[copy] Copying 3 files to c:\Projects\YapsON\Yaps-Server\Yaps-Serverejb\
src\java\com\yaps\petstore\stateful
[echo] util ...
[copy] Copying 2 files to c:\Projects\YapsON\Yaps-Server\Yaps-Serverejb\
src\java\com\yaps\petstore\util
[echo] === Copy Persistence Unit ===
[copy] Copying 1 file to c:\Projects\YapsON\Yaps-Server\Yaps-Server-ejb\src\conf
...
Ensuite, les ressources nécessaires pour le module "Yaps-Server-war" sont transférées :
...
[echo] >>>>>> Module Yaps-Server-war >>>>>>
[echo] === Copy Web Sources ===
[copy] Copying 4 files to c:\Projects\YapsON\Yaps-Server\Yaps-Serverwar\
src\java\com\yaps\petstore\jsf
[echo] === Copy Web Resources ===
[copy] Copying 39 files to c:\Projects\YapsON\Yaps-Server\Yaps-Server-war\web
[echo] === Copy Web Descriptors ===
[copy] Copying 2 files to c:\Projects\YapsON\Yaps-Server\Yaps-Server-war\web\WEB-INF
...
Pour terminer, les ressources utilitaires sont transférées (dans notre cas le fichier SQL contenant les données de test) :
...
[echo] >>>>>> Tools >>>>>>
[echo] === Copy Test data file ===
[copy] Copying 1 file to c:\Projects\Yaps-Server
BUILD SUCCESSFUL
NetBeans rafraîchit automatiquement le projet Yaps-Server :
Ouverture des modules
Il se peut que les modules du projet Yaps-Server soient fermés :
Un clic droit sur le module vous permet d'ouvrir le sous-projet dans l'IDE :
LLIX-B-3. Référencer les Web Services▲
Des erreurs apparaissent dans les modules « Yaps-Server-ejb » et « Yaps-Server-war ».
La cause de ces erreurs est que les références des Web Service des projets « BarkBank » et « PetEx » sont manquantes.
LLIX-B-3-a. Référencer DeliveryService▲
Dans le module « Yaps-Server-ejb », la classe « OrderBean » injecte la référence du Web Service « DeliveryService
» issue du projet « PetEx ».
Pour corriger l'erreur, vous allez devoir ajouter le Proxy client du Web Service.
Un clic droit sur le module « Yaps-Server-ejb » fait apparaître le menu contextuel dans vous devez sélectionner l'option « New -> Web Service Client » :
L'écran suivant vous demande de localiser le WSDL du Web Service :
Dans notre cas, vous devez fournir l'URL du WSDL relatif à l'application PetEx:
http://localhost:8080/petex/DeliveryService?WSDL
Démarrage du serveur PetStore
Assurez-vous que le serveur « Petstore » est démarré, car dans le cas contraire la tâche de création du client Web Service ne pourra localiser l'URL du WSDL.
Cliquer sur « Finish » pour générer le code du Proxy client du Web Service.
Localisation du WSDL
Nous aurions pu localiser le WSDL soit par projet ou par fichier.
Par Projet, cela aurait impliqué que le projet PetEx soit également ouvert dans l'IDE.
Par Fichier, cela nécessite de localiser le fichier WSDL généré dans le projet PetEx.
Nous avons préféré illustrer le mode URL pour simuler la situation où le Web Service serait déployé
sur un serveur distant ?
À la fin du processus de génération, le dossier « Web Service References » est ajouté au module « Yaps-Server-ejb » et contient le Proxy client du Web Service :
Code source du Proxy client
Le code source Java du Proxy client est généré sous le répertoire suivant :
{yapson_home}/Yaps-Server/Yaps-Server-ejb/build/generated/wsimport/client
NetBeans va ensuite automatiquement rafraîchir le projet et faire disparaître les erreurs de références repérées dans la classe « OrderBean ».
LLIX-B-3-b. Référencer ValidationService▲
Dans le module « Yaps-Server-war », la classe « ShoppingCartController » injecte la référence du Web Service « ValidationService » issue du projet « BarkBank ».
Pour corriger l'erreur, vous allez devoir ajouter le Proxy client du Web Service.
Un clic droit sur le module « Yaps-Server-war » fait apparaître le menu contextuel dans vous devez sélectionner l'option « New -> Web Service Client » :
L'écran suivant vous demande de localiser le WSDL du Web Service :
Dans notre cas, vous devez fournir l'URL du WSDL relatif à l'application BarkBank:
http://localhost:8080/barkbank/ValidationService?WSDL
Cliquer sur « Finish » pour générer le code du Proxy client du Web Service.
À la fin du processus de génération, le dossier « Web Service References » est ajouté au module « Yaps-Server-war » et contient le Proxy client du Web Service :
Code source du Proxy client
Le code source Java du Proxy client est généré sous le répertoire suivant :
{yapson_home}/Yaps-Server/Yaps-Server-war/build/generated/wsimport/client
NetBeans va ensuite automatiquement rafraîchir le projet et faire disparaître les erreurs de références repérées dans la classe « ShoppingCartController ».
LLIX-B-4. 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-Server :
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 ».
LLIX-C. Changer le Context Root▲
Pour être conforme au livre de référence, vous allez changer le Context Root de l'application Web qui a été défini par défaut dans le module « Yaps-Server-war ».
Le Context Root est défini dans le fichier de déploiement « sun-web.xml » qui se trouve sous :
Yaps-Server-war -> Configuration Files -> sun-web.xml
Le fichier « sun-web.xml » est le descripteur de déploiement Web pour SUN GlassFish.
Éditez ce fichier et modifiez l'entrée « Context Root » pour y placer la valeur « /petstore » :
LLIX-D. Créer le fichier de déploiement standard▲
Avant de déployer l'application, il vous reste à générer le fichier de déploiement standard « application.xml ».
Pour cela, un clic droit sur le projet « Yaps-Server » propose le menu contextuel suivant dans lequel vous allez pouvoir ajouter le descripteur de déploiement standard (Standard Deployment Descriptor) :
L'écran suivant apparaît précisant où résidera le fichier de déploiement :
Cliquez sur « Finish » pour générer le fichier de déploiement.
Le fichier « application.xml » est généré et associé au projet :
Si l'on consulte le fichier « application.xml », on constate que la section « web » du fichier met en relation l'URI du projet Web (« Yaps-Server-war.war ») avec le Context Root « /petstore » que vous avez défini précédemment.
...
<web>
<web-uri>Yaps-Server-war.war</web-uri>
<context-root>/petstore</context-root>
</web>
...
LLIX-E. 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 :
Les messages intéressants sont les suivants :
...
Building jar: C:\Projects\YapsON\Yaps-Server\Yaps-Server-ejb\dist\Yaps-Server-ejb.jar
...
Building jar: C:\Projects\YapsON\Yaps-Server\Yaps-Server-war\dist\Yaps-Server-war.war
...
Building jar: C:\Projects\YapsON\Yaps-Server\dist\Yaps-Server.ear
...
BUILD SUCCESSFUL (total time: 7 seconds)
Ces traces indiquent que les modules ont été correctement compilés de même que l'archive de type EAR.
LLIX-F. Déployer le projet▲
Vous allez maintenant procéder au déploiement du projet sous GlassFish.
Un clic droit sur le projet fait apparaître le menu contextuel proposant l'option de déploiement
(« Deploy ») :
Cliquez sur l'option « Deploy ».
Si nécessaire, NetBeans se charge de démarrer le serveur d'applications « PetStore ».
Si l'application Yaps-Server était déjà déployée sur le serveur, NetBeans se charge de la supprimer
(Undeploying) pour la remplacer par la nouvelle version.
La fenêtre « Output » trace les messages suivants :
...
deployment started : 0%
deployment finished : 100%
Deploying application in domain completed successfully
...
All operations completed successfully
post-run-deploy:
run-deploy:
BUILD SUCCESSFUL (total time: 10 seconds)
Le déploiement terminé, vous pouvez explorer le contenu de l'application Yaps-Server sur le serveur PetStore.
Rendez-vous sur l'onglet "Services" et sélectionnez le serveur "Petstore".
Le noeud « Applications -> Enterprise Applications -> Yaps-Server » affiche les ressources
et services exposés par l'application :
LLIX-G. Base de données▲
Le déploiement de l'application Yaps-Server a eu pour effet de supprimer et de créer les tables de la
base de données « petstoreDB ».
Ces opérations sont réalisées par le biais d'annotations JPA apposées dans les différentes Entity.
Dans cette section, nous allons montrer comment - au travers de NetBeans - accéder à la structure
et aux données de la base de données « petstoreDB ».
LLIX-G-1. Créer une connexion▲
La première étape consiste à créer une connexion vers la base de données.
Sélectionnez l'onglet « Services » et ensuite un clic droit sur « Databases ».
Le menu contextuel suivant apparaît offrant la possibilité de créer une nouvelle connexion :
Cliquez sur « New Connection ».
L'écran suivant apparaît dans lequel vous allez identifier les propriétés de la base de données « petstoreDB » :
Dans le formulaire, introduisez les informations suivantes :
Name: | Java DB (Network) |
Host: | localhost |
Port: | 1527 |
Database: | petstoreDB |
User Name: | dbuser |
Password: | dbpwd |
Propriétés de la source de données
Les informations de connexion proviennent des propriétés définies durant la création du Connection Pool (voir ici).
Cliquez sur le bouton « OK » pour créer la connexion.
Avant de fermer la fenêtre, NetBeans peut vous demander de préciser le schéma de la base de données :
Veuillez préciser « DBUSER » et cliquez ensuite sur « OK ».
Le noeud « Databases » présente la nouvelle connexion
Chaque connexion est préfixée par une icône qui précise un statut :
- Une connexion DB est en cours
- Pas de connexion DB
LLIX-G-2. Connexion à la DB▲
Un clic droit sur la connexion fait apparaître le menu contextuel par lequel vous pouvez vous connecter à la base de données :
Cliquez sur « Connect » pour vous connecter à la base de données.
Le système vous demande d'introduire le mot de passe :
En cochant l'option « Remember password », le mot de passe ne vous sera plus demandé.
Vous êtes maintenant connecté à la base de données :
LLIX-G-3. Explorer la DB▲
Les noeuds de la connexion peuvent être ouverts pour explorer la structure de la base de données « petstoreDB » :
Un clic droit sur une table fait apparaître le menu contextuel qui permet de visualiser le contenu de la table ou d'altérer sa structure :
Si vous cliquez sur l'option « View Data », une fenêtre apparaît et vous donnez la possibilité d'exécuter des requêtes de type SQL et obtenir le résultat de la requête :
Vous constaterez que les tables de la base de données sont vides.
Nous allons maintenant présenter les méthodes pour charger les données de test de livrées avec le projet Yaps original.
LLIX-G-4. Données de test▲
Dans le fichier « build.xml » du projet original Yaps, la tâche « db-insert-data » insère des données de test dans la base de données.
Ce processus d'insertion des données de test est exécuté à chaque déploiement de l'application.
Durant la phase de transfert (voir ici), les données de test ont été transférées à l'emplacement suivant :
{yapson_home}\Yaps-Server\data.sql
Nous allons montrer deux méthodes que l'on peut utiliser sous NetBeans pour charger ces données de test.
LLIX-G-4-a. Méthode 1 : Chargement manuel des données de test▲
Cette méthode décrit comment charger manuellement les données de test dans la base de données en utilisant les opérations offertes dans le service « Database ».
Un clic droit sur le noeud « Table » de la base de données « petstoreDB » présente le menu contextuel suivant :
Sélectionnez l'option « Execute Command ».
Copiez le contenu du fichier « data.sql » pour le coller dans la fenêtre de commande :
Exécutez les requêtes SQL en cliquant sur l'icône de la toolbar.
La fenêtre « Output » trace le résultat de chaque requête SQL.
Vous pouvez maintenant visualiser le contenu de chaque table en invoquant l'option « View Data
» décrite plus haut.
Par exemple, nous obtenons le résultat suivant pour la table « CUSTOMER » :
Exécuter une sélection de commandes SQL
Il vous est également loisible d'exécuter un ensemble de commande.
Dans la fenêtre de commande SQL, sélectionnez les commandes à exécuter.
Un clic droit fait apparaître le menu contextuel avec l'option « Run Selection » :
On se rend vite compte que le chargement manuel est quelque peu contraignant, car il vous oblige à répéter
les opérations de chargement après chaque déploiement de l'application.
Nous allons montrer une autre méthode qui automatise le processus de chargement des données de
test.
LLIX-G-4-b. Méthode 2 : Chargement automatique des données de test▲
Cette seconde méthode est beaucoup plus élégante, car elle automatise le chargement des données de test conformément au projet original Yaps.
En inspectant les fichiers de projet Netbeans, vous aurez compris que NetBeans utilise Ant pour compiler et déployer les applications.
NetBeans offre la possibilité de personnaliser le processus de construction et de déploiement des applications en offrant au développeur la liberté de modifier le fichier « build.xml » du projet afin d'exploiter les targets Ant suivantes :
pre-init | Called before initialization of project properties |
post-init | Called after initialization of project properties |
pre-compile | Called before javac compilation |
post-compile | Called after javac compilation |
pre-dist | Called before archive building |
post-dist | Called after archive building |
post-clean | Called after cleaning build products |
pre-run-deploy | Called before deploying |
post-run-deploy | Called after deploying |
Nous allons enrichir le processus de construction de l'application Yaps-Server afin d'y insérer une tâche pour ajouter les données de test dans la base de données petstoreDB.
Nous allons montrer comment enrichir le fichier « build.xml » afin d'insérer les données de test après chaque déploiement de l'application (post-run-deploy).
Sélectionnez l'onglet « Files » et ouvrez le noeud du projet Yaps-Server :
Vous constatez la présence du fichier « data.sql » qui a été transféré du projet original.
Vous allez créer le script Ant « yaps-data.xml » qui sera utilisé pour charger les données
de test.
Fichier « yaps-data.xml »
L'archive de l'application YapsON est livrée avec le fichier « yaps-data.xml ».
Il n'est donc pas nécessaire de créer ce fichier. Vous êtes libres de le déplacer du répertoire
principal vers le répertoire du projet « Yaps-Server » :
C:\> cd {yapson_home}
{yapson_home}> copy yaps-data.xml Yaps-Server
Sélectionnez le dossier « yaps-Server.
Un clic droit affiche le menu contextuel suivant dans lequel vous allez sélectionner l'option « New -> Other » :
Pour créer un fichier de type Ant, vous allez choisir l'option « Other -> Ant Build Script» :
Cliquez sur « Next » pour poursuivre.
Ensuite, entrez le nom du fichier qui sera dans notre cas « yaps-data.xml » :
Cliquez sur « Finish » pour terminer le processus.
Le fichier « yaps-data.xml » s'ouvre maintenant dans l'éditeur de NetBeans pour vous permettre de le compléter :
Nous fournissons ci-dessous le contenu à appliquer au fichier « yaps-data.xml » :
<?xml version="1.0"?>
<!-- This Ant script is used to load test data on the Yaps Pet Store Database -->
<project
name
=
"Yaps-Data"
default
=
"load-data"
basedir
=
"."
>
<!-- Database properties -->
<property
name
=
"db-url"
value
=
"jdbc:derby://localhost:1527/petstoreDB"
/>
<property
name
=
"db-driver"
value
=
"org.apache.derby.jdbc.ClientDriver"
/>
<property
name
=
"db-userid"
value
=
"dbuser"
/>
<property
name
=
"db-password"
value
=
"dbpwd"
/>
<!-- Derby Library location -->
<property
name
=
"derby.home"
value
=
"C:/Program Files/glassfish-v2ur2/javaDB"
/>
<property
name
=
"derby.lib"
value
=
"${derby.home}/lib"
/>
<!-- Classpath -->
<path
id
=
"classpath"
>
<!-- Derby classes -->
<pathelement
location
=
"${derby.lib}/derbyclient.jar"
/>
</path>
<!-- Ant task used to load data on the Yaps Pet Store Database -->
<target
name
=
"load-data"
>
<sql
driver
=
"${db-driver}"
url
=
"${db-url}"
userid
=
"${db-userid}"
password
=
"${db-password}"
autocommit
=
"yes"
onerror
=
"continue"
caching
=
"yes"
src
=
"data.sql"
>
<classpath
refid
=
"classpath"
/>
</sql>
</target>
</project>
Nous allons décrire le fichier Ant.
Le script Ant « Yaps-Data » commence par définir un ensemble de propriétés pour identifier :
- Database properties : les propriétés de la base de données « petstoreDB ».
- Derby Library location: le chemin vers les librairies de Derby.
- Classpath : la librairie Derby nécessaire pour importer les données.
Ensuite, la cible « load-data » fournit la tâche SQL utilisée pour charger les données dans la base de
données « petstoreDB » à partir du fichier « data.sql ».
Sauvez les modifications et vérifiez la structure XML du fichier.
Pour cela, un clic droit dans le fichier fait apparaître le menu contextuel offrant l'option «
Check XML » :
Maintenant, vous allez modifier le fichier « build.xml » du projet « Yaps-Server » pour invoquer le script Ant « yaps-data.xml » après la phase de déploiement du projet.
Toujours à partir de l'onglet « Files », ouvrez le fichier « build.xml » du projet « Yaps- Server » :
L'objectif étant d'insérer les données de test après le déploiement du projet, vous allez ajouter la target Ant « post-run-deploy » dans le fichier « build.xml » :
...
<!-- After deploying the application, we populate the database with test data -->
<target
name
=
"post-run-deploy"
>
<echo>
Load Data on the Yaps Pet Store Database ... </echo>
<ant
antfile
=
"yaps-data.xml"
target
=
"load-data"
/>
</target>
</project>
La target « post-run-deploy » se charge d'invoquer la cible « load-data » du fichier « yaps-data.xml ».
Pour vérifier le bon déroulement du processus, l'instruction « echo » permet d'afficher une trace sur la console.
Vérifiez la structure du fichier en invoquant l'option « Check XML » comme décrite précédemment.
Sauvez vos modifications.
Si vous déployez le projet comme décrit plus haut (voir ici), vous verrez apparaître la trace suivante sur la console :
...
post-run-deploy:
Load Data on the Yaps Pet Store Database ...
load-data:
Executing resource: C:\Projects\YapsON\Yaps-Server\data.sql
91 of 91 SQL statements executed successfully
...
Ces informations indiquent que 91 requêtes SQL du fichier « data.sql » ont été exécutées durant la phase « post-run-deploy ».
Avec cette méthode, les données de tests seront automatiquement injectées dans la base de données à chaque déploiement du projet « Yaps-Server ».
LLIX-H. Tester le projet▲
Le test du projet est largement décrit dans le livre de référence.
On rappellera que l'application Web est accessible à l'adresse suivante :
http://localhost:8080/petstore
N'oubliez pas de créer un compte utilisateur afin de pouvoir valider le comportement de l'application :
- Ajout d'articles dans le panier.
- Création et envoi d'un bon de commande.
- Réception d'un email de confirmation.
- Messages de trace produits sur le serveur et mentionnant la réception des messages du topic JMS.
L'analyse des traces du serveur Petstore vous permet également de suivre le cheminement des messages et de constater que les Web Services (DeliveryService et ValidationService) sont bien invoqués.
Configuration du serveur SMTP
La classe « EmailSenderBean » chargée d'envoyer les emails utilise des constantes pour identifier le serveur SMTP:
private static final String SMTP_HOST = "smtp.free.fr";
private static final String USER = "yaps.petstore";
private static final String PASSWORD = "yapspwd";
Il est nécessaire d'adapter les valeurs de ces constantes en fonction de votre environnement. Après la modification, n'oubliez de recompiler et de déployer l'application.
Bug JMS
En consultant les traces du serveur Petstore, on peut rencontrer le message d'erreur suivant:
DirectConsumer:Caught Exception delivering messagecom.sun.messaging.jmq.io.Packet
cannot be cast to com.sun.messaging.jms.ra.DirectPacket
Ce problème est identifié comme un bug connu par SUN:
http://bugs.sun.com/view_bug.do?bug_id=6650996
Le problème est lié à la manière dont le JMS Provider et l'Application Server sont liés.
Par défaut, la relation est de type « EMBEDDED ». Cela signifie que le serveur d'applications (GlassFish) et le JMS Provider (Sun Java System Message Queue software) fonctionnent sous la même JVM.
Pour contourner le problème, il est recommandé de changer le type de relation en « LOCAL ». Ce mode stipule que le JMS Provider est démarré dans sa propre JVM au moment où le serveur d'applications est lui-même démarré.
Pour modifier la configuration du service JMS, procédez comme suit :
- Démarrer la console d'administration du serveur Petstore sur le site suivant : http://localhost:8282/
-
Dans la partie de gauche, sélectionnez la tâche « Configuration > Java Message Service » :
-
Changer le type de relation de « EMBEDDED » à « LOCAL » :
- Sauver vos modifications.
- Cette modification nécessite un redémarrage du serveur.
- Redémarrez le serveur Petstore.
Les différents types de relation sont exposés dans la documentation de GlassFish (Sun Java System Application Server 9.1) disponible à l'adresse suivante :
LLIX-I. Conclusion▲
Les sources du serveur 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 Web, la logique métier et les Web
Services communiquent correctement ensemble.