|
EJB 2 - Les Entreprise Java Bean (JavaBeans)
6.2.Conception - préparation
Nous devons sortir de la conception l’ensemble du modèle
entité du domaine de cette application. Cette première
étape nous permettra d’avoir une idée concernant
les différents Entity Bean que nous devrons créer (pour
représenter ces entités).
6.2.1.Conception objet
Nous devons penser en termes d’objet et non (comme souvent cela
a été fait dans le passé) de façon
relationnelle.
D’après les cas d’utilisation définis plus
haut, nous pouvons imaginer cet ensemble d’entité :

Nous trouvons alors les entités :
-
Product : représente un produit dans l’application
-
id : entier représentant la clé primaire
-
designation : chaine de caractère contenant la
designation du produit
-
description : chaine de caractère contenant la
description du produit
-
quantity : entier contenant la quantité en stock
-
ProductFamily : représente un f amille de produit
(Périphériques, composants …)
-
code : chaine de caractère représenant le code
de la famille mais également servant de clé primaire
-
description : chaine de caractère contenant une
description de la famille
-
Provider : représente un fournisseur de produits
-
providerId : entier représentant la clé primaire
-
name : chaine de caractère contenant le nom du
fournisseur
-
society : chaine de caractère contenant la raison
social de la société
-
zipCode : chaine de caractère contenant le code postal
de la société
-
City : représente une ville
-
cityId : entier représentant la clé primaire
-
name : chaine de caractère contenant le nom de la ville
-
Country : représente un pays
-
countryId : entier représentant la clé primaire
-
name : chaine de caractère contenant le nom du pays
Cependant vous pouvez également remarquer l’ensemble des
relations que nous avons déclarées :
-
Product(N) <-> (1)ProductFamily : un produit ne peut être
lié qu’à une seule famille de produit alors
qu’une famille de produit peut être liée à
plusieurs produits.
-
Product(N) <-> (M)Provider : un produit peut avoir
plusieurs fournisseurs et un fournisseur peut fournir différents
produits.
-
Provider(N) <-> (1)City : un fournisseur ne peut être
lié qu’à une seule ville et une ville peut être
reliée à plusieurs founrisseurs.
-
City(N) <-> (1) Country : une ville est lié qu’à
un pays alors qu’un pays a plusieurs villes.
L’ensemble des relations est très important dans la
conception des EJB. En effet, c’est lui qui va permettre de
définir les champs relationnels.
Voici à quoi ressemble la base de données relationnelle
(automatiquement générée par JBoss) :

Nous verrons plus en détail pourquoi une table
productsproviders est nécessaire pour nos entités.
6.2.2.Choix du serveur d’application
De nombeux serveurs d’application se partagent le marché.Il
est donc difficile de choisir, lequel est le meilleur ? Lequel
est le plus simple d’utilisation, de configuration …?
Dans la majorité, chaque serveur d’application fournit
des performances et qualités similaires. Ce sont les outils
qui sont autour qui font généralement la différence,
mais également le prix et le support.
Nous avons choisi d’utiliser JBoss (www.jboss.com)
car c’est un serveur d’application Open Source qui
s’incrit de plus en plus dans le marché professionnel et
propose de très bonnes performances.
Cependant la configuration de chacun des modules (JMS, EJB,
Connecteur base de données …) n’est pas toujours
intuitives (il faut généralement manipuler des fichiers
xml et des dossiers quelques fois difficiles à « trouver »).
Mais le support ne manque pas, et la communauté Open Source
est très réactive et évolue très
rapidement.
Nous utiliserons la version 4 de ce serveur.
(http://www.jboss.com/products/jbossas)
De plus, nous utiliserons un plug-in : JBoss-Ide pour Eclipse
qui nous aidera dans notre démarche de développement
d’ejb et déploiement sur le serveur d’application.
Ce plug-in est également développé par le groupe
JBoss.
Installation /
Configuration du serveur
JBoss étant écrit en Java, on peut aussi bien
l’utiliser sous Mac OS que sous Linux ou encore Windows.
Vous n’avez donc besoin que du JDK 1.4 (ou plus) pour lancer le
serveur.
L’installation se fera par une simple décompression du
fichier (zip ou tar.gz) dans un répertoire de votre système.
Utilisez un répertoire, de préférence, SANS
ESPACE, car ils risquent de provoquer quelques erreurs avec le
plug-in JBoss-Ide.
Une fois décompressé, vous pouvez lancer le
serveur en executant le script « shell » ou
« batch » : run.sh ou run.bat.
6.2.3.Architecture avec les EJB
Voici l’architecture qui pourrait être mise en place pour
l’application complète :

Nous offrons deux services pour nos deux types de clients :
-
CustomerService : service lié aux clients de
l’entreprise (peuvent par exemple lister les produits
-
AdminService : service servant en interne pour l’administration
des données (ajout de produit, modification …)
Dans un soucis de facilité, nous ne créerons qu’un
seul bean de « service » afin d’aller
plus rapidement à l’essentiel (la pratique !).
L’ensemble des entités de l’application se
retrouve en tant que Entity Bean CMP locaux.
Nous nous servirons d’une base de données mysql pour
stocker l’ensemble des données.
6.2.4.UML et Ejb
Certains outils de modélisation vous permettent de générer
des diagram UML en intégrant la fonctionnalité EJB.
Nous retrouvons dans ce diagram les différents EJB avec leur
type (Session, Entity, Message Driven) et l’ensemble des
informations lié à l’EJB.
Voici un exemple de diagram UML/EJB représentant nos
différents EJB entity (sans prendre en compte les différentes
liaisons entre eux) :

6.2.5.Outils de développement
Dans un soucis de possible évolution mais également
pour facilité le travaille en équipe, il nous faut
adopter une méthode de travail rigoureuse. De plus, cette
application doit pouvoir être « opérationnelle »
le plus rapidement possible, donc nous allons utiliser des outils
d’automatisation de tâches.
Ces outils nous permettrons de gagner du temps dans notre
développement en :
-
Effectuant des statistiques / rapports sur certaines parties de code
…
-
Générant du code redondant (interfaces, descripteur de
déploiement …)
-
Être le plus évolutif possible (sans avoir à
tout refaire)
Au fur et à mesure du développement de l’application,
nous pourrons voir son évolution et ainsi corriger les bugs /
problèmes, le plus tôt possible. Cela s’appelle
« l’intégration continue ».
Voici les outils que nous allons utiliser :
-
IDE : eclipse (IBM : www.eclipse.org)
-
Plugins JBoss-Ide : (JBoss : www.jboss.com)
intégration facile avec JBoss, assistants de création
d’EJB / Servlets …
-
Utilisation de xDoclet intégré au plug-in.
-
Ant : executeur de script, permettant d’automatiser
certaines actions.
Nous expliquerons, au fur et à mesure, les différents
tags xDoclet utilisés. Dans un souci de facilité, nous
commencerons par donner l’ensemble du code source, pour le
présenter ensuite.
|
|
 |