Work placement bachelor's degree computer science_2009
Centres sportifs nfe103
1. 1ère
partie : Etude de cas – Gestion de centre sportifs
NFE103 – Hubert KADIMA
Manuel Ramos 02/05/2013 1
A. Modélisation du système de gestion de réservation avec UML
Quelles sont les entités du système ? Agent, lot equipement, adherent.
L’agent gère le système. Il existe une agence centrale qui s’appelle le service municipal
des sports sur laquelle est installé 1 serveur d’application Jboss.
Chaque centre sportif se connectera au serveur centralisé qui se trouve dans le service
municipal des sports.
L’objectif est d’utiliser UML pour mettre en place un infra technique à base de
composants J2EE.
1. Elaborer le diagramme de cas d’utilisation de ce système.
2. Représenter, sous forme de diagramme de séquences, le scénario nominal de la
réservation téléphonique par un adhérent d’un terrain et d’un équipement.
L’agent va recevoir l’appel, ensuite il va se connecter au système, il va saisir les
informations sur l’adhérent en lui associant un terrain et un equipement.
Pour le cas d’utilisation ‘Passer réservation’ il va falloir faire le scénario nominal de la
réservation téléphonique.
2. 1ère
partie : Etude de cas – Gestion de centre sportifs
NFE103 – Hubert KADIMA
Manuel Ramos 02/05/2013 2
L’agent à travers le navigateur internet va se connecter à une servlet via http qui se
trouve dans un container Tomcat. Ensuite, le service réservation se connecte via le
Data Access Object (DAO) à la base de données MySQL, il récupère les objets
adhérents pour instancier un objet de type adhérent, il va le peupler ou remplir avec les
données provenant de la base. Ceci est vrai uniquement pour le cas où l’adhérent
existe déjà dans la base de données (pré-enregistré).
Refaire la même procédure pour les 2 autres objets c'est-à-dire le terrain et le lot
d’equipement.
3. Tracer le diagramme états-transitions de l’objet réservation.
Ce diagramme est réalisé à l’aide du pattern State.
Les instances de cette classe possèdent le cycle de vie suivant :
EN COURS : Etat où la réservation est en cours de création : L’adhérent saisie
la réservation.
TRAITE : Etat où la réservation a été enregistrée.
RESERVE : Etat où le terrain a été pris par un adhérent.
RESERVE
EN COURS
TRAITEE
3. 1ère
partie : Etude de cas – Gestion de centre sportifs
NFE103 – Hubert KADIMA
Manuel Ramos 02/05/2013 3
4. Quel est le design pattern le plus approprié pour représenter le comportement de
l’objet réservation.
Le système à concevoir est un site web de gestion de réservations de terrains et
d’équipements sportifs.
Nous nous intéressons aux réservations de terrains qui sont décrites par la classe
réservation.
Le pattern le mieux adapté pour gérer les différents états d’une réservation est le
design pattern de comportement ‘State’. Il permet d’adapter le comportement des
méthodes en fonction de l’état de cet objet réservation.
5. Construire le diagramme de classes détaillé du système (avec toutes les propriétés
et les méthodes de chacune des classes).
B. Conception du système
1. Rappeler les principales règles de mapping objet/relationnel pour les classes
persistantes ?
2 modèles de conception de données sont la conséquence du fait qu’il y’a 2 façons de
représenter les données :
4. 1ère
partie : Etude de cas – Gestion de centre sportifs
NFE103 – Hubert KADIMA
Manuel Ramos 02/05/2013 4
MCO : Modèle de conception objet (POJO, EJB,…)
MCD : Modèle de conception de données (modèle relationnel)
Afin de relier les 2 modèles, il faut utiliser le mapping objet relationnel (ORM).
La persistance est la propriété que possède un objet de se sauvegarder dans une base de
données, ce mécanisme peut être implanté dans une classe persistante.
Le mapping ORM consiste à faire correspondre les classes du modèle objet aux tables du
modèle relationnel, concernant aussi celle entre les instances de classes et les
enregistrements des tables. En principe, une classe est égale à une table.
Dans le modèle objet, il est conseillé de choisir un attribut jouant le rôle d’identifiant de la
classe qui devient clé primaire pour la table.
Les règles de transformation pour les associations, cela dépendra de leurs multiplicités
maximales (1, *).
Pour les associations plusieurs-à-plusieurs, l’association devient une table dont la clé
primaire est composée de la concaténation des identifiants des classes connectées à cette
association.
Pour les associations 1 à plusieurs, l’identifiant de la classe parent devient clé étrangère
de la classe fille.
Pour les associations 1 à 1, il faut ajouter l’identifiant dans la table dérivée de la classe
ayant la multiplicité minimale égale à zéro. En cas de multiplicités égales à zéro des deux
côtés, il est conseillé de fusionner les deux classes en une seule.
En cas d’héritage, il existe 3 solutions :
o Une table pour la super-classe et pour chaque sous-classe ajouter l’identifiant
de la super-classe.
o Le push down qui consiste à descendre les attributs de la super-classe vers les
sous-classes.
o Le push-up consistant à créer qu’une seule table pour l’ensemble en
regroupant tous les attributs des sous-classes dans la super-classe.
2. Rappeler les principales étapes de la démarche conduisant à l’exécution d’une
application complète à base de composants EJB (Enterprise Java Beans) CMP
(Container Managed Persistance).
La spécification EJB permet de voir les services d’une façon cohérente, offrant ainsi au
développeur un certain degré de portabilité entre les serveurs d’application (JBOSS).
Pour comprendre la création et le développement d’une application J2EE, il est important
de connaître la technologie de la couche intermédiaire de cette plateforme : EJB est le
cœur de cette architecture orienté pur objet et indépendant de la plateforme en a fait un
standard. EJB fonctionne à l’aide d’un conteneur logique doté d’un certain nombre de
services.
5. 1ère
partie : Etude de cas – Gestion de centre sportifs
NFE103 – Hubert KADIMA
Manuel Ramos 02/05/2013 5
¹ Correspond à une table dans une base de données relationnelle. Ils permettent les accès
partagés. Ils sont persistants car l’état d’un Bean entity est sauvegardé sur un support de
stockage et existe au-delà de la vie de l’application, même après l’arrêt du serveur de base
de données ou des applications utilisatrices.
² Il a uniquement une classe de bean, ressemble à un bean session sans état, invoqué par le
biais de JMS (JavaMessage Service).
³ Pas de maintien de l’état, Le Stateless n’existe que le temps d’un appel de méthode.
Le terme CMP veut dire que le conteneur d’EJB s’occupe de tous les accès à la base de
données, requis par le Bean entity. En bref, les Bean entity sont plus portables en utilisant
le CMP que le BMP.
Exemple de bean qui représente une entité métier :
EJB
Bean session Bean entity ¹ Bean message ²
Avec
état
Sans
état ³
CMP
Persistance géré par
Le conteneur
BMP
Persistance géré par
Le Bean
Container
managed Bean managed
Message driven
Bean
CarteDeCreditEJB
VerifierCarteDeCredit
Objets métiers dont les
Attributs sont
persistants
Bean session
6. 1ère
partie : Etude de cas – Gestion de centre sportifs
NFE103 – Hubert KADIMA
Manuel Ramos 02/05/2013 6
La différence des bean message aves les bean sessions et entités est que les clients
n’accèdent pas aux message-driven bean par des interfaces.
Les EJB sont particulièrement recommandés :
1. Lorsque votre application doit pouvoir gérer des montées en charge.
Vous pourrez facilement mettre en cluster vos serveurs d'application.
2. Lorsque votre application a besoin des transactions, les EJB supportent les
transactions (peu importe le système de stockage utilisé).
3. Lorsque votre application doit être accessible depuis de nombreux types de
clients (Applications, Sites web, PDA).
N'importe quel type de client pourra accéder à vos EJB et pourra utiliser la
logique et les données de votre application.
4. Lorsque votre application est développée par plusieurs personnes.
Les EJB vous permettront de centraliser la logique applicative et ainsi
d'assurer l'intégrité des données et le respect des règles métiers.
3. A quoi servirait JNDI (Java Naming Directory Interface) dans cette
architecture ?
JNDI est une API qui fournit les fonctionnalités de nommage et d’annuaire aux
applications en Java.
7. 1ère
partie : Etude de cas – Gestion de centre sportifs
NFE103 – Hubert KADIMA
Manuel Ramos 02/05/2013 7
JNDI est divisé en 5 packages : javax.naming, javax.naming.directory,
javax.naming.event, javax.naming.ldap et javax.naming.spi.
Le package contient des classes et interfaces pour accéder aux services de nommage.
Extension du package ¹, permet à des applications de rechercher des attributs liés aux
objets stockés dans l’annuaire et de rechercher les objets en utilisant les attributs indiqués.
Contient les classes et interfaces supportant la notification d’évènement dans les
services de nommage et d’annuaire.
Contient les classes et interfaces pour l’usage des caractéristiques spécifiques à LDAP.
Si est utilisé, pas besoin d’utiliser ce package car toutes les notifications ont été
sollicitées (requête/réponse entre le client et le serveur).
Lorsqu’une application J2EE doit utiliser une connexion à une base de données, il est
préférable d’utiliser JNDI qui permet au serveur d’application JBOSS d’utiliser un pool de
connexions, et d’obtenir de meilleures performances. Le gestionnaire de connexions JNDI
ouvre les connexions au serveur PostgreSQL et maintient un jeu de connexions, que les
servlets (code java côté serveur) utilisent lorsqu’elles en ont besoin.
Exemple : Un objet datasource fournit toutes les méthodes permettant d’obtenir une
connexion à une base de données par l’intermédiaire d’un service de nommage JNDI. La
méthode principale de cet objet est ‘getConnection()’. Avant qu’un client puisse obtenir
JAVA APPLICATION
JNDI API
NAMING MANAGER
JNDI SPI
LDAP DNS NIS RMI CORBA
Implémentations
JNDI
8. 1ère
partie : Etude de cas – Gestion de centre sportifs
NFE103 – Hubert KADIMA
Manuel Ramos 02/05/2013 8
une connexion, le serveur doit créer cet objet, le placer dans le contexte et l’associer à un
nom. L’obtention d’une source de données se déroule en 2 étapes :
1. Tout d’abord créer un objet ‘InitialContext’ permettant de rechercher dans le
contexte de l’application.
2. Ensuite, appeler la méthode ‘lookup()’ permettant de rechercher la connexion dans
le contexte JNDI. Une fois la connexion obtenu, le client peut l’utiliser de la même
façon qu’un ‘DriverManager’.
C. Architecture technique du système
1. Décrire les fonctions principales réalisées par chacune de ces briques
fonctionnelles de l’architecture ?
A) Le serveur web Apache se charge de gérer les connexions http.
B) Tomcat pour la couche web, c’est un container web gérant l’exécution des JSP et les
servlets. Elles sont regroupées dans des unités de déploiement constituant les applications
web sous la forme d’une archive.
C) Le framework d’application web Struts pour la couche présentation utilisant
l’architecture MVC, ne définit pas le modèle.
D) Le serveur d’application Jboss, un container de composants transactionnels EJB
permet de développer la logique métier grâce aux EJB.
E) Le SGBD PostGreSQL pour la couche persistance va permettre le stockage des
données dans une BD relationnelle à l’aide de SQL se faisant au moyen du protocole
JDBC.
9. 1ère
partie : Etude de cas – Gestion de centre sportifs
NFE103 – Hubert KADIMA
Manuel Ramos 02/05/2013 9
2. Représenter schématiquement l’architecture technique globale de ce système.
Le client peut être léger (http port 8080), lourd (application normale) et rich (en
Ajax et Flex).
STRUTS (contrôleur pour les servlets et vue pour les JSP)
Présentation client
Persistance avec PostGreSQL
Container EJB
API (JNDI, JMS, etc….)
JDBC
Présentation serveur