Académique Documents
Professionnel Documents
Culture Documents
___________________________________________________________________________
KOLLE KOUO MOUDIKI Jean Hervé 1
Gestion du budget familial, liste de marché en fonction des recettes 2008
PROJET DE SPECIALITE
Etablissement: ISTDI
Département : CS2I
Mots-clé : Java, J2EE, MySQL, JBOSS, JPA, DAO, DVO, EJB, Eclipse
___________________________________________________________________________
KOLLE KOUO MOUDIKI Jean Hervé 2
Gestion du budget familial, liste de marché en fonction des recettes 2008
SOMMAIRE
___________________________________________________________________________
KOLLE KOUO MOUDIKI Jean Hervé 3
Gestion du budget familial, liste de marché en fonction des recettes 2008
INTRODUCTION
Dans la vie, il est évidant que les problèmes que nous rencontrons sont proportionnels
à notre niveau de vie ; cependant la manière de les résoudre peut etre commune : la mise en
place d’un processus de résolution de problèmes. Ainsi, afin de résoudre le problème des
familles qui ne tiennent pas les deux bouts avec leur revenu (grand ou petit), nous leur
proposons une application de gestion du budget familial. La suite de ce document présente
premièrement le projet, puis le processus de réalisation de ce dernier.
___________________________________________________________________________
KOLLE KOUO MOUDIKI Jean Hervé 4
Gestion du budget familial, liste de marché en fonction des recettes 2008
I. PRESENTATION DU PROJET
1. ROLE DE L’APPLICATION
2. FONCTIONNALITES CLES
3. INNOVATION
4. PUBLIC VISE
___________________________________________________________________________
KOLLE KOUO MOUDIKI Jean Hervé 5
Gestion du budget familial, liste de marché en fonction des recettes 2008
5. CONTEXTE
6. OBJECTIFS
Deux objectifs sont à atteindre pour ce projet : le principal est la maîtrise pratique du
standard J2EE, et l’autre est de fournir une application pour les utilisateurs.
7. VERSION
8. PLANNING
___________________________________________________________________________
KOLLE KOUO MOUDIKI Jean Hervé 6
Gestion du budget familial, liste de marché en fonction des recettes 2008
II. DEVELOPPEMENT
Cette section présente premièrement le standard J2EE utilisé dans notre projet, puis,
brièvement, les étapes de développement de l’application.
___________________________________________________________________________
KOLLE KOUO MOUDIKI Jean Hervé 7
Gestion du budget familial, liste de marché en fonction des recettes 2008
2. ANALYSE ET CONCEPTION
Tout au long de cette étape, nous nous sommes servis du langage de modélisation
UML (Unified Modeling Language) qui, à travers les cas d’utilisations jusqu’au diagramme
de classe, nous a permis de mettre en place les tables de notre base de données.
a) FONCTIONNALITES ATTENDUES
___________________________________________________________________________
KOLLE KOUO MOUDIKI Jean Hervé 8
Gestion du budget familial, liste de marché en fonction des recettes 2008
b) ARCHITECTURE DE L’APPLICATION
Le client est représenté par le navigateur web qui affichera des pages JSP (JavaServer
Pages) .
Les JSP sont des scripts insérés dans les pages html, et forment des parties du
document HTML générées lors des échanges avec le serveur.
Les session bean et entity bean sont deux types d’EJB. La session bean représente les
processus, plus précisément elle réalise une tâche au nom du client ; tandis que l’entity bean
représente les données de l’application. La précision CMP(Container Managed Persistence)
signifie que la persistance est géré par le conteneur du serveur d’application, plutôt que par le
bean lui-même(BMP : Bean Managed Persistence); l’avantage avec les CMP est la diminution
de la complexité des échanges qui existent avec la base de données.
La DAO (Data Access Object) représente un pattern pour la persistance des objets. Il
s’agit en fait d’encapsuler le code lié à la persistance des données dans les objets DAO dont
l’interface est indépendante du support de persistance. Ainsi, quand l’application a besoin
d’effectuer une opération liée à la persistance d’un objet, elle fait appel à un objet DAO à qui
elle passe l’information nécessaire pour effectuer l’opération. L’information est donc
transmise dans une DVO (Data Value Object) dans notre application.
Le DVO contient l’état d’un objet, il est construit sur le site distant et transmis
directement au client. Son intérêt est qu’il permet de transporter les objets distants pas
transportables sur le réseau ; son utilisation optimise les performances du serveur.
La base de données assure la pérennité des données.
___________________________________________________________________________
KOLLE KOUO MOUDIKI Jean Hervé 9
Gestion du budget familial, liste de marché en fonction des recettes 2008
Pour conclure cette section, il est à noté que le fonctionnement des JSP nécessite un
conteneur web tandis que celui des EJB nécessite un conteneur d’EJB.
Dans cette section nous présenterons les outils utilisés, leur installation et
configuration nécessaire, puis les motivations de nos choix. Il s’agit respectivement du
JDK(Java Développement Kit, Kit de Développement Java), l’EDI (Environnement de
Développement Intégré), du serveur d’application et du serveur de base de données.
a) JDK : JDK1.5.0_09
Le JDK est l’outil principal qui nous permet de développer des applications Java. La
version utilisée est 1.5.0_09, tandis que la dernière version porte le numéro 1.6.1 à la date à
laquelle nous éditons ces lignes. Ce choix est une contrainte à respecter pour utiliser le
serveur d’application que nous verrons plus bas.
Télécharger le JDK sur le site de SUN (http://www.sun.com) et l’installer en prenant
le son de configurer la variable d’environnement avec les valeurs suivantes :
Nom de la variable : JAVA_HOME
Valeur : répertoire de base du JDK, exemple : C :\Program Files\Java\Jdk1.5.0_09
Un IDE est un logiciel aidant à réaliser d’autres logiciels ; c’est aussi un ensemble
d’outils permettant de couvrir le cycle de vie du logiciel (analyse, conception, réalisation,
maintenance). Parmi les IDE on distingue :
JBuilder
NetBeans (Sun) G OUI http://www.sun.com/forte ou
http://www.netbeans.org
Sun One (Sun) P OUI http://www.sun.com
Oracle P OUI http://www.oracle.com
JDevelopper
Bea Weblogic P OUI http://www.bea.com
WorkShop
Windev (pcsoft) P NON www.pcsoft.fr
Notre choix à été porté sur Eclipse car il est gratuit, modulable (plug-ins disponibles
selon les fonctions recherchées par le développeur pour personnaliser son IDE), et possède
une très grande communauté d’utilisateurs toujours prêt à réagir à chaque problème posé.
L’exécutable est disponible à l’adresse http://www.eclipse.org/download/index.php
OPEN- (CE)
SOURCE(O)
Sybase EAServer C - http://www.sybase.com/products/easerv
er
BEA Weblogic AS C CE+CW http://www.bea.com haut de gamme
IBM Websphere C CE+CW N° 1
Sun Java System C CE+CW http://www.sun.com
AS
Borland Enterprise C CE+CW -
Server
Oracle9i AS C CE+CW http://www.oracle.com
Macromedia jRun C - -
SAP Web AS C CE+CW -
Iona Orbix E2A C CE+CW -
JBoss AS O CW+CE N° 1 en nombre de déploiements
http://www.jboss.org/download.jsp
ObjectWeb JOnAS O CW+CE N°2, intégré à plusieurs distributions
Linux Entreprise.
http://www.objectweb.org
Apache Geronimo O CE+CW http://www.apache.org
openEjb O CE -
ejBean O - -
Pour la suite, nous avons choisi JBOSS AS il est le numéro 1 parmi les serveur gratuit,
il est bien documenté, il implémente l’ensemble des spécification J2EE, il utilise moins de
mémoire et est actuellement l’un des rares serveurs open source à accepter le déploiement des
EJB3 nécessaire à la réalisation de notre application. La version utilisée est jboss-4.2.1.GA
(non de code jboss Trinity).
La version utilisée nécessite uniquement le JDK1.5.x pour fonctionner ; s’assurer
avant que ce dernier soit installé et configuré avec la variable d’environnement
JAVA_HOME qui pointe sur le répertoire de base du JDK. Puis, télécharger l’archive jboss-
4.2.1-GA .zip à l’adresse http://www.jboss.org/download.jsp et la dézipper dans un répertoire
au choix ; définir et renseigner les variables d’environnements suivantes :
Variable : JBOSS_HOME , valeur : répertoire de base de jboss (C:\jboss-4.2.1-GA)
Variable : CLASSPATH, valeur : %JAVA_HOME%\lib\tools.jar
___________________________________________________________________________
KOLLE KOUO MOUDIKI Jean Hervé 12
Gestion du budget familial, liste de marché en fonction des recettes 2008
Le serveur MySQL est utilisé ici en lieu et place d’autres serveurs car il est encore
libre (encore car MySQL à été rachetée par la société SUN, et nul ne sait quelle sera la suite),
stable, rapide et nous le maîtrisons mieux ; de plus il intervient beaucoup dans le
développement d’application entreprises avec jboss, dont les documentations sont accessibles.
Cependant, nous avons utilisés UML pour la conception et notre modèle de données
est un modèle objet. Pourquoi ne pas avoir choisie une base de données objet et comment
utiliser un modèle objet avec une base de données relationnelle?
En effet, la légère complexité des bases de données objets ne nous aurait pas permis
d’arriver à un certain stade de réalisation avec le peu de temps qui nous était imparti ; de plus
notre objectif premier est de maîtriser le développement d’application avec le standard J2EE,
déjà complexe ; augmenter la complexité ne nous aurais en aucun cas permit d’atteindre notre
but. il
___________________________________________________________________________
KOLLE KOUO MOUDIKI Jean Hervé 13
Gestion du budget familial, liste de marché en fonction des recettes 2008
Pour débuter, rappelons que JPA (Java Persistance API) est la spécification standard
pour la persistance des objets Java (http://jcp.org/en/jsr/detail?id=220 pour pus de détails sur
JPA). La majorité des fournisseurs de persistance qui existent sur le marché implémentent ce
standard. C’est ainsi que l’on distingue :
- TopLink Essential (produit Oracle), qui est l’implémentation de référence de JPA
- Hibernate Entity Manager (http://www.hibernate.org)
- JDO (Java Data Object), une autre API qui offre des fonctionnalités semblables à
JPA
- Bea Kodo
Nous avons choisi hibernate comme fournisseur de persistance car la plupart de nos
recherches nous ont guidés vers ce fournisseur ; de plus les premiers tests cet outil étaient
satisfaisant. Hibernate s’occupe du transfert de classes dans la base de données (et des types
de données java dans les types de données SQL) et facilite au maximum les requêtes au
développeur.
4. PROGRAMMATION
___________________________________________________________________________
KOLLE KOUO MOUDIKI Jean Hervé 14
Gestion du budget familial, liste de marché en fonction des recettes 2008
___________________________________________________________________________
KOLLE KOUO MOUDIKI Jean Hervé 15
Gestion du budget familial, liste de marché en fonction des recettes 2008
___________________________________________________________________________
KOLLE KOUO MOUDIKI Jean Hervé 16
Gestion du budget familial, liste de marché en fonction des recettes 2008
ATTRIBUTS
long idbudget Clé primaire, identifiant du budget mensuel
Double solde Solde
String mois Mois
String annee Année
Double mtalloue Montant alloué
Utilisateur iduser Utilisateur concerné
METHODES
String Définir le budget mensuel
addBudgetMensuel(Budgetmensuel
budMens)
String delBudgetMensuel(long id) Supprimer le bugdet mensuel d'un utilisateur
String Modifier le budge mensuel d'un utilisateur
updBudgetMensuel(Budgetmensuel budM)
Budgetmensuel Récupérer le budget mensuel à partir de son
findBudgetmensuelById(long id)
id
Collection<Budgetmensuel> Récupérer la liste contenant tous les budgets
getAllBudgetOfUser(long iduser)
définis par un utilisateur
Collection<Budgetmensuel> Récupérer la liste contenant les budgets
getBudgetOfUserByAnnee(long iduser,
définis par unutilisateur au cours d'une année
String annee)
Collection<Budgetmensuel> Récupérer la liste contenant les budgets
getBudgetOfUserByMois(long iduser,
définis par unutilisateur au cours du mois
String annee, String mois)
d'une année
___________________________________________________________________________
KOLLE KOUO MOUDIKI Jean Hervé 17
Gestion du budget familial, liste de marché en fonction des recettes 2008
___________________________________________________________________________
KOLLE KOUO MOUDIKI Jean Hervé 18
Gestion du budget familial, liste de marché en fonction des recettes 2008
ATTRIBUTS
long iduser Clé primaire, identifiant de l’utilisateur
String nomfamille Nom de famille
String nonutil Nom utilisateur pour la connexion à
l’application
String mot2pass Mot de passe
String repsec Réponse secrète pour la récupération du
mot de passe en cas de perte
String quesec Question secrète pour la récupération du
mot de passe en cas de perte
String grp Groupe d’appartenance de l’utilisateur :
user, admin , passif
String tel1 Téléphone1
String tel2 Téléphone2
String email E-mail
METHODES
String addUtilisateur(Utilisateur Créer un utilisateur
utilisateur)
String updUtilisateur(Utilisateur Modifier un utilisateur
utilisateur)
Utilisateur findUtilisateurById(long Récupérer un utilisateur à partir de son id
id)
Utilisateur connexionUtilisateur(String Connexion à l’application
nomUtil, String mot2pass)
Collection<Aliment> Renvoyer la liste de marché en fonction
ListeDeMarche(Collection<Recette>
des recettes choisies
mesRe7)
Collection<Recette> Proposer une/des recettes en fonction des
proposerRe7(Collection<Aliment>
aliments choisi
mesAliments)
Utilisateur recupPwd(String nomUtil, Récupérer le mot de passe en cas de perte
String quest, String rep)
___________________________________________________________________________
KOLLE KOUO MOUDIKI Jean Hervé 19
Gestion du budget familial, liste de marché en fonction des recettes 2008
iduser) utilisateur
void delLogConnexion(long iduser) Supprimer tous les log d'un utilisateur
___________________________________________________________________________
KOLLE KOUO MOUDIKI Jean Hervé 20
Gestion du budget familial, liste de marché en fonction des recettes 2008
ATTRIBUTS
DistbudgetPK pk Clé primaire concaténée, classe construite à
part, identifiant de la distribution
double solde Solde pour la catégorie concernée
double mtallouecat Montant alloué à la catégorie concernée
Catdepense idcat Catégorie pour laquelle le budget est alloué
Utilisateur iduser Utilisateur responsable de l’allocation
METHODES
Distbudget Récupérer le budget alloué à une catégorie à
findDistbudgetByPK(DistbudgetPK pk)
partir de sa clé primaire
String Allouer le budget à une catégorie
addBudgetToThisCategorie(Distbudget
db)
String Supprimer le budget alloué à une catégorie
delBudgetOfThisCategorie(Distbudget
db)
String Modifier le budget alloué a une catégorie
updBudgetOfThisCategorie(Distbudget
db)
Collection<Distbudget> Récupérer pour un utilisateur tous les budgets
getBudgetOfThisCategorie(long
définis dans une catégorie
iduser, int idCategorie)
Collection<Distbudget> Récupérer le budget par année pour toutes les
getBudgetByCategorieByAnnee(long
catégories
iduser, String annee)
Collection<Distbudget> Récupérer le budget du mois pour toutes les
getBudgetByCategorieOfThisMois(long
catégories
iduser, String annee, String mois)
Les relations qui existent entre ces beans sont illustrées sur la figure suivante :
___________________________________________________________________________
KOLLE KOUO MOUDIKI Jean Hervé 21
Gestion du budget familial, liste de marché en fonction des recettes 2008
Ces relations sont gérées au niveau des classes java par les annotations définies par
JPA et qui se trouvent dans le package javax.persistence. Ce sont :
@OneToMany : relation de un à plusieurs ; un utilisateur enregistre plusieurs
dépenses. Cette annotation se trouvera dans la classe Utilisateur et au dessus de la variable qui
référence la collection des dépenses de l’utilisateur.
@ManyToOne : plusieurs dépenses dont chacune appartient à un utilisateur précis ;
cette annotation se trouve dans la classe Dépense et au dessus de la variable qui fait référence
à l’Utilisateur responsable de la dépense
@ManyToMany : relation de plusieurs à plusieurs
@OneToOne ; relation bijective
Chaque annotation possède des attributs, qui ont pour rôle de spécifier le
comportement des classes lors des requêtes vers ka base de données.
En effet, les méthodes que présentent les entity bean ci-dessus ne sont ni déclarées, ni
implantées dans les beans correspondant. Chaque entity bean donne lieu à une interface qui
déclare ses méthodes ; cette interface est Remote c'est-à-dire implémente javax.ejb.Remote.
Pour la nomenclature, le nom de l’interface porte celui de la classe suffixé de DAO ; exemple
AlerteDAO est l’interface définissant les méthodes de la classe Alerte. Ainsi, toutes les
___________________________________________________________________________
KOLLE KOUO MOUDIKI Jean Hervé 22
Gestion du budget familial, liste de marché en fonction des recettes 2008
méthodes sont implantées dans la stateless session bean que nous utilisons : UserDAOBean.
Le schéma suvant résume tout ce que nous venons de dire :
Il s’agit du fichier persistance.xml dont le chemin d’accès est présenté à la figure ci-
dessous. Rappelons ici que notre founisseur de persistance est Hibernate.
Le fichier persistance.xml présenté par la suite renseigne sur les éléments suivants :
- Le nom de l’unité de persistance : BudFamJPA ;
___________________________________________________________________________
KOLLE KOUO MOUDIKI Jean Hervé 23
Gestion du budget familial, liste de marché en fonction des recettes 2008
Maintenant que nous avons créé le cœur (EJB), il faut faire un premier déploiement
afin de le tester et s’assurer qu’il répond aux besoins exprimés et qu’il est exempt de bugs.
___________________________________________________________________________
KOLLE KOUO MOUDIKI Jean Hervé 24
Gestion du budget familial, liste de marché en fonction des recettes 2008
• LE CONTENEUR : %JBOSS_HOME%\server\default\conf\standardjboss-
cmp.xml
Nous configurons le conteneur, car la persistance est gérée par ce dernier (CMP)
___________________________________________________________________________
KOLLE KOUO MOUDIKI Jean Hervé 25
Gestion du budget familial, liste de marché en fonction des recettes 2008
Il suffit de renseigner les deux lignes ci-dessus : le nom de la source de données et la base de
données à mapper.
___________________________________________________________________________
KOLLE KOUO MOUDIKI Jean Hervé 26
Gestion du budget familial, liste de marché en fonction des recettes 2008
L’EJB doit être testé après son déploiement avant de se lancer dans la création d’un
client. Il s’agit ici de tester chacune des fonctions implantées afin de nous assurer qu’elles
répondent non seulement aux besoins exprimés, mais aussi qu’elles ne présentent pas de bug.
Pour ce, nous avons crées un client qui fonctionne en ligne de commande :
UserDAOTestBean. Grâce à ce dernier, nous avons corrigé, amélioré et mis en place les
fonctions de l’application.
Cependant afin d’utiliser l’EJB avec un client, il faut:
___________________________________________________________________________
KOLLE KOUO MOUDIKI Jean Hervé 27
Gestion du budget familial, liste de marché en fonction des recettes 2008
- Utiliser les méthodes en passant par les DAO ; l’ajout d’un aliment se fera de la
manière suivante : daoAliment.addAliment(alim) ;
Les tests étant validés nous pouvons passer à la création du client
Les JSP, ou Java Server Pages, ont pour but de simplifier la création et la gestion des
pages web dynamiques. Ils permettent un mélange du code HTML et du code Java dans le
même document. Le code Java est entouré de balises spéciales afin que le conteneur de JSP
puisse les utiliser.
Cependant il existe un cadre pour le développement graphique des JSP ; il s’agit de
JSF, Java Server Faces. JSF nécessite la présence des fichiers suivants pour être utilisé sous
avec le serveur jboss: jstl.jar, jsf-impl.jar, jsf-api.jar, jboss-faces.jar.
Par la suite, il faut crée une dépendance entre les pages JSP (BudFamJSF) et le bean
(BudFamJPA). La figure suivante nous le montre
___________________________________________________________________________
KOLLE KOUO MOUDIKI Jean Hervé 28
Gestion du budget familial, liste de marché en fonction des recettes 2008
A cette date, toutes les interfaces n’ont pas encore étés crées, seul deux interfaces sont
disponibles. Il s’agit de l’ajout d’un nouvel aliment et de la liste des aliments d’un utilisateur.
Interface d’enregistrement d’un aliment
___________________________________________________________________________
KOLLE KOUO MOUDIKI Jean Hervé 29
Gestion du budget familial, liste de marché en fonction des recettes 2008
5. MISE EN SERVICE
___________________________________________________________________________
KOLLE KOUO MOUDIKI Jean Hervé 30
Gestion du budget familial, liste de marché en fonction des recettes 2008
Cette section présente l’ensemble des application et standards qui nous ont servis tout
au long du projet.
APPLICATION/STANDARDFONCTION/ROLE REFERENCE
JBoss AS Serveur d’application, http://www.jboss.org/download.jsp
Eclipse Europa (Eclipse 3.3) IDE http://www.eclipse.org
ZMWS 1.2.7 (Zazou Mini Pack d’auto http://www.zmws.org
Web Server) installation contenant
MySQL,
PhpMyAdmin, et
Apache
MySQL 5.0.51a-community Serveur de base de
(via ZMWS), avec InnoDB données
pour moteur de stockage
Dia 0.95 Dessin de diagrammes http://www.gnome.org/projects/dia/
et structure
Paint Dessin Microsoft windows
Opéra 9.26 Navigateur web www.opera.com
SciTE Editeur de texte http://www.scintilla.org
JPA : Java Persistence API Standard pour la http://jcp.org/en/jsr/detail?id=220
persistance des objets
java
EJB3 : Enterprise Java Bean 3 Composant métier J EE 5
DAO : Data Access Object Patron de conception http://deptinfo.unice.fr/
pour la persistance des
données
DVO : Data Value Object Etat d’un objet ; assure Cedric W. Jonhson,
le transport sur le javadude@ix.netcom.com
réseau des objets non
sérialisable
Foxit Reader Lecture de fichiers pdf http://www.foxitsoftware.com
JSF: Java Server Faces Cadre pour la création
des interfaces
graphique des pages
JSP
___________________________________________________________________________
KOLLE KOUO MOUDIKI Jean Hervé 31
Gestion du budget familial, liste de marché en fonction des recettes 2008
JSP : Java Server Pages Créer des pages web Penser en Java, Bruce Eckel
dynamiques
___________________________________________________________________________
KOLLE KOUO MOUDIKI Jean Hervé 32
Gestion du budget familial, liste de marché en fonction des recettes 2008
CONCLUSION
En bref, la gestion du budget familial proprement dite à été effectuée à travers les
différentes fonctions ; la grosse difficulté a été l’application du standard J2EE à notre logiciel.
C’est un standard assez complexe mais, dès que mis en place, il facilite au maximum la
maintenance et l’évolution de l’application. Pour cette évolution, notre perspective est de
développer des web services qui sont des composants inter langage. Le tableau suivant
présente l’évaluation des objectifs en fin de projet.
PRIORITE OBJECTIF
DEBUT DU PROJET FIN DU PROGET
1 Maîtrise pratique du standard J2EE Réalisé à 98%
2 Fournir une application pour les utilisateurs Réalisé à 64%
((ejb+client1+client2)/3)
Création du cœur de l’application : Réalisé à 87%
composant EJB
Création d’un client pour l’EJB (en ligne de Réalisé à 100%
commande, pour les tests : client1)
Création d’un client pour l’EJB (Interface Réalisé à 5%
graphique : client2)
- Objectif général Réalisé à 81%
___________________________________________________________________________
KOLLE KOUO MOUDIKI Jean Hervé 33
Gestion du budget familial, liste de marché en fonction des recettes 2008
BIBLIOGRAPHIE ET URLOGRAPHIE
___________________________________________________________________________
KOLLE KOUO MOUDIKI Jean Hervé 34