1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 
21 22 23 24 25 26 27 28 29 30 31 32 33 

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.
        1. 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.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 
21 22 23 24 25 26 27 28 29 30 31 32 33 

Retrouvez ci-dessous les autres sections du Laboratoire Sun
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

Essentiels de cours Java
JavaEJB 3 - Les Entreprise Java Bean version 3 (JavaBeans)
Cet essentiel est la suite de « Entreprise JavaBean 2.1 ». Cependant, nous allons étudier les nouvelles spécifications 3.0 qui simplifient énormément le développement par rapport aux EJB 2.6/20/06
JavaSWT - Créer des interfaces graphiques performantes
SWT (Standard Widget Toolkit) est une librairie graphique qui vous permet de réaliser des applications graphiques Java beaucoup plus avancées et surtout plus rapide à l’exécution.1/29/06
JavaStruts - Un framework MVC pour vos applications J2EE
Struts est un framework open-source qui vous permet de gagner du temps, mais qui permet aussi de voir des applications complexes comme une suite de composants de base : Vues, Actions, Modèles. Vous gagnez ainsi en évolutivité et en lisibilité du code.1/13/06
JavaHibernate - Persistance objet - relationnel
Cet essentiel explique comment utiliser Hibernate afin de gérer la persistance objet relationnel au sein de vos applications Java.12/14/05
JavaIntroduction J2EE - Applications d'entreprise
Cours d'introduction aux diverses technologies et outils que l'on peut rencontrer dans le monde du Java orienté entreprise J2EE12/14/05
JavaEJB 2 - Les Entreprise Java Bean (JavaBeans)
L'objectif avec EJB2 (Entreprise JavaBeans) est d'introduire les concepts de l’Ingénierie Logicielle Basée sur les Composants.12/14/05
JavaDesign Pattern - Améliorez l'architecture de vos programmes
Afin de répondre a des situation récurrentes en programmation, les "design pattern" apportent une solution type à beaucoup de contraintes liées à la programmation objet.12/14/05
JavaArchitecture J2EE - Comment organiser son application J2EE
Ce cours explique comment créer un code modulable, lisible et évolutif afin d'assurer la pérénité de son application.12/14/05
JavaLes web-services - Publication de services
Le développement tend vers les technologies du Web. Il est difficile de faire la distinction entre les différents logiciels qui sont de plus en plus intégrés au Web. Les Web Services rentrent dans l’optique de différencier bien précisément les couches.12/14/05
JavaAnt - L'automatisation des tâches du programmeur
Ecrire des scripts afin d'exécuter les tâches récurrentes10/31/05
JavaIntroduction au langage Java - Présentation & historique
Présentation des origines du langage, ainsi que se buts premiers8/11/05
JavaLa Syntaxe Java - Bases & nomenclatures
Bases de la syntaxe du langage Java8/11/05
JavaLes Classes - Concepts & héritage
Base du développement objet en Java grâce aux classes8/11/05
JavaLes Exceptions - Gestion d'erreurs
Gérer les erreurs liés à la programmation8/11/05

Articles
Eclipse Europa : le successeur de Callisto
Après Eclipse Callisto (Eclipse 3.2), la fondation Eclipse sort la nouvelle mouture d'Eclipse appelée Europa (Eclipse 3.3) faisant ainsi passer le nombre de projets embarqués de 10 à 21. Que ceux qui sont réticents aux « distributions » d'Eclipse se rassu12/21/07
JavaCruiseControl : l’outil d’intégration continue à avoir dans sa boite à outils
CruiseControl est un projet open-source offrant de multiples fonctionnalités pour l’intégration, que ce soit pour des développements Java ou .Net. Il est courant sur un projet d’être plusieurs développeurs avec des tâches de développement réparties. Dans7/2/07
JavaEJB3 - Des concepts à l'écriture du code - Editions DUNOD
Consulter le résumé du premier ouvrage du laboratoire Sun de SUPINFO : EJB3 - Des concepts à l'écriture du code. Guide du développeur, éditions DUNOD.5/27/07
JavaPassage de certification Java Web (SCWCD)
Passer une certification est toujours un moment important car cela permet de mieux faire reconnaître ses compétences face à un recruteur ou un employeur.5/12/07
JavaGoogle Web Toolkit
Google Web Toolkit est un framework java pour générer du javascript et des requêtes Ajax à partir d’un code java. Voilà comment il fonctionne.5/10/07
JavaJ2ME Vs SDE
Demain, les terminaux « légers » seront plus nombreux que les ordinateurs personnels, ce qui entraîne une bataille sur le choix d’une plateforme identique à tous ces terminaux… Aujourd’hui nous retrouvons le J2ME ainsi que le SDE qui s’offrent une rude b4/22/07

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