Vous êtes sur la page 1sur 113

CONSERVATOIRE NATIONAL DES ARTS ET METIERS

CENTRE REGIONAL ASSOCIE DES PAYS DE LA LOIRE


_______________________

MEMOIRE

Prsent en vue dobtenir le

DIPLOME dINGENIEUR CNAM


En

INFORMATIQUE
Par

OLLIVIER Philippe
___________

Participation la conception dune application J2EE


dentreprise.

Dveloppement dune application web de prise de rendez-vous


avec les frameworks Struts et Hibernate

Version finale

Soutenu le 27 octobre 2006


________________

JURY

Prsident : Mme Elisabeth METAIS, Professeur des Universits, CNAM Paris

Membres : M. Henri BRIAND, Professeur des Universits, Univ. De Nantes


M. Guillaume RASCHIA, Matre de Confrence PolytechNantes
M. Yves GRUAU, Directeur Commercial, ASI informatique
M. Didier CONVERT, Directeur Technique, ASI informatique
Il faut agir en homme de pense
et penser en homme daction
(Henri Bergson. Philosophe. 1859-1941)
REMERCIEMENTS
Je tiens remercier les personnes qui mont permis dobtenir un Cong
Individuel de Formation pour raliser ce mmoire.

Les travaux dcrits dans la premire partie ont t raliss au Ministre des
Affaires trangres (MAE) Nantes dans la division des Projets du Systme
dInformation. Je remercie Messieurs Nicolas TISSOT et Thierry CHAMPENOIS
pour mavoir accueilli dans leur service et mavoir propos un sujet de travail
intressant. Je remercie galement Monsieur Yves GRUAU Directeur
Commercial chez ASI pour mavoir mis en relation avec le MAE.

Merci Monsieur Guillaume RASCHIA qui ma assist et conseill tout au long


de ce mmoire.

Je remercie le Prsident et les membres du Jury davoir accept de juger ce


travail.

Enfin je tiens remercier tout particulirement la femme que jaime pour mavoir
soutenu pendant mon mmoire et nos enfants pour leur joie de vivre.
Table des matires

1. INTRODUCTION.......................................................................................................... 6
2. PARTIE 1 : LE PROJET RENDEZ-VOUS ........................................................... 8
2.1. INTRODUCTION ........................................................................................................... 9
2.2. ETAT DE LART DU DEVELOPPEMENT DAPPLICATION WEB ......................................... 9
2.3. METHODES POUR LA CREATION DAPPLICATIONS WEB ............................................. 21
2.4. ORGANISATION DU MAE.......................................................................................... 27
2.5. SOLUTIONS EXISTANTES POUR LA PRISE DE RENDEZ-VOUS ....................................... 29
2.6. OUTILS ACUBE ......................................................................................................... 32
2.7. NORMES ACUBE ....................................................................................................... 35
2.8. METHODOLOGIE DE PROJET ACUBE .......................................................................... 36
2.9. UML DANS ACUBE ................................................................................................... 38
2.10. PRESENTATION DU PROJET RENDEZ-VOUS DU MAE ................................................. 39
2.11. MA CONTRIBUTION AU PROJET RENDEZ-VOUS DU MAE ........................................... 41
2.12. CONCLUSION ............................................................................................................ 45
3. PARTIE 2 : CREATION DUNE VERSION SIMPLIFIEE DE LAPPLICATION
RENDEZ-VOUS AVEC J2EE ........................................................................................ 46
3.1. INTRODUCTION ......................................................................................................... 47
3.2. CAHIER DES CHARGES DE LAPPLICATION RENDEZ-VOUS SIMPLIFIEE.................. 47
3.3. SELECTION ET INSTALLATION DE LOUTILLAGE ........................................................ 51
3.4. FORMATION J2EE..................................................................................................... 60
3.5. PRESENTATION DE LAPPLICATION RENDEZ-VOUS REALISEE .................................. 100
3.6. CONCLUSION .......................................................................................................... 105
4. CONCLUSION........................................................................................................... 106
5. GLOSSAIRE............................................................................................................... 107
6. BIBLIOGRAPHIE ..................................................................................................... 109
7. ANNEXES................................................................................................................... 110
7.1. FILEZILLA ............................................................................................................... 110
7.2. GIMP ..................................................................................................................... 110
7.3. IRFANVIEW ............................................................................................................. 110
7.4. JARSBROWSER 3.0.................................................................................................. 110
7.5. FREEDIFF................................................................................................................ 110
7.6. JDECOMPILER ......................................................................................................... 111
Table des figures
FIGURE 1 : LE CLIENT-SERVEUR A CLIENT PASSIF ........................................................................ 9
FIGURE 2 : LE CLIENT-SERVEUR DE DONNEES ............................................................................ 10
FIGURE 3 : LE CLIENT-SERVEUR DISTRIBUE ............................................................................... 10
FIGURE 4 : LE CLIENT-SERVEUR HTML/WEB ........................................................................... 11
FIGURE 5 : DEROULEMENT DE L'EXECUTION D'UN PROGRAMME CGI ........................................ 13
FIGURE 6 : EXECUTION DUNE APPLICATION PHP ..................................................................... 15
FIGURE 7 : ARCHITECTURE D'UN SERVEUR D'APPLICATION J2EE .............................................. 16
FIGURE 8 : LE COMMON RUNTIME LANGAGE ............................................................................ 18
FIGURE 9 : ITERATIONS, PHASES RUP ET JALONS PRINCIPAUX .................................................. 23
FIGURE 10 : L'APPROCHE MATRICIELLE D'UNIFIED PROCESS ..................................................... 24
FIGURE 11 : ORGANISATION DU MAE....................................................................................... 27
FIGURE 12 : RECAPITULATIF DES LIVRABLES............................................................................. 37
FIGURE 13 : MAQUETTE - GESTION DES SEMAINES TYPES ......................................................... 43
FIGURE 14 : MODELISATION DES DONNEES REALISEE AVEC DBDESIGNER ................................. 48
FIGURE 15 : MODELISATION DES DONNEES SIMPLIFIEE.............................................................. 49
FIGURE 16 : DIAGRAMME DES CAS D'UTILISATION REALISE AVEC ARGOUML ........................... 50
FIGURE 17 : ARCHITECTURE RETENUE POUR LAPPLICATION RENDEZ-VOUS ............................. 53
FIGURE 18 : ARCHITECTURE DE SPRING .................................................................................... 58
FIGURE 19: ARCHITECTURE COMBINANT LES FRAMEWORKS STRUTS, SPRING ET HIBERNATE... 58
FIGURE 20 : CREATION D'UN DIAGRAMME DE CLASSES AVEC ARGOUML .................................. 59
FIGURE 21 : EXEMPLE HTML ................................................................................................... 62
FIGURE 22 : COMPOSANTS DU PATTERN MVC TYPE 2............................................................... 75
FIGURE 23 : STRUTS ET LE MODELE MVC ................................................................................. 77
FIGURE 24 : PAGE CREEE AVEC LA TECHNOLOGIE TILES ............................................................ 90
FIGURE 25 : ARCHITECTURE DHIBERNATE ............................................................................... 92
FIGURE 26 : REGLES DE NAVIGATION ...................................................................................... 100

5
1. INTRODUCTION
Contexte gnral

Il y a un peu plus de 10 ans, la premire fois ou lon ma parl dInternet, je me


rappelle avoir mis des doutes sur le fait que cette technologie pourrait supplanter le
minitel (technologie franaise apparue au dbut des annes 1980 permettant pour la
premire fois des particuliers daccder depuis leur domicile une multitude
dinformations en ligne). Peu de temps aprs, lun de mes fournisseurs mayant
permis de participer une dmonstration jai pu constater par moi mme quInternet
tait bel et bien un outil rvolutionnaire.

Aujourdhui beaucoup dapplications informatiques destination du grand public ou


des entreprises sont crites pour tre accessibles depuis un navigateur 1 Web.
Linformatique sest dmocratise. Plus dun mnage sur deux possde un micro-
ordinateur (tude Insee - mars 2005). 37 % des foyers franais sont connects
Internet. 21 % sont connects en haut-dbit (majoritairement avec ADSL) et peuvent
accder des supports multimdia (images, vidos, musiques) avec un confort
satisfaisant.

tre capable de dvelopper pour un cot raisonnable des applications web robustes
et faciles faire voluer est devenu aujourdhui un enjeu important.

Objectifs du mmoire

Il est ncessaire pour le chef de projet charg de raliser une proposition pour un
client de bien comprendre le besoin de ce dernier et destimer au plus juste la charge
de travail. Une bonne comprhension des contraintes techniques du projet peut lui
permettre destimer les travaux en limitant les risques et sans avoir prendre conseil
auprs dexperts. De mme, les comptences techniques du chef de projet peuvent
lui tre utiles lorsquil est charg de raliser un recrutement, lorsquil doit dfendre
une proposition devant un client ou lorsquun problme se pose pendant le
dveloppement.

Aujourdhui, les technologies java et open source 2 sont beaucoup utilises pour
dvelopper des applications web.

1
Navigateur (Web Browser) : Logiciel dont la fonction premire est d'interprter les
adresses des pages Web, de les afficher et d'exploiter les liens hypertextes
l'intrieur de celles-ci (ex : Internet Explorer de Microsoft).
2
Open Source : FONTAINE (2003) donne une dfinition prcise des logiciels Open
Source en sappuyant sur celle donne par les membres de la FSF (Free Software
Foundation). Nous retiendrons que les logiciels Open Source doivent tre distribus
gratuitement et que le code source complet doit tre disponible. Enfin il est possible
de modifier un logiciel Open Source, de distribuer la version modifie et de lexcuter
pour n'importe quel usage.

6
Lobjectif de ce mmoire qui sest droul sur la priode de septembre 2005 juin
2006 tait de me permettre dapprofondir mes connaissances dans le domaine du
dveloppement web et notamment en ce qui concerne les outils puisque je ne
possde pas cette exprience et que je la juge ncessaire pour la profession que
jexerce actuellement savoir celle de chef de projet informatique.

Plan du mmoire

Ce mmoire sarticule autour de deux parties.

La premire est en lien avec lexprience acquise lors de ma participation au projet


rendez-vous du MAE. Aprs avoir balay rapidement les technologies les plus
utilises actuellement pour le dveloppement dapplication web, vous y trouverez
une description des objectifs de ce projet et une prsentation de la manire dont il a
t abord (prsentation de la filire Acube 3 cre par le MAE pour dfinir
comment grer les projets de dveloppement dapplication web tant sur le plan
technique quorganisationnel). Cette partie sera galement loccasion de prsenter
brivement quelques mthodes pouvant tre utilises pour grer un projet de
dveloppement (RUP, XP) en fixant leurs limites.

La deuxime partie de ce mmoire concerne la ralisation dune application


rendez-vous . Elle contient une description des objectifs atteindre pour le projet
rendez-vous , une prsentation, une justification des technologies retenues
(J2EE, struts, hibernate, ) et une prsentation du rsultat obtenu.

Aprs une conclusion qui sera loccasion de faire le bilan sur les sujets tudis et de
parler des perspectives venir, vous trouverez en annexe la description de quelques
outils dont la connaissance peut savrer utile pour le dveloppeur ou le chef de
projet J2EE.

Avertissement

Ce mmoire ne prtend pas tudier de faon exhaustive toutes les technologies ou


mthodes pouvant tre mises en oeuvre pour le dveloppement dune application
web avec J2EE. Le sujet est trop vaste et en perptuelle volution. Nous nous
limiterons donc la prsentation de solutions reconnues en privilgiant les solutions
open source permettant de raliser les dveloppements sous MS Windows.

3
Acube, RUP, XP, J2EE, Struts, Hibernate : Les acronymes prsents dans
lintroduction seront explicits dans la suite de ce document ainsi que dans le
glossaire.

7
Partie 1

2. PARTIE 1 : LE PROJET RENDEZ-VOUS

8
Partie 1

2.1. Introduction

De Septembre 2005 Dcembre 2005, jai particip en tant que chef de projet au
lancement et lanalyse des besoins du projet rendez-vous au sein du
dpartement des applications Diplomatiques et Consulaires (CXI/PSI/DC) du
Ministre des affaires trangres (MAE) Nantes. Cette partie se rapporte
lexprience acquise au cours de cette priode.

2.2. Etat de lart du dveloppement dapplication web

Il existe de nombreuses possibilits pour crer des applications web. La solution


base sur le concept appel CGI (Common Gateway Interface) est la plus ancienne.
Elle ne sappuie pas sur un serveur dapplication. Les solutions les plus utilises
aujourdhui sont le PHP, .Net et J2EE. De nouvelles solutions apparaissent
rgulirement sur le march. On entend beaucoup parler de la solution Ruby on rails
depuis peu.

2.2.1. Architecture gnrale dune application web

Toutes les architectures informatiques client-serveur prsentent des caractristiques


communes :

 Elles intgrent une interface utilisateur (souvent graphique)


 Elles fonctionnent grce des applications
 Les applications qui les animent manipulent des donnes

Cest la rpartition de ces trois composantes entre le client et le (ou les) serveur(s)
qui caractrise les diffrentes architectures.

Terminal ou Mainframe
mulateur
Logique de
prsentation +
Donnes Traitements

Figure 1 : Le client-serveur client passif

Dans cette architecture apparue bien avant les technologies Internet, toute la logique
et les donnes sont sur le serveur. Le terme client-serveur appliqu ce type
darchitecture est un peut abusif puisque le client nexcute rien. Cette solution est
scurise, robuste et le dveloppement des applications est simple. Linterface

9
Partie 1

graphique est souvent pauvre et lutilisateur naccde quaux applications prsentes


sur le mainframe.

PC
SGBDR
Flux de
donnes

Traitements Donnes

Figure 2 : Le client-serveur de donnes

Ce type darchitecture est apparu au milieu des annes 80. Tout est sur le client,
sauf les donnes. Linterface utilisateur est plus conviviale, mais le dploiement
grande chelle est complexe et coteux.

PC Serveur Serveur de
Middleware RPC

Middleware RPC

1 dapplication 2 donnes

Appels Flux de
RPC donnes
Traitements Traitements (SGBDR, )

Figure 3 : Le client-serveur distribu

Dans cette architecture le client se trouve dcharg dune bonne part des traitements
et les donnes ne circulent presque plus quentre le serveur dapplication et la base
de donnes. Ces systmes sont bass sur des technologies en gnral propritaires.
Ils ne solutionnent pas compltement la problmatique de dploiement.

10
Partie 1

API
Navigateur 1 Serveur Serveur Serveur de
Internet Web dapplication 3 donnes

Visualise 2
5
les pages

donnes
prsentation

Flux de
Logique de

HTML
Traitements (SGBDR, )
(HTML)

Figure 4 : Le client-serveur HTML/Web

Cette architecture est la plus rpandue aujourdhui pour les applications web. Le
navigateur agit comme un simple afficheur de pages HTML 4 et nexcute aucun
traitement (sauf peut-tre des traitements locaux comme par exemple la gestion des
erreurs de saisie en JavaSript). Lappel dune page dynamique se droule de la
faon suivante

 1). Affichage du formulaire de saisie sur le navigateur; remplissage et


validation des champs, transfert des saisies vers le serveur web (requte http
5
envoye par le navigateur).
 2). Si l'URL 6 porte sur une page dynamique c'est dire ncessitant un
traitement, le serveur Web aiguille cette demande vers le serveur
d'application.
 3). Le serveur dapplication effectue le traitement.
 4). Le serveur d'application renvoie le rsultat (page HTML ou autre format) au
serveur Web.
 5). Le serveur Web se charge de router le rsultat vers le bon destinataire.

Le rle du serveur Web est indispensable mais relativement limit sur le plan
applicatif. Grossirement, il transmet au client lui ayant fait une demande HTTP via

4
HTML (Hyper Text Mark-up Language) : Langage utilis pour dcrire les pages
web. Des balises sont insres dans le texte pour dfinir les fontes de caractres, les
styles, ainsi que les liens vers d'autres documents.
5
http (Hypertext Transfer Protocol) : Protocole rgissant les communications entre
les serveurs du Web. Sa fonction premire est d'tablir la connexion avec un
serveur, qui contient la page que l'on veut voir afficher, et de rapatrier cette page sur
le poste de l'internaute.
6
URL : Une URL (Uniform Resource Locator) est ladresse dune ressource sur
Internet. Pour une page par exemple, son URL est compose du protocole http://
suivi du nom de domaine du serveur, puis du chemin daccs la page.

11
Partie 1

URL, les fichiers statiques prsents sur le disque dur (pages HTML , images, fichiers
CSS,...).

Le serveur d'application est l'environnement d'excution des applications ct


serveur. Il prend en charge l'ensemble des fonctionnalits qui permettent N clients
d'utiliser une mme application :

 Gestion de la session utilisateur.


 Gestion des montes en charge et reprise sur incident.
 Ouverture sur de multiples sources de donnes.

Le march des serveurs Web est largement domin par Apache, un serveur Web
issu du logiciel libre. Si on ajoute aux parts de march d'Apache celles de Microsoft
IIS, on couvre plus de 90% du march.

Larchitecture client-serveur HTML/Web permet de contourner le problme de


dploiement en conservant une interface graphique. Le client peut se connecter
des applications hberges sur diffrents serveurs. Pour maintenir un contexte de
session utilisateur, il faut utiliser une session virtuelle car le protocole http fonctionne
en mode non connect. Le protocole http sappuie sur le protocole TCP/IP.

Il existe aujourdhui deux grands modles darchitecture de serveurs dapplications :

 Java 2 Entreprise edition (J2EE) soutenu par Sun, IBM, Oracle, HP, BEA,
etc. ;
 .NET propos et soutenu par Microsoft.

Les applications Web peuvent sappuyer sur une architecture lgrement diffrente
(ex : architecture code mobile). Elles sappuient cependant toujours sur la
technologie Internet (navigateur internet, HTML, serveur http, ). A la diffrence des
sites Internet qui sont statiques, une application web permet daccder de manire
dynamique une base de donnes par le biais de requtes.

Certaines notions seront dcrites plus en dtail dans la partie consacre la


formation J2EE.

2.2.2. CGI (Common Gateway Interface) :

CLOUX (2002) nous rappel que CGI (Common Gateway Interface) est une norme
apparue presque en mme temps que les premires spcifications de HTML avec
pour objectif la cration de documents HTML de manire dynamique.

12
Partie 1

Le droulement de lappel dun programme CGI peut tre reprsent par la figure
suivante :

Poste client TCP/IP Serveur Web

Navigateur http://www.RDV.fr/cgi-bin/Enreg?nom=Dupont Dmon


HTTP
Nom : Dupont

Submit 6

5
Document
HTML 2
Document
HTML

3 Variables
denvironnement

SGBD Programme CGI


Serveur de donnes 4

Figure 5 : Droulement de l'excution d'un programme CGI

1. Lutilisateur complte un formulaire HTML puis clique sur un bouton Submit


prsent sur ce formulaire. Le navigateur envoie une requte http au serveur
Web contenant le nom dun programme CGI localis dans le rpertoire cgi-bin
de ce serveur. Les paramtres du formulaire sont transmis soit dans une
chane de caractre la fin de lURL (mthode GET), soit dans le corps de la
requte http (mthode POST).
2. Le serveur Web (galement appel dmon http) reoit la requte. La
rfrence au rpertoire cgi-bin lui indique quil doit procder lexcution dun
programme au lieu de renvoyer simplement le contenu dune page HTML
statique. Il excute alors ce programme dans un processus distinct en mettant
sa disposition certaines variables denvironnement (les variables CGI).
3. En fonction des informations de contexte (apportes par les variables CGI) et
des informations saisies par lutilisateur, le programme peut extraire des
enregistrements dans une base de donnes ou le mettre jour.
4. Les donnes extraites de la base sont transmises au programme CGI.
5. Une nouvelle page HTML est alors gnre dynamiquement. Ce flux est
intercept par le serveur Web.
6. Le serveur Web redirige le flux dynamique intercept vers le navigateur Web
qui se charge de lafficher.

13
Partie 1

Pour raliser des programmes CGI, le langage le plus utilis est le langage Perl. Il
est possible dutiliser dautres langages comme le langage C par exemple. Le
langage Perl est un langage de script bien connu des dveloppeurs du monde Unix,
bien que moins performant que le C car interprt, il est aussi beaucoup plus simple
utiliser.

Larchitecture CGI est simple, mais associe des performances mdiocres lorsque
le nombre dutilisateurs connects simultanment au mme serveur Web augmente.
En effet, pour chaque appel dune page dynamique, un nouveau processus est
lanc. Or lallocation dun nouvel espace mmoire avec un nouvel environnement
dexcution est consommateur de ressources systme.

Dautre part, lorsque des oprations sont effectues sur une base de donnes, une
connexion au SGBD est initie pour chaque page Web dynamique. Cette connexion
est ensuite ferme ds que la requte pour cette page est termine. Les temps de
rponse sen trouvent nettement allongs.

Enfin, les applications CGI sont caractrises par labsence de sparation des
traitements et de linterface graphique. Le programme CGI produit un cran HTML en
rponse une requte du client. Toute modification de laspect de cet cran
ncessite une modification du code du programme, ce qui peut poser dimportants
problmes de maintenance.

2.2.3. PHP

FONTAINE (2003) crit que le PHP est un langage de script open source fortement
inspir du C et de Perl. Cest le 5ime langage le plus utilis dans le monde. Il est
interprt et ne ncessite pas dtre compil pour tre excutable. Il est souvent
associ la base de donnes open source MySQL et au serveur Apache pour
raliser des sites web dynamiques. Il permet dexploiter bien dautres bases de
donnes, notamment celles dotes dun pilote ODBC (Open Database Connectivity).
Les applications dveloppes avec PHP / MySql peuvent tre hberges pour un
prix modeste. PHP est support par le serveur Web Apache, mais fonctionne
galement avec dautres serveurs Web (IIS de Microsoft, IPlanet, ).

Le langage PHP permet d'crire des pages dynamiques rapidement.

14
Partie 1

Exemple : MaPage.PHP

<html>
<head>
<title>Exemple</title>
</head>
<body>

<?php
echo "Message affich par un script PHP";
?>

</body>
</html>

Le code PHP est inclus entre une balise de dbut et une balise de fin, directement
dans la page HTML. Ce code est excut sur le serveur (dans lexemple ci-dessus
ce code permet laffichage dun texte). Le client ne reoit que le rsultat du script,
sans aucun moyen d'avoir accs au code qui a produit ce rsultat.

2
Navigateur 1 Serveur
Interprteur
Internet Web Page HTML
PHP
avec du
code PHP
5 Intgr 3

Page HTML avec les rsultats 4


donns par lexcution du Base de
programme PHP donne

Figure 6 : Excution dune application PHP

 1). Le serveur Web reoit la requte http envoye par le navigateur ;


 2). Il demande linterprteur PHP de complter une page HTML contenant
du code PHP ;
 3). Linterprteur PHP interprte la vole le code PHP de la page et le
remplace par le rsultat obtenu partir de la base de donnes;
 4). Le serveur Web reoit la page HTML complte;
 5). Il se charge de la router vers le bon destinataire.

PHP fonctionne sur de multiples plates-formes (Windows, Unix, Linux, Mac OS). Des
extensions dynamiques permettent au PHP de gnrer des fichiers PDF, de
sinterfacer avec des serveurs de messagerie, des serveurs LDAP, de gnrer de la
cartographie, des images et graphiques la vole, ou encore de gnrer des
animations flash.

Le succs du PHP est li sa simplicit de mise en uvre et sa gratuit. Dun


simple langage de script (excut ct serveur) conu pour la premire fois en 1995
par Rasmus Lerdorf, PHP sest peu peu enrichi de nombreuses fonctionnalits.

15
Partie 1

Grce lintgration dun vrai modle objet, du support de XML et des services web,
PHP 5 saffirme aujourdhui comme une plate-forme de dveloppement concurrente
de J2EE et de .NET.

2.2.4. J2EE

SUN (le concepteur de java) a mis en place un ensemble de technologies permettant


de raliser des applications web reposant sur java. Ces technologies sont
regroupes sous le nom de J2EE (Java 2 Entreprise Edition).

J2EE est une norme qui dfinit une infrastructure dexcution (pour faire tourner les
applications) et un ensemble de services accessibles via lAPI J2EE. Le standard
J2EE sappuie sur plusieurs piliers :

 La spcification J2EE ;
 Une suite de tests de compatibilit (J2EE compatibility test suite) qui garantit
le respect des spcifications par les diteurs ;
 Une implmentation de rfrence

Cette implmentation de rfrence est produite par JavaSoft (filiale de Sun) et est
nomme JAVA EE 5 SDK. Il sagit dune implmentation des API J2EE qui na pas
pour vocation dtre utilise en production. Tomcat est l'implmentation de rfrence
pour la partie Conteneur de Servlets.

J2EE est aujourdhui support par de nombreux serveurs. Au total, on compte prs
dune trentaine dimplmentations commerciales ou Open Source de la spcification
J2EE.
Serveur J2EE

Conteneur de Servlets
Client
(navigateur)
Servlet JSP

Client
(navigateur,
application) EJB EJB
Base de
donnes
Conteneur dEJB

JDBC JNDI JTA JavaMail JMS JAAS

Figure 7 : Architecture d'un serveur d'application J2EE

Une Servlet est un programme java excut ct serveur dans un conteneur. Une
JSP (Java Server Pages) est une page HTML contenant du code java. Les JSP sont
transformes en servlets lexcution. La technologie JSP permet de gnrer des

16
Partie 1

pages web dynamiques partir dun principe assez proche de celui dont nous avons
parl pour PHP. Nous reviendrons sur ces notions en partie 2.

Les EJB (Entreprise Java Beans) sont le moyen dimplmenter les technologies
composants pour J2EE. Un EJB est un composant Java. Il sexcute dans un
conteneur qui lui fournit des services tels que la persistance.

Lutilisation des EJB nest pas indispensable pour dvelopper une application web
avec J2EE. Il est possible dutiliser un serveur dapplication qui ne gre pas les EJB
mais uniquement les Servlets (ex : Tomcat est un conteneur de Servlets). Cest le
choix qui sera fait dans la suite de cette tude. Les EJB ne seront donc pas tudis
plus en dtail dans ce mmoire.

Des API (JDBC, JNDI, JTA, JavaMail, JMS, JAAS, ) sont employes pour fournir
des fonctionnalits aux applications crites en Java (connexion une base de
donne, localisation et utilisation de ressources, utilisation de transactions, envoi et
rception de courriel, envoi et rception de messages, gestion de laccs aux
ressources).

La solution J2EE repose sur le langage java. Le code source java transform en
bytecode est interprt par une machine virtuelle (JVM : Java Vitual Machine) lors de
lutilisation de lapplication. Ceci permet de crer des applications portables
(indpendantes de toute plate-forme). Il est possible de dvelopper une application
web J2EE sous MS Windows puis de la dployer sur un autre systme (linux par
exemple).

Dfinir un environnement complet de dveloppement J2EE peut savrer complexe


car il existe de nombreux outils et certaines versions de ces outils sont incompatibles
entre elles. Il existe maintenant un grand nombre doutils open source de bonne
qualit. Dans ce mmoire, nous nous intresserons uniquement au dveloppement
dapplication web en environnement J2EE sous MS Windows avec des outils open
source.

2.2.5. .NET

Cre en 2000, ASP.NET est la technologie de dveloppement Internet du


framework 7 .NET (plate-forme de dveloppement d'application). Cest la solution
propritaire de Microsoft pour le dveloppement dapplications web.

Lensemble des technologies de base de la plate-forme .NET sont regroupes au


sein du .NET framework. Les principaux composants de .NET Framework sont le
Common Language Runtime (CLR) et la bibliothque de classes .NET Framework,
qui contient ADO.NET, ASP.NET et Windows Forms.

7
Framework : Bibliothque de classes fournissant une ossature gnrale pour le
dveloppement d'une application. Struts est un exemple de framework en Open
Source, bas sur l'architecture MVC.
Struts, MVC : Ces notions sont dfinies plus loin.

17
Partie 1

Le CLR est essentiellement une machine virtuelle permettant dexcuter des


programmes compils dans un code intermdiaire. Le CLR se propose dabstraire la
plupart des concepts objet de sorte quils puissent tre utiliss par plusieurs
langages de programmation. Plusieurs langages sont supports dont Visual Basic, et
C#. Le langage de programmation C# cr par Microsoft est adapt au
dveloppement .NET. Ce langage correspond une version simplifie du langage
C++ qui le fait ressembler Java.

Grce au CLR, un programme ralis dans un langage X peut crer des objets qui
hritent dobjets crs dans un langage Y (diffrent de X). Pour quun programme
soit excutable par CLR il ne doit pas tre compil en code natif excutable mais en
un code intermdiaire appel MSIL pour MicroSoft Intermediate Langage.

Code MSIL
source Compilateur

Class Loader
MSIL

Compilateur JIT + vrificateur de code MSIL

Code natif approuv


Bibliothques
de base
Excution

CLR

Figure 8 : Le Common Runtime Langage

La bibliothque de classes .NET Framework contient ADO.NET (ADO pour ActiveX


Data Object) dont la vocation est de fournir un accs orient objet aux sources de
donnes et ASP.NET (ASP pour Active serveur Pages) qui peut tre compar ce
qui est offert par JSP dans la technologie J2EE.

.NET contient encore dautres outils qui peuvent tre compars avec ce qui existe
dans le monde Java (ex : les assemblies sont des fichiers darchive destins
simplifier le dploiement. Il sont quivalents aux fichiers jar du langage java).

La mise en uvre de ASP.NET ncessite des notions en programmation oriente


objet et la matrise dun langage objet tel que C# ou VB.NET. Lutilisation
dASP.NET ncessite galement la matrise doutils de dveloppement tel que
Microsoft Visual studio .NET (environnement de dveloppement visuel commercial).
Il est possible de dvelopper une application ASP.NET avec des outils gratuits tels

18
Partie 1

que Web Matrix et le framework SDK (environnement de dveloppement en ligne de


commande), mais la productivit du dveloppeur est alors moins leve. Le projet
open source Mono a pour objectif de raliser une implmentation multiplateforme du
framework .NET.

2.2.6. Ruby on Rails (RoR)

Une nouvelle technologie permettant de construire des applications web, rapidement


et proprement fait actuellement beaucoup parler delle sur Internet : Ruby on Rails.

Ruby on Rails, galement appel RoR ou Rails est un framework crit en Ruby dont
la premire version est apparue en 2004.

Ruby est un langage de programmation objet disponible depuis 1995. Il s'agit d'un
langage interprt dont la syntaxe est relativement proche de Perl. Ruby se veut tre
un langage simple (grce une syntaxe cohrente) et surtout puissant. Cette
puissance vient notamment du fait que tout est objet en Ruby, mme les entiers ou
les chanes de caractres par exemple. En outre, le langage comprend aussi la
notion dhritage (mais pas multiple), un ramasse-miettes pour la gestion de la
mmoire (comme en Java), les gestion des exceptions, des expressions rgulires,
etc.

Rails fonctionne selon deux grands principes qui sont ne pas se rpter et
convention plutt que configuration.

Le premier signifie que chaque dclaration ne doit tre faite quune seule fois.
Comme il sagit dun framework en couches complet, la plupart des composants sont
lis entre eux. Par exemple, ActiveRecord na pas besoin quon lui fournisse les
colonnes des tables de la base de donnes. Il les trouve tout seul.

Le second, lui, explique que le programmeur ne doit programmer que ce qui nest
pas conventionnel. Par exemple, les noms de contrleurs sont associs
automatiquement la table ayant le mme nom queux au pluriel. Si la table ne porte
pas ce nom, il faut le spcifier au contrleur.

Rails est bas sur une architecture MVC (Modle Vue Contrleur) 8 .

Les modles

Ils maintiennent ltat de lapplication et imposent toutes les rgles mtier qui
sappliquent aux donnes. Ce sont, en quelque sorte, les gardiens de lintgrit des
donnes.

8
MVC (Model View Controller) : Ce pattern architectural est recommand pour la
conception des applications web dynamiques. Il propose dorganiser lapplication en
3 couches spares. Le but est de sparer, lors de la conception, laccs la base
de donnes (M), la partie visible par lutilisateur (V) et la distribution des requtes aux
composants appropris en fonction de la logique de lapplication (C).

19
Partie 1

Dans Rails, cest ActiveRecord qui gre les modles et regroupe les classes
assurant la gestion des donnes, venant des bases de donnes. Il suffit donc de
crer un contrleur hritant de ActiveRecord pour que Rails dtecte
automatiquement les tables a utiliser et les grer avec des commandes simples.

Les vues

Cest la partie concernant lIHM de lapplication.

Dans le cas de Rails, il sagit de fichiers .rhtml contenant du code html ainsi que du
script Ruby afin de les lier lapplication.

Les contrleurs

Ils reoivent des lments du monde extrieur, interagissent avec le modle et


affichent ensuite une vue approprie.

Rails offre un systme appel scaffolding (que lon peut traduire par chafaudage ou
structure en franais). Cette baguette magique permet de gnrer trs rapidement
les lments Vue et Contrleur ncessaires la gestion courante des donnes
issues du Modle (Ajout, Affichage, Modification, Suppression), sans avoir crire
une seule ligne de code. Il est bien entendu possible dtendre ce fonctionnement,
ou tout simplement de tout construire manuellement.

Bases de donnes

Rails supporte plusieurs bases de donnes DB2, MySQL, Oracle, PostgreSQL,


SQLServer, SQLite.

Serveur HTTP

Rails est install avec WEBrick (serveur http crit en Ruby). Idal pour une petite
structure car trs simple dutilisation. Si le serveur doit accueillir beaucoup de
demandes, lutilisation de serveurs plus puissant comme Apache est recommande.

Rails et Ajax

Rails implmente une bibliothque de fonctions rendant lutilisation de AJAX


beaucoup plus facile.

20
Partie 1

AJAX (Asynchronous JavaScript and XML) est une mthode apparue en 2005 pour
dvelopper des applications web. AJAX est base sur un ensemble de technologies
couramment utilises sur le web :

 HTML ou XHTML pour la structure smantique,


 CSS pour la prsentation,
 DOM (Document Object Model) et JavaScript pour manipuler la page en
cours,
 Enfin, XML, XSLT et lobjet XMLHttpRequest pour dialoguer de faon
asynchrone avec le serveur web.

AJAX permet de charger lessentiel de la page une seule fois (les donnes variables
de la page sont mises jour de faon asynchrone sans avoir recharger la page
complte chaque fois).

Modules

De nombreux modules sont dores et dj disponibles, comme par exemple celui


permettant de grer lauthentification dun utilisateur.

2.2.7. Quelle solution utiliser ?

Pour le moment le march de lemploi se concentre essentiellement sur deux


technologies ; J2EE et ASP.NET 9 ; avec une prfrence pour J2EE. La solution
PHP est trs utilise en raison de sa simplicit de mise en uvre, mais souvent pour
des sites personnels ou pour des sites de petite envergure car juge moins
professionnelle. ASP.NET est une solution propritaire propose par Microsoft. Cette
solution est considre comme tant moins portable que la solution J2EE. La
solution Ruby on Rails saura-t-elle simposer ? Seul lavenir permettra de rpondre
cette question. Lutilisation de la technologie CGI pour dvelopper de nouveaux sites
ne se justifie plus vraiment car il existe des solutions plus performantes. Il est
cependant possible dutiliser CGI pour des sites simples sans grands trafics. Dans ce
mmoire nous tudierons plus en dtail la solution J2EE.

2.3. Mthodes pour la cration dapplications web

La problmatique dindustrialisation des dveloppements dapplications web devient


une proccupation majeure des responsables informatiques.

CLOUX (2003) prsente les solutions qui peuvent tre adoptes pour tenter de
rpondre ce problme complexe en sappuyant sur deux visions majeures : RUP
(Rational Unified Process) et XP (extreme programming).

9
Le comptage des offres parues dans les numros de juin 2006 de lhebdomadaire
courrier cadres fait ressortir nettement cette tendance. Cet indicateur est cependant
prendre avec prcaution en raison de leffet amplificateur de loffre par rapport au
march rel.

21
Partie 1

Il nexiste pas de solution miraculeuse adapte toutes les entreprises pour


optimiser la production dapplication web ou garantir cot sr le succs dun projet.
Chaque projet est unique et il faut mettre toutes les chances de son ct en insistant
sur les axes suivants :

 Mthodes,
 Choix technologiques,
 Formation, cohsion et motivation de lquipe de dveloppement.

Le CMMI (Capability Maturity Model Intgration) est un rfrentiel qui permet


didentifier pour une entreprise quelle niveau elle se situe en ce qui concerne le
processus de dveloppement dapplication. CMMI comporte cinq tages qui
correspondent des stades croissants de maturit du processus de
dveloppement (1 Initial, 2 Reproductible, 3 Dfini, 4 Matris, 5 Optimisation).

Les rsultats disponibles fin mars 2002 montrent que parmi 1158 organismes stant
auto-valus :

 24,8 % taient au niveau 1,


 39,9 % taient au niveau 2,
 23,6 % taient au niveau 3,
 6, 0 % taient au niveau 4 et
 5,5 % taient au niveau 5.

Mme si ces chiffres sont relativement anciens, il existe probablement encore


aujourdhui pour bon nombre dentreprises une large place pour lamlioration du
processus de dveloppement.

2.3.1. Rational Unified Process (RUP)

CLOUX (2003) prsente UP (Unified Process) et son implmentation commerciale


RUP.

Promu par Rational, RUP propose la fois une mthodologie (UP) issue des
meilleures pratiques en gnie logiciel et un outil constitu essentiellement de
documents types (modles de documents, canevas de projets).

Vocabulaire et concepts :

Artefacts : Elments produit pour la gestion de projet (ex : planning) ou pour la


fabrication du logiciel (ex : code source). RUP prend en charge le cycle de vie de la
deuxime catgorie dartefacts.

Rles : Un individu peut assumer plusieurs rles (analyste, dveloppeur, testeur,


manager, etc.).

Disciplines : 9 disciplines sont dfinies dans RUP (Expression des besoins,


Spcifications, Analyse & Conception, Mise en oeuvre, Tests, Dploiement, Gestion

22
Partie 1

de configuration, Conduite de projet, Logistique). Pour chaque discipline les activits


raliser et les artefacts produire sont prciss sur un diagramme UML.

Fondements de RUP :

RUP dcoupe les projets de dveloppement de logiciels en processus et documente


pour chaque processus les bonnes pratiques que doivent respecter les acteurs. RUP
peut thoriquement sadapter la taille du projet et au niveau de comptence des
acteurs mais non sans difficults.

RUP est :
 Pilot par les cas dutilisations (ceux-ci doivent tre labors avec prcision
le plus en amont possible);
 Centr sur larchitecture (la description du systme fait partie du processus
et doit tre ralise selon diffrents points de vue : celui de lanalyste, du
dveloppeur, );
 Itratif et incrmental (itratif pour faire diminuer les risques ds le dbut du
projet et incrmental car chaque itration doit enrichir le rsultat final).

Les itrations en nombre variables sinscrivent dans 4 phases successives. Chaque


phase se termine par un jalon :

Viabilit de lapplication (cot, Premires versions compltes


risques, dlais, primtre, etc.) excutables de lapplication

Inception Elaboration Construction Transition

Architecture stable + planning Version complte de lapplication +


ditration de construction guides dutilisation et dinstallation
Figure 9 : Itrations, phases RUP et jalons principaux

23
Partie 1

Le cycle de dveloppement est itratif avec un nombre variable ditrations dont les
terminaisons correspondent des livrables. Au fil de lavancement du projet, les
poids respectifs des diffrentes activits vont voluer (voir la figure ci-dessous).

Figure 10 : L'approche matricielle d'Unified Process


(source http://www.jerome.capirossi.org/prj_mgt/cycle_10.htm)

Bonnes pratiques RUP

 Dvelopper itrativement comme expliqu prcdemment


 Grer les exigences du client (Les fonctionnalits attendues sont exprimes
par des cas dutilisation, un document de spcifications consigne toutes les
exigences, les diffrentes versions de ces artefacts sont conserves).
 Utiliser une architecture base de composants pour augmenter la
rutilisation et faciliter les tests
 Modliser avec UML
 Vrifier continuellement la qualit (conformit aux exigences du client)
 Grer les changements avec des outils appropris :
o Par exemple CVS pour la gestion des versions et du contrle daccs
des artefacts,
o Ant et Junit pour dployer et tester les diffrentes versions,
o Bugzilla pour la gestion des requtes de changement et des rapports
dincidents.

24
Partie 1

Les outils de RUP

Le support principal de RUP est un Intranet compos denviron 3000 fichiers :


 Pages HTML ;
 Modles HTML, Word ;
 Modles MS-Project ;
 Modles SoDA (outil de gnration de documentation de projet de Rational).

Conclusion

Pour BENARD et MERAND (2005), UP est une approche conceptuellement


sduisante. Lune des difficults dUP reste sa complexit : difficile pour un individu
dtre au cur dune matrice (allusion la figure prcdente). Lindividu a besoin
pour avancer quon lui esquisse un chemin, et lexpression du cheminement dans UP
nest pas simple apprhender. Il faut pratiquement avoir un il en permanence sur
le guide mthodologique pour savoir ce que lon doit faire, tant les tapes et sous-
tapes sont nombreuses. Difficile aussi de mettre en uvre UP sans le support
doutils spcifiquement orients sur la mthode (RUP par exemple).

Lun des reproches fait UP tient de ce fait linvestissement formation trs


important avant davoir des quipes oprationnelles. Au final les quipes qui disent
appliquer UP nen retiennent gnralement que les grandes lignes.

UP ncessite une bonne matrise dUML. Cette mthodologie trs codifie est
davantage concentre sur lanalyse et la conception que sur le code et les
technologies mises en uvre pour raliser un logiciel. Elle est destine des projets
stratgiques ou sollicitant un nombre important dinterlocuteurs.

2.3.2. Extreme Programming (XP)

XP appartient la catgorie des mthodes agiles qui prennent en compte le fait que
les besoins sont susceptibles dvoluer pendant le projet. XP est ax davantage sur
lactivit de production (dveloppement, prototypage rapide, tests) que sur les
phases danalyse et de conception. Il est constitu dun ensemble de meilleures
pratiques de dveloppement concernant le travail en quipe, le transfert de
comptences, les rgles de dveloppement et les tests pour fournir des livrables de
qualit. Il sagit dun processus relativement innovant, bas sur un cycle itratif et
incrmental simple mettre en uvre et adapt de petites quipes de
dveloppement.

RETAILLE (2005) donne une traduction des principes directeurs du manifeste qui
dfinit les bases des mthodes agiles. Les mthodes agiles privilgient :

 Les individus et les interactions par rapport aux processus et aux outils,
 Les logiciels qui fonctionnent par rapport une documentation complte,
 La collaboration avec les utilisateurs par rapport une ngociation
contractuelle,
 La rponse aux changements par rapport au respect d'un plan.

25
Partie 1

Soyez extrmement vigilant quand quelquun vous annonce que le projet doit tre
dvelopp avec agilit . Pour MANGOLD (2005) il faut comprendre Nous ne
savons pas trop comment nous y prendre, mais limportant est de commencer. En
cas de problme, nous procderons autrement .

2.3.3. Quelle mthode utiliser ?

Dans MANGOLD (2005) nous trouvons une dfinition originale de la notion de


projet : Un projet est un dialogue continu entre le fournisseur et le client, afin
datteindre le rsultat souhait. Ce nest que lorsque le dialogue est maintenu quun
projet peut rellement tre men bien .

Pour BENARD et MERAND (2005), si une mthode garantissait le succs dun


projet, cela se saurait. La bonne mthode est celle qui permet au projet de russir.
BENARD (2005) recommande de construire sa propre mthode en sinspirant des
diffrentes mthodes existantes, en intgrant la culture dentreprise et en saidant
dun rfrentiel de bonnes pratiques tel que CMMI.

Au cours dun entretien, Franois Mrand (coauteur de BENARD et MERAND 2005)


ma confi que pour lui le respect dune mthode tel que RUP ncessite dutiliser des
outils ddis. Or pour MANGOLD (2005) on ne produit pas de la qualit en achetant
ou en utilisant des outils. Pour tirer de rels bnfices dune mthode comme RUP il
faut tre en mesure dinvestir la fois dans les outils et dans la formation (sur la
mthode et les outils). La mthode RUP est plutt destine aux grandes entreprises
pour grer des projets complexes ayant une importance stratgique.

Comme nous le verrons plus loin, le Ministre des affaires trangres (MAE) a dfini
sa propre mthode. Cest une mthode itrative et incrmentale inspire de UP.
Dans la pratique, il est tout de mme ncessaire de sassurer que tous les
participants ont bel et bien compris les principes de la mthode appliquer et que
celle-ci peut vritablement tre applique au cas prsent.

Au final, cest bien souvent lexprience du chef de projet qui fait la diffrence. La
mthode doit sadapter au projet et non linverse.

26
Partie 1

2.4. Organisation du MAE

Le Service des Systmes dinformation et de Communication de Ministre des


affaires trangres (MAE) est rattach la Direction Gnrale de ladministration.

Figure 11 : Organisation du MAE

La division des Projets du Systme dInformation (PSI) est lune des 5 divisions
oprationnelles du Service des Systmes dInformation et de Communication (95
agents dont 70 % Paris et 30 % Nantes).

Le projet rendez-vous appartient au domaine de comptence du dpartement


Applications Diplomatiques et Consulaires (DC) de PSI.

27
Partie 1

Le systme dinformation du MAE est utilis par des agents consulaires (personnel
dun consulat franais ltranger) pour grer des informations concernant les
usagers (individus qui sadressent aux consulats pour obtenir un service). Il existe
deux types dusagers :

Franais ltranger
o Franais rsidant ltranger
 Ils effectuent des demandes administratives (ex : demande de
passeport)
 Les consulats jouent auprs deux le rle dune
mairie (tat civil) et dune
prfecture (affaires lectorales, )
o Franais de passage ltranger (touristes)
 Ils contactent gnralement le consulat uniquement lors dune
situation durgence (perte de documents, papiers provisoires,
). Cette population nest pas concerne par le projet rendez-
vous .
Etranger ltranger
o Ils ralisent des demandes de visa (plusieurs types de visa existent :
visa de touriste pour venir en France ou entrer dans lespace
Schengen)

Caractristiques des consulats :

Ils jouent un rle politique et un rle administratif (les ambassades jouent un


rle politique mais pas administratif).
Il existe 250 consulats franais dans le monde rpartis dans 180 pays
(certains pays nont pas de relations diplomatiques avec la France). Dans
certains pays il existe plusieurs consulats (ex : le Maroc).
Il existe 3 types de consulats :
o Consulats gnraux (Celui de la capitale en gnral)
o Consulat simple (Situ gnralement en province)
o Section consulaire (trs petite unit)

Tous les consulats ont un site Internet. Chaque consulat est responsable du contenu
de son site.

Cr en octobre 1995, le Site Internet France-Diplomatie du ministre des affaires


trangres (http://www.diplomatie.gouv.fr/fr/) qui enregistre prs de 3 millions de
consultations mensuelles, est hberg au sein du centre dexploitation du Service
des Systmes dinformation et de Communication (CXI).

Ce site donne accs aux sites Internet des diffrents consulats de France
ltranger. Les consulats confient gnralement lhbergement de leur site un
spcialiste local. Lappel de lapplication rendez-vous sera ralis partir de ces
sites.

28
Partie 1

Le systme dinformation consulaire repose actuellement sur les applications RMV2


et Racine.

2.4.1. RMV2

RMV2 (Rseau Mondial Visa) permet la gestion des demandes de visa effectues
par les trangers (ex : visa Schengen) :
 Il est utilis par le secteur tranger de tous les consulats.
 Dans chaque consulat, il existe une base RMV2 locale qui change des
informations avec la base RMV2 centrale situe Nantes la SDCE (Sous
Direction de la Circulation des Etrangers).

2.4.2. Racine

RACINE (Rseau dAdministration Consulaire INformatiquE) permet la gestion


administrative des franais ltranger :
 Ce systme est en cours de dveloppement.
 Actuellement, il existe une base de donnes appele AFE2 dans chaque
consulat. Lobjectif de RACINE est de remplacer ces 250 bases par une base
de donnes centrale accessible partir dun client lger, ce qui impliquera une
bonne disponibilit rseau ou des procdures de repli efficaces. La migration
vers RACINE doit seffectuer progressivement partir de 2007.

2.5. Solutions existantes pour la prise de rendez-vous

Les consulats de Londres et Toronto possdent dj une solution de prise de


rendez-vous sur leur site internet. Ces solutions ne peuvent pas tre gnralises
dans ltat pour tous les consulats (autant pour des raisons techniques que
fonctionnelles). Une solution Acube 10 centralise et paramtrable pour tous les
consulats est prfrable. Il est donc ncessaire de faire une nouvelle analyse du
besoin et deffectuer un nouveau dveloppement. Cest lobjet du projet rendez-
vous .

Les solutions de Londres et Toronto sont prsentes brivement ci-dessous :

2.5.1. Solution du consulat de Londres

Le site du consulat gnral de France Londres ( http://www.consulfrance-


londres.org/) permet de prendre un rendez-vous avec le consulat pour les demandes
de visa et pour les dmarches administratives des franais vivant ltranger.

10
Acube : Mthodologie du MAE utilise pour le dveloppement des applications
web de ladministration.

29
Partie 1

La prise de rendez-vous est :

Personnelle : la personne attendue est la personne au nom de laquelle le


rendez-vous a t pris.
Individuelle : un rendez-vous, une personne.
Limite la dmarche pour laquelle le rendez-vous a t pris. Dans certains
cas particuliers, des options de dmarches combines peuvent tre
proposes.

RDV pour les dmarches administratives des franais

Cette fonction permet aux franais ltranger de prendre un rendez-vous avec


lambassade de France de Londres via Internet afin deffectuer une ou plusieurs des
dmarches suivantes :
Demande ou renouvellement de passeport ;
Demande de carte nationale didentit ;
Inscription au registre des Franais tablis hors de France
Transcription dune naissance, dun mariage ou dun dcs et dlivrance dun
acte dtat civil ;
Demande de bourse scolaire.

Certaines combinaisons sont possibles (ex : inscription au registre et renouvellement


de passeport).

Les fonctions mises la disposition de lusager sont les suivantes :


Cration de rendez-vous
Vrification de la date du rendez-vous
Annulation du rendez-vous

Dans le cas dune demande d'inscription au registre des franais tablis hors de
France, le droulement de lapplication est le suivant :

Prsentation de la liste des pices justificatives prsenter le jour du rendez-


vous (photographies, passeport ou carte nationale d'identit, justificatif de
domicile, )
Slection du jour du rendez-vous parmi ceux proposs.
Slection dun crneau horaire parmi ceux disponibles
Affichage du formulaire fiche de renseignement :
o Nom, prnoms, Nom marital, civilit, date de naissance, lieu et ville de
naissance, situation de famille, dpartement ou pays
o Franais(e) par (naissance, filiation, dcret, )
o E-mail, autre nationalit, personne prvenir en cas durgence,
informations sur le pre et la mre
Confirmation de la saisie

Remarque : Il existe actuellement une interface permettant de remonter dans


lapplication AFE2 du consulat de Londres, ltat civil des franais ayant effectu une
prise de rendez-vous sur le site Internet du consulat de Londres pour une demande
de passeport. Cette interface est lance par un agent du consulat de Londres.

30
Partie 1

RDV pour les demandes de visa

La prise de rendez-vous concerne 3 types de populations :


Conjoints/enfants de ressortissants franais
Conjoints/enfants de ressortissants europens (non franais)
Toutes autres personnes.

La prise de rendez-vous est possible soit par Internet sur le site, soit par
tlphone (service payant).

La procdure diffre en fonction du type de visa (visas de "long sjour", visas pour un
autre pays reprsents par la France).

Ladresse du lieu du rendez-vous est prcise lusager lors de la prise du rendez-


vous.

Une convocation est imprime la fin du processus de prise de rendez-vous pour


permettre un accs prioritaire aux locaux du consulat.

2.5.2. Solution du consulat de Toronto

Le site du consulat gnral de France Toronto (http://www.consulfrance-


toronto.org/) permet aux usagers de prendre rendez-vous avec le consulat pour les
demandes concernant les types de visas suivants (la prise de rendez-vous pour les
dmarches administratives des franais ltranger nest possible que par
tlphone) :

Airport Transit visa,


Transit visa (maximum 5 days)
Short Stay Schengen
Short Stay DOM | TOM | CTOM
Long stay student (less than 6 months)
Long stay student (more than 6 months)
Long stay au Pair
Long stay minor attending school
Long stay teaching assistant
Long stay scientist
Long stay visitor
Long stay through OMI
Professional long stay

Pour ces types de visa, la prise de rendez-vous est obligatoire et seffectue


uniquement sur Internet. Pour les autres types de visas, les demandes doivent tre
envoyes par la poste (Visas 2A, 2B, 2C, 2D et 2E).

La liste des documents prsenter le jour du rendez-vous sont prciss sur le site
Internet du consulat, mais pas dans le module de prise de rendez-vous.

31
Partie 1

La prise de rendez-vous se droule de la faon suivante :

Crer un compte personnel en remplissant une fiche de renseignements


(Nom, prnom, e-mail, tlphone, nationalit, nationalit sur le passeport,
statut au Canada, date dexpiration du visa, type de visa, date de dpart)
Lire le mot de passe reu par mail.
Utiliser le compte et le mot de passe pour accder au module de prise de
rendez-vous
Slectionner une date et un crneau horaire sur le calendrier parmi ceux
proposs (toutes les 10 minutes de 9h30 12h10).
Prciser le nombre de personnes (1 personne : 10 min, 2 personnes : 20 min,
3 personnes : 30 min, 4 personnes : 40 min)
Confirmer le rendez-vous (rserver la plage horaire)
Le systme informe lusager que le rendez-vous est confirm

Liste des fonctions disponibles aprs la cration dun compte personnel :


Crer un rendez-vous (mail de confirmation de cration)
Visualiser mon compte
Voir mes rendez-vous, voir le dtail dun rendez-vous
Supprimer un rendez-vous (mail de confirmation de suppression)
Afficher laide en ligne

Contraintes et remarques :

Un seul rendez-vous actif par compte


Un rendez-vous peut concerner plusieurs personnes

Les comptes des personnes qui ne se prsentent pas sont effacs.

2.6. Outils Acube

En 2004, le MAE a mis en place une filire de dveloppement appele Acube


(Architecture Applicative de lAvenir) base sur les technologies :
 J2EE,
 XML,
 Client riche,
 Architecture multi-niveaux,
 XHTML,
 CSS,
 JavaScript,
 DOM.

Acube fournit un cadre mthodologique et les outils ncessaires pour la ralisation


des applications web du MAE. Le projet rendez-vous appartient cette filire.

32
Partie 1

Larchitecture technique multi-niveaux du Ministre des Affaires Etrangres repose


sur les standards Internet (W3C/J2EE), le respect de la charte graphique du
ministre et loffre Open Source.

Pour dvelopper les applications Acube, les outils suivants sont utiliss :
Serveur Web avec Apache 2.0.52 et Serveur dapplication avec Tomcat 5
(Servlet Container),
Environnement de dveloppement Eclipse 3.0 + Plugins,
Base de donnes relationnelle SQL Server
Outil de modlisation UML et Conceptuel de donnes avec Power AMC 10.
Gestion des anomalies avec Mantis,
Gestion de configuration sous CVS,
Dploiement de lapplication Acube avec ANT ou Marven
Automatisation des tests avec JUNIT (en cours dtude)

2.6.1. Tomcat

Tout serveur dapplication revendiquant la compatibilit J2EE doit respecter les


spcifications de la norme J2EE dfinie par Sun (support multi-plate-formes,
rpartition de charges, reprise sur incident, pooling de connexions, contexte multi-
utilisateurs, scurit etc, ).

Un serveur dapplication J2EE est un logiciel qui met en uvre lAPI J2EE fournie
par SUN. Il existe de nombreuses solutions propritaires (Webshere dIBM, Weblogic
de BEA ) ou open source (Jboss, tomcat ). Tomcat fonctionne sur la plupart des
systmes dexploitations (windows, linux, ). Cest un moteur de servlet. Il permet
de dvelopper des sites dynamiques en Java, mais ne supporte pas les EJB 11 . Les
EJB ne seront pas tudis dans ce mmoire. Tomcat contient un serveur HTTP
(apache).

2.6.2. Eclipse

Il est possible de dvelopper des applications java avec un simple diteur de texte,
mais en pratique, lutilisation dun IDE (Integrated Developpement Environnement)
java est indispensable pour gagner en productivit. Eclipse est un IDE Open Source
qui permet de dvelopper notamment en java. Il fonctionne sur les plate-formes
Windows 98/NT/2000/XP et Linux. Jbuilder de Borland est une alternative
intressante mais cest une solution propritaire. La version de base de Jbuider est
gratuite (mme pour une utilisation commerciale).

11
EJB : La technologie Enterprise JavaBeans est une architecture de composants
logiciels ct serveur pour la plate-forme de dveloppement J2EE.

33
Partie 1

2.6.3. Microsoft SQL Server

SQL Server est une base de donnes relationnelle distribue par Microsoft. Il existe
des alternatives Open Source. Les plus connues sont PostgreSQL et MySQL.

2.6.4. Power AMC

Power AMC est un outil de modlisation graphique payant distribu par Sybase qui
permet de raliser les 9 diagrammes UML en plus de ceux de la mthodologie
Merise (modle conceptuel de donnes, ). Il nexiste pas doutil aussi puissant et
polyvalent dans le monde Open Source mais lon peut citer ArgoUML pour la
modlisation UML et Dbdesigner pour la reprsentation de la base de donnes.

2.6.5. Mantis

Mantis est un outil Open Source de gestion de bugs consultable via le web. Il peut
tre install sur Windows, Mac ou Linux. Bugzilla (qui est prsent dans ZELLER
2005) est galement un Gestionnaire de bugs Open Source reconnu, mais aprs
avoir compar les deux outils le MAE a retenu Mantis

2.6.6. CVS

HOLZNER (2004) dfinit CVS (Concurrent Versions System) comme un outil Open
Source permettant de dvelopper en quipe (gestion des accs concurrents sur les
fichiers dun projet) et de conserver un historique des diffrentes versions.

2.6.7. ANT ou Marven

Pour automatiser le dploiement des applications Acube, le MAE utilise ANT ou


MARVEN. Selon FELICITE (2006), ANT est un outil Open Source qui utilise un
fichier XML contenant des instructions permettant par exemple de crer un rpertoire
puis de compiler une application J2EE dans ce rpertoire. Le principe de Marven est
galement expliqu dans FELICITE (2006). La finalit est la mme.

2.6.8. Junit

FELICITE (2006) prcise quEclipse incorpore Junit. Pour utiliser ce framework de


test il faut crer des classes qui contiennent une description des oprations tester.
Il est ensuite possible de lancer rgulirement une batterie de tests, ce qui permet
damliorer le code et notamment dviter (si les bons tests ont t effectus) des
problmes de rgression. Il est noter que lcriture des classes de test a un cot et
quil faut par consquent dcider si les tests unitaires doivent tre raliss ou non et
si oui lesquels. Le MAE envisage dutiliser prochainement Junit pour raliser des
tests unitaires.

34
Partie 1

2.7. Normes Acube

Acube respecte les principes suivants :

1). Le standard XML comme format dchange de linformation est utilis dans les
diffrentes logiques de programmation.

2). Une ergonomie complexe base sur les principes du client riche est applique de
prfrence. Ainsi, une seule page HTML statique est ncessaire pour grer un mtier
ou un cas dutilisation. Seuls les flux de contenu informatif sont gnrs par le
serveur. Ce type dergonomie a pour avantage :

Des flux dchange de taille plus faible et une plus grande capacit de monte
en charge du fait dune sollicitation moindre du serveur.
Une souplesse ergonomique plus importante par lutilisation de zones
dynamiques et une garantie de cohrence avec la charte graphique du MAE
par lutilisation des APIs de gnration dlments constitutifs dune page.

3). Larchitecture technique du MAE repose sur plusieurs Design Patterns 12


reconnus, permettant dacclrer les dveloppements et de faciliter la maintenance
des applications :
Data Access Object (DAO) 13
Modle, Vue, Contrleur (MVC)

4). Les Logs permettent de rsoudre et de corriger un grand nombre de problmes,


aussi bien lors de la phase de dveloppement que dans la phase de maintenance
des applications de la filire Acube. Une attention particulire doit donc tre porte
sur la gestion des logs. Les rgles suivantes doivent tre respectes :
Utilisation dun framework de gestion des logs (log4J 14 ) et rcupration
systmatique de toutes les exceptions Java.
Les donnes contenues dans les logs doivent tre pertinentes (le plus lisible
possible et fournir un niveau dinformation suffisamment dtaill pour faciliter
lanalyse du problme et sa rsolution).
Les logs doivent permettre dassurer une traabilit applicative.
Les messages contenus dans la log doivent respecter le format recommand
par le MAE (date de lvnement, code de lapplication, code du site, type
dvnement, code vnement, identifiant utilisateur, commentaire).

12
Un design pattern est la description dune solution classique un problme
rcurrent, que lon peut rencontrer gnralement un niveau conceptuel,
architectural ou technique. En adaptant un design pattern au contexte dun projet il
est possible de bnficier de lexprience dexperts et donc damliorer la qualit ou
la maintenabilit dune application.
13
DAO : design pattern ddi la persistance dtaill sur le site
http://java.sun.com/blueprints/corej2eepatterns/Patterns/DataAccessObject.html
14
Log4j : Cest loutil Open Source de traage dapplication le plus utilis (source
FELICITE 2006)

35
Partie 1

2.8. Mthodologie de projet Acube

Elle est base sur le principe itratif (Unified Process) avec pour objectif :

De parallliser les tches associes un lotissement fonctionnel et technique


De prsenter une version applicative enrichie au fur et mesure de
lavancement des travaux pour multiplier les points de contrle et itrer la
documentation correspondante.
De dmarrer au plus tt la phase de recette dans le cycle de vie du projet.
Didentifier et limiter les risques inhrents au projet.

Acube dcrit pour chaque phase du projet la dmarche adopter :


Phase dtude : Analyse du besoin, identification des risques, planning des
itrations de dveloppement du projet.
Phase dimplmentation : Itrations de dveloppement
Phase de recette (recette technique et recette fonctionnelle) : La mthodologie
de test Acube dcrit prcisment pour chaque itration les diffrents types de
tests effectuer (Tests unitaires, Tests dintgration, Tests de performance)
Phase de dploiement : Mise en production

Pour les trois premires phases, Acube dcrit galement la dmarche adopter
lors :
De lanalyse technique
De lanalyse fonctionnelle
De lanalyse SGBD
De la Modlisation UML et Merise
De la ralisation de la Maquette

La mthodologie Acube impose de dcrire prcisment la composition de lquipe


projet en nommant les participants et en prcisant leur rle :
Architecte
Chef de projet interne et externe
Responsable fonctionnel
Responsable homologation
Responsable technique
Responsable fonctionnel

Ces comptences peuvent tre rparties sur une ou plusieurs personnes physiques.

La composition du comit de projet et du comit de pilotage ainsi que la frquence


des runions de ces comits est prcise dans Acube. Deux comits vnementiels
sont galement prvoir lors dune runion de lancement et une runion de bilan de
projet pour ouvrir et clturer le projet.

36
Partie 1

Les livrables produire imprativement sont les suivants :


Dossier darchitecture applicative (DA) : il prsente lensemble des solutions
techniques retenues, les flux gnrer et lemplacement des composants
dvelopper ainsi quune tude sur la scurit.
Spcifications fonctionnelles gnrales (SFG) : Description des cas
dutilisation mettre en uvre, recensement des acteurs et des habilitations,
fonctions maquetter.
Maquette Acube : Elle permet de valider la bonne comprhension du besoin
fonctionnel et lergonomie. Elle permet galement de prsenter une solution
ralisable avec les composants du framework Acube.
Modlisation UML des cas dutilisation.
Modle conceptuel de donnes (MCD)
Modle physique de donnes (MPD)
Modlisation UML des diagrammes de classe et des diagrammes de
squence essentiels.
Spcifications fonctionnelles et techniques dtailles (SFTD) : Elles
contiennent une description dtaille des cas dutilisation et des rgles de
gestion associes. Les composants applicatifs mis en uvre sont galement
dtaills dans ces spcifications.

Livrables
Phase dtude Phase dimplmentation
Analyse technique DA SFDT
Analyse SFG
fonctionnelle
Maquettage Maquette
Modlisation UML Cas Diagrammes de classe et de
dutilisation squence
Analyse SGBD MCD MPD
Figure 12 : Rcapitulatif des livrables

Il est ncessaire de recueillir le plus finement possible, les besoins du client, au


travers du cahier des charges. Dans le cas du MAE celui-ci est le plus souvent
rdig au sein de la cellule informatique et non par la matrise douvrage. Ce cahier
des charges est accompagn dune maquette de lapplication ralise avec les outils
de dveloppement de la filire Acube et respectant la charte graphique. Ces
lments sont ensuite montrs la matrise douvrage qui approuve la solution, ou
prcise les amliorations apporter.

La mthodologie Acube donne galement des recommandations en ce qui


concerne :
 La rdaction de fiches anomalies (anomalies majeures et mineures)
 Les oprations de vrification du code source
 Les oprations de vrification documentaire
 Les contraintes de performance et de scurit

37
Partie 1

Le rfrentiel documentaire projet est stock sur un serveur de fichiers. Il est


organis en suivant les recommandations AFNOR Z-67-100. Larborescence de
niveau 1 est donc la suivante (les autres niveaux sont libres) :

 1-Contrat (documents contractuels qui dfinissent la relation client -


fournisseur)
 2-Projet (documents prvisionnels, de pilotage et de suivi de projet)
 3-Etude (documents dtude et de dveloppement)
 4-Qualit (modles de documents, de fiches, de procdures de tests et
validation et dorganisation gnrale)
 5-Support (documents de rfrence, guides et manuels, utilitaires, documents
de formation dont le transfert de comptences et de communication)

2.9. UML dans Acube

Dans le cadre du dveloppement dune application web, la notation UML (langage de


modlisation unifi) peut tre utilise pour modliser les besoins des utilisateurs,
apprhender les processus mtiers de lentreprise et expliciter la faon de raliser le
logiciel. UML est une notation et ne dfinit aucune mthodologie pour modliser.
RUP de Rational Software est la mthodologie la plus connue mais convient plutt
aux grosses organisations (en raison de sa lourdeur). Un ouvrage comme ROQUES
(2004) explique comment utiliser UML lors des diffrentes tapes dun projet.

Il existe gnralement un foss entre les outils utiliss pour raliser la modlisation
UML et les outils utiliss pour le dveloppement de lapplication. Ceci dbouche le
plus souvent sur un dcalage entre la modlisation et le systme rel. Le maintien de
la cohrence a un cot.

De plus les matrises douvrages rencontrent souvent des difficults pour


comprendre la notation UML (il savre ncessaire dy adjoindre systmatiquement
une description textuelle).

Ceci explique sans doute pourquoi parmi les neuf diagrammes dfinis dans la
notation UML, seuls deux sont couramment utiliss au MAE, et la modlisation est le
plus souvent cre par et pour la matrise duvre alors que les dveloppements
sont dj bien avancs (les diagrammes font partie de la documentation technique
de lapplication).

Les diagrammes UML les plus utiliss au MAE sont :

. Les cas dutilisation :

Ce diagramme fournit une description du systme du point de vue des utilisateurs. Il


permet didentifier les acteurs (personnes disposant dun rle ou autres systmes
logiciels) et les interactions entre ces acteurs et le systme.

38
Partie 1

. Les diagrammes de classe :

Permettent de reprsenter graphiquement les classes prsentes dans lapplication et


les liens entre ces diffrentes classes.

2.10. Prsentation du projet Rendez-vous du MAE

Le lancement de ce projet a t effectu dbut septembre 2005 lors de mes premiers


contacts avec le MAE. Malgr une attente forte de la part de la matrise douvrage, il
nexistait aucune tude sur le sujet ni cahier des charges. Il a donc t ncessaire de
raliser une tude pralable pour dterminer le besoin cible, puis de rdiger un
cahier des charges sur un primtre fonctionnel rduit.

2.10.1. Objectifs du projet rendez-vous et dmarche adopter

Ltude pralable a permis de dfinir les objectifs du projet global. Lapplication de


gestion des rendez-vous doit permettre :

1. A un usager de prendre un rendez-vous avec un poste sur Internet afin de mieux


grer le flux des demandes.

Lusager est soit :


Un tranger sadressant au secteur Visa pour :
o Une demande de visa (lusager devra pouvoir consulter sur Internet
lavancement de son dossier).
o Retirer son passeport avec ou sans visa. Prise de rendez-vous possible
uniquement si le dossier visa a t trait.

Un Franais expatri sadressant au Secteur Franais pour lun des services


suivants :
o Demande ou renouvellement de passeport,
o Demande de carte nationale didentit,
o Inscription au registre des Franais tablis hors de France,
o Transcription dune naissance, dun mariage ou dun dcs et
dlivrance dune copie d acte dtat civil,
o Demande de bourse scolaire,
o Inscription sur les listes lectorales,
o Autres prestations administratives

Un poste est soit :


o Un consulat
o Un consulat gnral
o Une section consulaire

39
Partie 1

2. Aux postes consulaires, (secteur visa et secteur Franais), de dfinir leurs


capacits daccueil et de faire voluer celle-ci au cours du temps (semaines
types, calendrier). Pour un jour donn, la capacit daccueil sera rattache des
crneaux horaires ( dfinir par le poste) et des services. Les rendez-vous pris
par les usagers sappuient sur le calendrier dfini par le poste. Le nombre de
rendez-vous est limit par la capacit daccueil.

3. La rcupration des informations saisies par lusager dans RMV2 ou dans les
applications mtiers du systme Racine. Le principe de rcupration des
donnes dans RMV2 partir dune application web Acube centralise a dj t
mis en uvre dans le projet VISANET15. Un principe similaire sera adopt,
garantissant la scurit et la cohrence des donnes importes.

Lobjectif du projet est de btir une solution pouvant tre utilise par tous les postes,
dans tous les pays o la France est reprsente.

Une maquette exhaustive sera prsente lensemble des postes consulaires via
lintranet pour obtenir la plus grande adhsion avant la ralisation proprement dite.

Le projet rendez-vous doit prendre en compte les enjeux suivants :


Dvelopper une application de gestion des rendez-vous utilisable par tous les
postes (certaines fonctions devront tre multilingues. Les postes ne sont pas
tous organiss de la mme faon).
Raliser le dveloppement dans le respect de larchitecture Acube.

2.10.2. Prsentation de lquipe projet


Lquipe du Ministre des Affaires Etrangres assure la matrise douvrage. Elle est
compose de la faon suivante :

1 Directeur de projet
1 Chef de projet
3 Responsables fonctionnels pour la partie Visa (RMV2)
2 Responsables fonctionnels pour la partie Racine
1 Responsable mthodologie Acube
1 Architecte logiciel

La matrise duvre sera sous-traite auprs dune socit de service en


informatique qui dsignera un Directeur de projet, un Chef de projet J2EE, un
Dveloppeur client et un Dveloppeur serveur.

Lapplication rendez-vous est une application stratgique et concerne de


multiples dcideurs. Durant la phase dtude une maquette sera ralise avec les
outils Acube. Celle-ci respectera la charte graphique dfinie par le Framework Acube

15
VISANET est un projet Acube permettant d'externaliser la saisie de certaines
demandes de visa.

40
Partie 1

et permettra dillustrer le fonctionnement des principales fonctions de lapplication


rendez-vous. La maquette, sera soumise la validation de lensemble des acteurs
concerns. Elle permettra notamment de valider le contenu des fonctions de
paramtrage qui doivent autoriser une reprsentation approprie de lorganisation
des postes et des types dusager.

2.11. Ma contribution au projet rendez-vous du MAE

Pour plusieurs raisons je ne suis pas en mesure de prsenter en dtail la solution


adopte par le MAE :
 Les documents que jai rdigs ne mappartiennent pas
 Ces documents sont trs volumineux
 Lintrt est limit car il sagit de documents fonctionnels
 Certains documents restaient produire lorsque jai quitt le projet (Use
cases, MCD, SFG, ) et la rdaction de ces documents ntait pas de ma
responsabilit

La fin de la premire partie devrait cependant vous permettre de vous faire une ide
assez prcise du travail accompli et de la dmarche adopte.

2.11.1. Etude pralable

Aprs une runion de lancement, jai rencontr diffrents interlocuteurs de la matrise


douvrage et du ple DC de PSI afin de mieux comprendre le besoin. Jai tudi la
solution existante sur le site de lambassade de France Londres
(http://www.consulfrance-londres.org/article.php3?id_article=282) ainsi que celle
disponible sur le site du Consulat Gnral de France Toronto
(https://www.consulfrance.net/toronto/). Jai ensuite rdig un document dcrivant les
principales fonctionnalits attendues dans la cible. Plusieurs runions ont t
ncessaires pour amliorer ce document et parvenir un consensus.

2.11.2. Dfinition du primtre du premier lot

Le projet global tant relativement important, il tait ncessaire de rduire le


primtre avant de poursuivre. La dtermination du primtre du premier lot et des
fonctions tudier en priorit a t ralise en comit de pilotage.

Comme le montre le tableau ci-dessous, RMV2 gre un flot de demandes plus


important que RACINE :

RMV2 RACINE
3 millions de demandes de visa par an 1 million de franais rsident depuis plus
de 6 mois ltranger. 300 000 nouveaux
franais ltranger par an

Il a donc t dcid de dvelopper en priorit la prise de rendez-vous pour le secteur


des visas. Le premier lot concerne la prise de rendez-vous Visas et plus prcisment
les fonctions dadministration.

41
Partie 1

Les contraintes du secteur franais 16 nont cependant pas t ignores totalement


durant la phase de conception du premier lot car il fallait btir une application la plus
gnrique et la plus souple possible (adaptable toutes les organisations
susceptibles de grer des rendez-vous).

2.11.3. Phase dtude du premier lot

En collaboration avec diffrents acteurs du MAE, jai particip llaboration du


cahier des charges du premier lot. Il a ensuite t dcid en comit de pilotage de
confier la matrise duvre une socit de service en informatique. Celle-ci sest vu
remettre une copie du cahier des charges pendant la runion de lancement.

Lors de la rdaction de ltude pralable et du cahier des charges du premier lot,


javais ralis sous PowerPoint une maquette complte de lapplication rendez-vous,
mais si celle-ci permettait de prciser les objectifs fonctionnels atteindre, elle ne
respectait pas lergonomie Acube. Jai donc ensuite anim plusieurs runions
destines piloter la cration par la socit de service en informatique responsable
de la matrise duvre dune maquette Acube (prototype oprationnel) pour le
premier lot.

Enfin jai organis une runion destine identifier les risques du projet et y
apporter des solutions. Les discussions ont port principalement sur la scurit des
donnes. Il a t dcid de crer une base de donnes unique pour grer les
donnes saisies par les usagers et celles saisies par le personnel du ministre des
affaires trangres, mais dattribuer les droits sparment pour ces deux types de
donnes (les usagers ne doivent pas tre autoriss mettre jour les donnes de
paramtrage saisies par le personnel du MAE).

La rdaction des documents suivants a t confie la socit de service en


informatique responsable de la matrise duvre du projet rendez-vous :

Dossier darchitecture (description des serveurs et de tous les choix


techniques)
Spcifications Fonctionnelles Gnrales (contient notamment la description
des cas dutilisation)
Prsentation des donnes gres par lapplication et cration du Modle
Conceptuel des Donnes

16
Secteur franais : Personnel du Ministre des affaires trangres qui rpond aux
demandes des franais. Le secteur franais utilise RACINE.

42
Partie 1

Maquette du premier lot

Figure 13 : Maquette - Gestion des semaines types

La maquette peut tre manipule comme si lapplication fonctionnait rellement. Elle


permet de simuler le fonctionnement des options suivantes :

Fonction But de la fonction

Ecran de connexion Saisie du login et du mot de passe de lutilisateur


Gestion des Agents En dehors des usagers, tous les utilisateurs
doivent possder un compte pour accder
l'application rendez-vous. Cette fonction permet
de crer, modifier ou supprimer ces comptes.
Gestion des services du Permet de dfinir pour un poste, partir des
poste services de base des diffrents secteurs, les
services offerts aux usagers.
Gestion des jours de L'objet de cette fonction est d'viter de proposer
fermeture des rendez-vous aux usagers lorsque le poste est
ferm.
Gestion des semaines Cette fonction est destine simplifier le
types paramtrage du calendrier.

43
Partie 1

Gestion du calendrier Cette fonction permet de dfinir sur un calendrier


pour chaque service du poste des crneaux
horaires et pour chaque crneau une capacit
d'accueil.
Gestion des paramtres Cette fonction permet de dfinir pour un poste les
gnraux paramtres suivants :
 nombre de jours de rtention des rendez-
vous aprs la date du rendez-vous,
 nombre de jours de rtention des
informations du calendrier pour les jours
couls,
 langue par dfaut pour les usagers,
 rendez-vous futur le plus loign en
nombre de jours accessible par l'usager

Le menu de la maquette affiche seulement les commandes autorises pour


lutilisateur connect.

2.11.4. Phase dimplmentation du premier lot

Je nai pas particip aux dveloppements, la matrise duvre ayant t confie


une socit de service en informatique, ni la recette ni mme au dploiement.

En parallle de la ralisation du premier lot de lapplication rendez-vous, la socit


de service en informatique responsable de la matrise duvre devait rdiger les
documents suivants :

Spcifications Fonctionnelles et Techniques Dtailles


Diagrammes de classe et diagrammes de squence
Modle physique de donnes

44
Partie 1

2.12. Conclusion

Ces 4 mois auront t loccasion pour moi :


De dcouvrir lorganisation du ple informatique du ministre des affaires
trangres.
Danimer des runions afin de dfinir les objectifs du projet, de recueillir les
diffrents souhaits, de proposer une solution runissant un consensus
maximum.
De rdiger divers documents en vue de constituer un cahier des charges et de
tracer les dcisions prises.
De participer llaboration dune maquette de lapplication (ralise par une
socit de service en informatique).
De dcouvrir le framework Acube

Lors de mon passage au MAE jai t invit une runion de retour dexprience
destine identifier les points damlioration envisager pour la filire Acube. Cette
runion sest droule alors que le premier projet de la filire (VISANET) touchait
sa fin. Les points suivants ont t abords :

Dploiement complexe car peu automatis (beaucoup de travaux rptitifs


sont raliss manuellement ce qui entrane des risques derreur).
Le document des SFTD 17 mlange des spcifications fonctionnelles et des
lments techniques trs pointus. Ceci rend quasiment impossible la
validation de ce document sur le plan fonctionnel car les spcifications sont
noyes dans un document trs complexe que les personnes charges de la
validation ont du mal apprhender.
Le framework Acube ne permet pas de rpondre tous les besoins. De
nouveaux composants devront tre dvelopps.
Lors de la mise en production de lapplication VISANET des temps de rponse
levs ont t constats. Un effort devra tre ralis pour amliorer ce point.
Dfinir une solution commune toutes les applications Acube pour grer
lidentification de lutilisateur afin daugmenter la scurit.

17
SFTD : Spcifications Fonctionnelles et Techniques Dtailles

45
Partie 2

3. PARTIE 2 : CREATION DUNE VERSION SIMPLIFIEE DE


LAPPLICATION RENDEZ-VOUS AVEC J2EE

46
Partie 2

3.1. Introduction

Cette partie se rapporte lexprience acquise au cours de la priode de fin


dcembre 2005 juin 2006. Lobjectif principal pour cette priode tait de raliser
seul une application simplifie de prise de rendez-vous avec les technologies J2EE.

Pour atteindre cet objectif jai du :


 Adapter et simplifier lapplication de prise de rendez-vous du MAE pour la
sortir de son contexte.
 Slectionner les outils et versions ncessaires la ralisation de lapplication
 Me former ces outils
 Raliser le dveloppement

3.2. Cahier des charges de lapplication rendez-vous


simplifie

Dans un premier temps, je me suis inspir des spcifications du projet dcrit en


premire partie pour concevoir une application centralise de prise de rendez-vous
qui puisse permettre diffrents professionnels de proposer des rendez-vous leurs
clients en partageant une base de donnes unique.

Cette application pourrait tre utilise par plusieurs socits souhaitant mettre la
disposition du public des rendez-vous de diffrentes natures (exemple : un garagiste
propose des rendez-vous pour changer les pneumatiques et dautres rendez-vous
pour faire une vidange. Un salon de beaut propose des rendez-vous pour une
sance de bronzage et dautres pour une pilation). Chaque socit pourrait grer
plusieurs bureaux mais naurait accs quaux donnes de sa socit. Une socit
pourrait crer des types de rendez-vous et mettre jour le calendrier des jours
ouvrs. Chaque socit aurait une page daccueil spcifique sur laquelle un client
pourrait sidentifier ou senregistrer. Le client pourrait alors choisir un rendez-vous et
le confirmer. Il aurait galement la possibilit de visualiser ses rendez-vous ou
dannuler un rendez-vous.

47
Partie 2

Voici une reprsentation possible de la base de donnes :

Figure 14 : Modlisation des donnes ralise avec Dbdesigner

48
Partie 2

Dans un second temps, mon but dans cette deuxime partie tant de me former aux
technologies J2EE, dexprimenter un certain nombre doutils et non de btir une
application commercialisable, jai simplifi radicalement lapplication rendez-vous
pour ne garder que lessentiel. La reprsentation de la base de donnes qui sera
rellement utilise dans la suite de ce document pour btir lapplication simplifie de
prise de rendez-vous est la suivante :

Rendez-vous Creneaux
Personnes --------------- -------------
------------- creneaux_id * creneaux_id *
person_id * person_id * DateHeureDebut
nom ServicePropos
prnom RdvAutoris
tlphone
courriel
login
motdepasse
administrateur

Figure 15 : Modlisation des donnes simplifie

Dictionnaire des donnes :

Table Champ Type Description


Personnes person_id entier Incrment automatiquement, permet
didentifier une personne
Personnes Nom Caractres Nom
Personnes Prnom Caractres Prnom
Personnes Tlphone Caractres Tlphone
Personnes Courriel Caractres Courriel
Personnes Login Caractres Login
Personnes Motdepasse Caractres Mot de passe
Personnes administrateur Boolen Vrai pour ladministrateur
Crneaux creneaux_id entier Incrment automatiquement, permet
didentifier un crneau
Crneaux DateHeureDebut Datetime Date et heure de dbut dun crneau
pour un service donn
Crneaux ServicePropos Caractres Service propos
Crneaux RdvAutoris Boolen Vrai si le crneau peut faire lobjet
dune prise de rendez-vous

Si un mme service est propos sur plusieurs crneaux il faudra saisir le mme
libell plusieurs fois ce qui est un inconvnient du modle simplifi. Cette solution ne
serait pas acceptable dans le cadre du dveloppement dune application
professionnelle.

Dfinissons maintenant le fonctionnement attendu.

49
Partie 2

3.2.1. Acteurs

Il existe deux types dacteurs :


 LAdministrateur qui accde toutes les fonctions du systme
 Le Client qui peut prendre ou annuler un rendez-vous

Le champ administrateur de la table Personnes permet de dterminer le rle


attribu lors de la connexion au systme.

3.2.2. Les cas dutilisation

Les cas dutilisation suivants sont rservs ladministrateur :


 Cration / Mise jour / Suppression dune personne, liste des personnes
 Cration / Mise jour / Suppression dun crneau pour un service donn, liste
des crneaux. Possibilit dassocier un crneau de la liste un rendez-vous
en slectionnant une personne. Possibilit pour un crneau de la liste de voir
sil est associ un rendez-vous (afficher le prnom et le nom de la
personne). Possibilit pour un crneau de la liste associ une personne de
le librer.

Les cas dutilisation suivants sont rservs aux autres utilisateurs (clients) :
 Prise dun rendez-vous parmi les crneaux non encore affects un rendez-
vous qui sont ouverts la prise de rendez-vous
 Liste des rendez-vous de la personne connecte avec possibilit de dtruire
un rendez-vous
 Modification des champs Prnom, Nom, Tlphone, Courriel, Login et Mot de
passe de la personne connecte.

Figure 16 : Diagramme des cas d'utilisation ralis avec ArgoUml

50
Partie 2

3.2.3. Rgles de gestion et contraintes

 La suppression dun crneau entrane la suppression du rendez-vous associ


sil existe.
 La suppression dune personne entrane la suppression des rendez-vous
associs cette personne.
 Les champs Nom, Prnom, Login et Motdepasse sont obligatoires en saisie
ou modification dune personne
 Les champs DateHeureDebut et ServicePropos sont obligatoires en saisie
ou modification dun crneau. DateHeureDebut doit respecter le format
dd/MM/yyyy HH:mm.
 Lapplication doit tre multilingue (Anglais et Franais pour commencer).
 Il peut y avoir plusieurs administrateurs

3.2.4. Navigation

Une page daccueil permet dafficher lcran de connexion.

Aprs lcran de connexion (saisie du login et du mot de passe) un menu est affich.
La navigation est ralise partir de ce menu.

Pour ladministrateur le menu contient les options suivantes :


 Gestion des personnes (administrateur uniquement)
 Gestion des crneaux (administrateur uniquement)

Pour les autres utilisateurs le menu contient :


 Prendre un rendez-vous
 Gestion de mes rendez-vous
 Grer mon profil

3.3. Slection et installation de loutillage

Nous parlons ici des logiciels utiliss pour lapplication rendez-vous :


 Lors du dveloppement
 En production
 Lors de la conception ou documentation

Larchitecture propose sinspire des choix raliss par le MAE pour la filire Acube
en remplaant les solutions propritaires ou maison par des solutions open source
reconnues et adaptes :

 La base de donnes relationnelle Microsoft SQL Server est remplace par


MySQL.
 Pour crer les diagrammes UML, Power AMC est remplac par ArgoUML
 Pour Le Modle Conceptuel des Donnes, Power AMC est remplac par
DBDesigner
 Acube pour sa partie technique est remplac par des frameworks J2EE plus
populaires (Struts et hibernate)

51
Partie 2

Les dveloppements et les tests sont raliss sous MS Windows XP.

52
Partie 2

Aprs avoir ttonn longtemps pour savoir prcisment quels outils et quelles
versions utiliser pour dvelopper lapplication simplifie de prise de rendez-vous, jen
suis arriv la conclusion que la solution suivante tait un bon compromis :

Navigateur (1)

JAVA (2)
HTTP
Environnement
Serveur dapplication (3) de
dveloppement
Plugin (10) intgr (9)
Application
Couche prsentation (4) rendez-vous
Dploiement

Couche traitements (5)

Modlisation UML (11)

Couche persistance (6)

JDBC (7)
Outillage pour crer, administrer
et consulter la base de donnes
(12)
Base de donnes relationnelle (8)

Environnement de production Conception et dveloppement

Figure 17 : Architecture retenue pour lapplication rendez-vous


(1) MS Internet Explorer 6
(2) J2SE 1.5.0 contenant le runtime et le kit de dveloppement java 2
(3) Tomcat 5.5.15
(4) Struts 1.2.8
(5) Implmentation de la logique mtier dveloppe spcifiquement pour lapplication
rendez-vous
(6) Hibernate 3.0
(7) Driver JDBC 3.1.12 pour MySQL
(8) MySQL 4.1.9
(9) Eclipse 3.1.1
(10) Plugin Tomcat sysdeo 3.1
(11) ArgoUML v0.20
(12) DbDesigner 4 +
MySQL Administrator 1.1.7 +
MySQL Query Browser 1.1.19

53
Partie 2

Pour chacun de ces outils, voici quelques conseils pour linstallation, une dfinition et
la justification du choix.

 J2SE

J2SE (plate-forme Java 2, Standard Edition) est la base indispensable pour raliser
un dveloppement J2EE.

Jai tlcharg le fichier jdk-1_5_0_06-windows-i586-p.exe sur le site


http://java.sun.com/j2se/1.5.0/download.jsp. Ce fichier permet dinstaller le JDK (Java
Development Kit) maintenant appel aussi SDK (Standard Development Kit) qui
contient notamment le compilateur java (le compilateur permet de crer les fichiers
dextension .class partir des fichiers dextension java) et une JRE (Java Runtime
Environment) pour interprter les fichiers dextension .java qui contiennent du byte-
code.

Le JDK n'est pas un logiciel libre. Il est gratuit, mais son usage est rgi par une
licence qui protge les droits du propritaire (Sun).

 Eclipse

Pour installer Eclipse sur Windows XP j'ai tlcharg partir du site www.Eclipse.org
dans la section downloads le fichier Eclipse-sdk-3.1.2-win32.zip. J'ai galement
tlcharg les fichiers nlpack1_featureoverlay-Eclipse-sdk-3.1.1.zip et nlpack1-
Eclipse-sdk-3.1.1a-win32.zip pour permettre un affichage des crans en franais.

Nous avons dj vu dans la premire partie quEclipse est un IDE java Open Source.
Je prsenterai quelques fonctions de base dEclipse dans le chapitre consacr
lauto formation J2EE.

Le choix dEclipse sest impos naturellement puisquil fait partie de loutillage Acube.

 Tomcat

La version 5.5.15 de Tomcat que jai utilise est tlchargeable sur le site
http://tomcat.apache.org/ (fichier apache-tomcat-5.5.15.exe).

Le serveur dapplication Open Source Tomcat dont nous avons dj parl dans la
premire partie a t choisi car il fait partie de loutillage Acube.

 MySQL

BORDAGE et DAVY (2005), indiquent que parmi les SGBD (Systme de gestion de
Bases de Donnes) open source, MySQL est utilis dans 86% des cas et
PostgreSQL dans 10% des cas (plusieurs solutions se partagent les 4% restant). 48
% des utilisateurs sont prts basculer sur une base open source pour leurs
nouveaux projets. Microsoft propose gratuitement une version allge de SQL
Serveur 2005 (baptise SQL Server Express ) pour offrir une alternative
MySQL.

54
Partie 2

Jai dcid dutiliser MySQL en raison de sa notorit et tlcharg le fichier MySQL-


essential-4.1.9-win32.msi partir de ladresse http://dev.MySQL.com qui permet
dinstaller MySQL sous Windows.

La version 5 de MySQL permet de crer des procdures stockes, des


dclencheurs, des transactions et devient un concurrent srieux pour les systmes
propritaires.

 MySQL Administrator

SARRION (2005b) recommande dutiliser MySQL Administrator. Cet outil permet


notamment de sauvegarder ou restaurer facilement une base de donnes MySQL en
crant ou utilisant un fichier de script SQL. Il est galement possible dadministrer les
profils des utilisateurs et de dfinir les autorisations laide de linterface graphique
de MySQL Administrator.

MySQL Administrator a t install partir du fichier MySQL-administrator-1.1.7-


win.msi tlcharg partir de http://www.MySQL.com .

 MySQL Query Browser

SARRION (2005b) recommande galement lutilisation de loutil MySQL Query


Browser qui permet dinterroger ou de mettre jour facilement les tables dune base
de donnes MySQL laide de Query et de Scripts SQL.

Le fichier MySQL-query-browser-1.1.19-win.msi tlcharg sur


http://www.MySQL.com a permis dinstaller MySQL Query Browser.

 Dbdesigner

Cest en recherchant sur Google un outil pour modliser la base de donnes de


lapplication rendez-vous que jai dcouvert Dbdesigner sur le site
http://www.fabforce.net/dbdesigner4/. Ce produit mayant donn satisfaction, je lai
adopt.

DBDesigner est un outil graphique de conception de base de donnes. Il permet de


crer graphiquement une base de donnes ou dimporter les schmas dune base
existante pour la modliser et la faire voluer. Cette solution Open Source sinterface
facilement avec MySQL.

Linstallation de Dbdesigner a t ralise partir du fichier


DBDesigner4.0.5.6_Setup.exe tlcharg sur http://www.fabforce.net/downloads.php

 Driver JDBC

JDBC (Java DataBase Connectivity) fournit une interface standardise permettant


une application cliente sous Java daccder une base de donnes relationnelle.
Pour accder la base de donnes de lapplication rendez-vous avec JDBC,
nous utiliserons un pilote compatible avec MySQL. Le rle de ce pilote est de

55
Partie 2

traduire les requtes SQL de lapplication rendez-vous, au format spcifique de la


base MySQL. Le fichier MySQL-connector-java-3.1.12.zip tlcharg sur le site de
MySQL a permis dinstaller un pilote JDBC compatible avec notre projet.

 Plugin Tomcat sysdeo

Plusieurs plugins peuvent tre ajouts Eclipse pour tendre ses capacits. Le seul
qui me semble indispensable lorsque lon utilise la fois Eclipse et Tomcat est celui
tlchargeable gratuitement sur le site www.sysdeo.fr (jai tlcharg le fichier de la
version 3.1 tomcatpluginv31.zip pour raliser linstallation).

Le plug-in Tomcat de Sysdeo possde de nombreux atouts. Il facilite notamment le


dmarrage et l'arrt de Tomcat ainsi que le dploiement dans Tomcat.

Avant de dcouvrir le plug-in Tomcat de Sysdeo (son installation est recommande


par FELICITE 2006) jai test le plug-in Lomboz recommand par SARRION (2005b).
Lomboz simplifie galement le dploiement des applications J2EE sur Tomcat mais
dans une moindre mesure car les manipulations raliser lors de chaque
dploiement sont plus nombreuses (slection du serveur dapplication, suppression
du dploiement prcdent, dploiement). Lomboz possde lavantage de pouvoir
simplifier le dploiement sur plusieurs serveurs dapplications (tomcat, Jonas, Jboss,
).

Eclipse Web Tools Platform (WTP) est un plugin Open-Source pour Eclipse
particulirement adapt au dveloppement d'applications web J2EE. WTP
(disponible sur http://www.eclipse.org/webtools/) est compos de nombreux outils
(diteur JSP, diteur XML, etc.) et exemples de programmes. Je nai pas test
personnellement WTP, mais les dveloppeurs J2EE si intressent beaucoup
actuellement.

 Struts

Aprs avoir tudi le HTML, CSS, JavaScript, Java et MySQL. Aprs avoir cr mes
premires Servlets et JSP avec Eclipse puis dploy le tout sur tomcat avec lomboz
jtais en mesure de commencer le dveloppement de lapplication de prise de
rendez-vous. Je me suis alors pos plusieurs questions :
 Comment implmenter au mieux le design pattern MVC ?
 Quelle mthode utiliser pour que les valeurs entres sur un formulaire soient
conserves lors du raffichage de celui-ci ?
 Comment faire pour vrifier la validit des donnes entres sur un
formulaire ?
 Quelle mthode utiliser pour crer une application multilingue ?
 Comment faire pour dvelopper une application, en vitant, tant que faire ce
peut, la duplication de code (pour faciliter la maintenance) ?

SARRION (2005b) propose une solution base sur des JSP et une Servlet unique
pour implmenter le design pattern MVC 2 sans avoir recours un framework tel que
struts. Il propose galement une solution permettant, lorsquun formulaire est
raffich, de conserver les donnes saisies. Il est possible de crer soi-mme une
mthode permettant dafficher des messages derreurs ou de grer laffichage

56
Partie 2

multilingue. Des instructions includes peuvent tre utilises pour limiter la


duplication de code.

De nombreux framewoks Open Source implmentent MCV. Ltude de Struts ma


semble particulirement intressante car cest le framework MVC le plus utilis par
la communaut J2EE et il rpond, comme nous le verrons dans le chapitre consacr
la formation, toutes les questions poses plus haut. Struts est compos d'un
ensemble de classes java, de librairies de tag JSP et de servlets. Il sera dcrit plus
en dtail dans le chapitre consacr la formation.

Jai install Struts partir du fichier struts-1.2.8-bin.zip tlcharg sur


http://www.jakarta.struts.com en suivant les conseils de FELICITE (2006).

 Hibernate

Hibernate est un framework open source qui permet de mapper une base de
donnes relationnelle en objets (POJO 18). Il propose un accs orient objet aux
donnes.

Au cours de mon apprentissage de J2EE et de Struts jai t amen faire


fonctionner des exemples qui ralisaient des interactions avec une base de donnes
MySQL en utilisant JDBC directement. Cette solution nest pas mauvaise en soit,
mais il existe aujourdhui plusieurs frameworks objet / relationnel dont lavantage
principal est de permettre de crer des applications indpendantes de la source de
donnes. Hibernate et Ibatis sont les plus communment utiliss en complment de
struts.

La communaut Hibernate est actuellement la plus importante et il existe de


nombreux livres sur hibernate. Jai donc dcid dtudier hibernate avant de
dvelopper lapplication de prise de rendez-vous.

Le fichier ayant servi installer hibernate (hibernate-3.1.3.zip) a t tlcharg sur


http://www.hibernate.org/

 Spring

Avant darrter larchitecture utilise pour dvelopper lapplication rendez-vous, je me


suis pos la question de savoir sil tait judicieux davoir recours au framework
Spring puisque ce dernier peut tre utilis avec Struts ainsi quavec Hibernate et quil
commence se diffuser au sein des socits de service en informatique et des
entreprises franaises.

Le framework Open Source Spring (http://www.springframework.org) comme indiqu


dans DUBOIS (2006) est un cadre de travail. Sont objectif est damliorer
larchitecture des applications Java/J2EE en les rendant la fois plus souples, plus
agiles et plus facilement testables. Spring fournit une couche dabstraction destine

18
POJO (Plain Old Java Object) : Un POJO est un objet java. Cet acronyme est
principalement utilis pour faire rfrence la simplicit d'utilisation d'un Objet Java
en comparaison la lourdeur d'utilisation d'un composant EJB.

57
Partie 2

simplifier et structurer les dveloppements J2EE de manire respecter les


meilleures pratiques darchitecture logicielle.

Larchitecture de Spring peut tre reprsente de la faon suivante :

POA MOR Spring Web MVC


Spring Ibatis hibernate - JDO JSP PDF Excel Spring
AspectJ Tiles - Velocity Struts
JSF
DAO Tapesty
Spring JDBC - LDAP

Noyau Spring

Figure 18 : Architecture de Spring

POA : La Programmation Oriente Aspect est utilise par Spring pour offrir des
services similaires ceux des conteneurs EJB, mais sans leur lourdeur, car ils
sont applicables de simples JavaBeans, ou POJO.
MOR : Mapping Objet / Relationnel
DAO : Objets d'Accs aux Donnes
Spring Web : Module dintgration de frameworks Web
MVC : Modle Vue Contrleur

SPRING s'appuie sur les principes du design pattern IoC (Inversion Of Control ou
Injection de dpendance) et sur la programmation Oriente Aspect (POA). L'ide du
pattern IoC consiste, lorsqu'un objet A besoin d'un objet B, dlguer un objet C
la mise en relation de A avec B. Les notions dinjection de dpendance et de
programmation oriente aspect ne seront pas tudies dans ce mmoire.
La figure ci-dessous montre grossirement comment combiner les frameworks Struts
(pour la couche prsentation), Spring (pour la couche Mtier) et Hibernate (pour la
couche persistance) :

Figure 19: Architecture combinant les frameworks Struts, Spring et Hibernate

RAIBLE (2005) permet de construire une petite application web (CRUD ou Create
Retrieve Update Delete) utilisant Struts, Spring et hibernate. Jai test lexemple afin

58
Partie 2

de voir si cette combinaison pouvait avoir un intrt. Je suis parvenu faire


fonctionner lexemple, mais mes connaissances de Struts et dHibernate taient trop
minces pour me permettre de comprendre vraiment lintrt dy associer Spring. Jai
donc dcid de ne pas utiliser Spring pour dvelopper lapplication rendez-vous afin
de consacrer plus de temps ltude de Struts et dHibernate.

 ArgoUml

ArgoUML peut tre tlcharg partir de ladresse http://argouml.tigris.org/ .

Sur ce site, ArgoUML est prsent comme tant loutil de modlisation UML open
source le plus utilis. Il gre les 9 diagrammes UML. Dvelopp en java, il peut tre
utilis sur tous les systmes supportant java. Il existe des extensions commerciales
bases sur ArgoUML (Poseidon de Gentleware, plugin MyEclipse pour Eclipse).

Figure 20 : Cration d'un diagramme de classes avec ArgoUml

59
Partie 2

3.3.1. Conclusion

Pour dvelopper une application web, il nest pas indispensable dutiliser des
frameworks tel que Struts ou hibernate. Lutilisation de ces frameworks dans le
cadre de ce mmoire a pour but den mesurer lintrt.

Afin de dvelopper une application web, il est galement possible de crer son
propre framework. Cette dmarche ncessite davoir un grand nombre dapplications
dvelopper pour amortir la cration du framework. Ceci est donc rserve de
grosses structures (trois ans ont t ncessaires au MAE pour btir le framework
Acube). Pour crer un framework maison , on part gnralement dun framework
tel que Struts que lon tend. Cest le cas pour Acube qui est bas sur StrutsCX et
Struts. Le framework StrutsCX (http://it.cappuccinonet.com/strutscx/index.php
) s'utilise avec Struts et permet de renvoyer du XML la place des JSP.

3.4. Formation J2EE

Cette section rsume quelques points importants concernant les outils, langages,
frameworks ou concepts quil ma fallu matriser avant de commencer le
dveloppement de lapplication de gestion des rendez-vous. Il faut savoir quavant
dentamer ce mmoire je nai jamais particip moi-mme au dveloppement dune
application web en tant que dveloppeur et quil mtait donc indispensable de
consacrer le temps ncessaire pour me former.

La prsentation suit, si possible, un ordre logique pour lapprentissage et traite en


premier des comptences devant tre possdes pour le dveloppement ct client.
Gnralement les dveloppeurs possdent la fois des comptences sur la
programmation ct client et ct serveur. Certaines organisations prfrent
cependant dfinir des profils spcialiss.

3.4.1. Langage de description des pages Web

Le HTML permet de structurer et dafficher diffrents objets sur un cran (page


HTML). Ces objets peuvent tre du texte, des tableaux, des images, de la vido ou
des sons. Ils peuvent tre aussi les lments devenus classiques des
environnements graphiques, savoir les boutons, listes, barres de dfilement, cases
cocher, Sur la plupart de ces objets, il est possible de placer des liens qui vont
permettre de se connecter dautres pages. Le langage HTML, lorigine, est
essentiellement statique.

Pour dvelopper une application web il est ncessaire de connatre le HTML. Ceci ne
reprsente pas une difficult majeure. Il existe de nombreux ouvrages consacrs au
HTML et plusieurs outils de conception de site web commerciaux (ex : frontpage de
Microsoft) ou open source (ex : NVU) qui permettent de gnrer du code HTML au
travers dune interface graphique.

Aprs avoir tlcharg le fichier nvu-1.0-win32-installer-fr.exe sur le site


http://www.nvu.com/ et install NVU, jai suivi la formation disponible ladresse

60
Partie 2

http://info.sio2.be/ pour valuer NVU. NVU comme ses concurrents a tendance


gnrer beaucoup plus de code que ncessaire et ne permet pas toujours de raliser
exactement ce que lon veut. Dans la pratique le programmeur devra donc
gnralement crer le code HTML la main .

LANCKER L.V., 2003 ma permis daffiner mes connaissances du HTML laide


dexemples.

Les balises HTML ne sont pas dcrites dans ce mmoire.

Exemple de page HTML :

La sauvegarde du texte suivant dans un fichier texte dextension html

<HTML>
<HEAD>
<TITLE>PAGE DE LOGIN - GESTION DES RENDEZ-VOUS</TITLE>
</HEAD>
<BODY BGCOLOR="white">
<H1>Veuillez vous identifier</H1>
<FORM name="login">
<TABLE>
<TR>
<TD> Login </TD>
<TD> <INPUT type="text" value="" name="login"/></TD>
</TR>
<TR>
<TD> Mot de passe </TD>
<TD> <INPUT type="text" value="" name="motdepasse"/></TD>
</TR>
</TABLE>
<INPUT type="submit"/>
</FORM>
</BODY>
</HTML>

61
Partie 2

Puis louverture de ce fichier dans un navigateur donne le rsultat suivant :

Figure 21 : Exemple HTML

Lutilisation de pages HTML implique lutilisation du protocole http (HyperText


Transfert Protocol). En effet, le serveur et le client web communiquent grce au
protocole http. Apache est un serveur http Open Source. Tomcat intgre son propre
serveur http (coyote).

3.4.2. Code excut par le navigateur

Cr lorigine par Netscape, le langage de programmation JavaScript est conu


pour traiter localement des vnements provoqus par lutilisateur (ex : vnement
li au positionnement de la souris). Cest un langage interprt, cest dire que le
texte contenant le programme est analys au fur et mesure par linterprte, partie
intgrante du navigateur, qui va excuter les instructions.

SARRION (2005a) ma permis de minitier ce langage.

Lexemple ci-dessous permet dafficher la date actuelle dans une page HTML avec
un format personnalis ( 02/07/2006 devient Dimanche 2 juillet 2006, 17H10 ).

62
Partie 2

Contenu du fichier date.html :

<HTML>
<HEAD>
<TITLE>AFFICHER LA DATE</TITLE>
</HEAD>
<BODY BGCOLOR="white">
<H1>Voici la Date</H1>
<SCRIPT src = "dateheure.js">
</SCRIPT>
<SCRIPT LANGUAGE = "JavaScript">
document.write (AffichageDateConviviale (Aujourdhui) )
</SCRIPT>
</BODY>
</HTML>

Le premier script permet du charger le contenu du fichier dataheure.js. Le second


affiche la date au format attendu en passant la date du jour la fonction
AffichageDateConviviale.

Contenu du fichier dataheure.js :

var Aujourdhui = new Date()


function NomDuJour (QuelleDate)
{switch (QuelleDate.getDay())
{case 1 : return "Lundi" break
.
case 0 : return "Dimanche" break}}
function NomDuMois (QuelleDate)
{switch (QuelleDate.getMonth())
{case 0 : return ("janvier") break

case 11 : return ("dcembre") break}}
function AffichageDateConviviale (QuelleDate)
{var T
T = (" ") + (NomDuJour (QuelleDate) ) + (" ") + (QuelleDate.getDate()) + (" ") + (NomDuMois (QuelleDate) ) + ("
") + (QuelleDate.getFullYear() ) + (", ") + (QuelleDate.getHours()) + ("H")
if (Aujourdhui.getMinutes() < 10 ) T = T + ("0")
T = T + (QuelleDate.getMinutes())
return T}

3.4.3. Feuilles de styles pour l'affichage des pages html

Je me suis form CSS 2 (Cascading Styles Sheets) en lisant SARRION (2005a).


Lutilisation des feuilles de style CSS permet damliorer lergonomie des pages Web
en sparant contenu et prsentation. CSS permet notamment de dcouper la page
en plusieurs blocs, sans avoir recours a la balise html <TABLE>.

63
Partie 2

Si lon souhaite dcouper la page en 6 blocs de la faon suivante :

entete
entete2
entete3
menu texte

pied

Il est possible de crer la page HTML suivante :

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">


<html>
<head>
<meta content="text/html; charset=ISO-8859-1" http-equiv="content-type">
<title>mise en page css</title>

<style title="Styles" media="all" type="text/css">


#conteneur { border: 1px solid rgb(0, 0, 102);
width: 90%;
margin-left: 5px;
background-color: rgb(230, 230, 230);
font-family: Arial,Helvetica,sans-serif;
color: rgb(0, 0, 0);
font-weight: normal;
font-style: normal;
font-size: 11px;
}
#entete { border: 1px solid rgb(0, 0, 0);
width: 100%;
opacity: 1;
height: 50px;
background-image: url(file:///C:/aphilippe/2006/monsitenvu/images/degrademauv.jpg);
background-position: left top;
font-family: Comic Sans MS;
font-weight: bold;
color: rgb(0, 0, 0);
font-size: 25px;
text-align: center;
padding-top: 10px;
}
#menu { background-color: rgb(153, 255, 255);
float: left;
width: 150px;
}
#texte { background-color: rgb(204, 255, 255);
margin-left: 150px;
}
#pied { background-color: rgb(255, 204, 204);
clear: left;
}
#entete2 { width: 100%;
background-color: rgb(0, 0, 0);
color: rgb(255, 255, 255);
}
#entete3 { margin: 0px;
padding: 0px;

64
Partie 2

width: 100%;
background-color: rgb(204, 204, 204);
}
.texte10 { font-family: Arial,Helvetica,sans-serif;
font-size: 50px;
}
</style>
</head>
<body>
<div id="conteneur">
<div id="entete">Garage Belle Auto - Prise de rendez-vous</div>
<div id="entete2">&nbsp;Aide I Contact I Mot de
Passe&nbsp;</div>
<div id="entete3">
<table style="text-align: left; width: 100%;" border="0" cellpadding="0" cellspacing="0">
<tbody>

<tr>
<td style="text-align: left;">Texte align gauche (bloc n 3)</td>
<td style="text-align: right;">Texte align droite (bloc n 3)</td>
</tr>
</tbody>
</table>
</div>
<div id="menu">Emplacement du menu javasript</div>
<div class="texte10" id="texte">Contenu de la page. <BR><BR><BR>
</div>
<div id="pied">pied de page</div>
</div>
</body>
</html>

Remarque : Les styles qui apparaissent en gras ci-dessus peuvent tre placs dans
un fichier externe dextension CSS et imports dans la page HTML avec la balise
<link >.

Le rsultat est le suivant :

65
Partie 2

Aprs avoir ajout un menu JavaScript deux niveaux dans le bloc menu , la
date du jour formate avec lexemple JavaScript donn plus haut dans le bloc
entete3 et amlior lergonomie, nous obtenons le rsultat suivant :

3.4.4. Structurer des donnes

Il est aujourdhui indispensable pour un dveloppeur dapplication web de possder


des notions de base sur le formalisme XML (eXtensible Markup Language) car cette
technologie est largement exploite par J2EE.

Si un document textuel respecte un ensemble de rgles (une balise de fin pour


chaque balise de dbut et inversement, ordre des balises, ) il est au format XML.

Les 2 exemples ci-dessous sont des documents XML bien forms :

<Personne nom=MARTIN titre=DIRECTEUR>


</Personne>

<Personne>
<Nom>MARTIN</Nom>
<Titre>DIRECTEUR</Titre>
</Personne>

3.4.5. Langage de dveloppement

Pour dvelopper une application web J2EE, il est bien sr ncessaire de connatre le
langage java. Il existe de nombreux ouvrages sur java. Jai utilis HUBBARD (2005)
pour me former car cest un ouvrage rcent, peu volumineux, qui sadresse des
dbutants et permet dapprendre le langage java partir dexemples simples.

Java est un langage qui a t dfini partir de 1990, dans le cadre dun projet de
recherche, par Sun Microsystems. Cest un langage objet de haut niveau qui vite au
programmeur les difficults dun langage comme C++. Contrairement aux langages

66
Partie 2

plus anciens qui sparaient les donnes et les traitements, un langage objet comme
java permet de dfinir pour une classe, la fois des donnes (variables dinstance)
et des traitements (mthodes).

A partir dune classe, on peut crer autant dobjets que ncessaire (instances de
classe). Les instances de classe sont cres laide dun constructeur (unit de
code contenu dans la classe dfinissant comment instancier un objet). Une classe
peut contenir plusieurs constructeurs (cest la liste des paramtres qui permet de les
diffrencier).

Pour crer un programme java, il faut crer un fichier ayant lextension .java , puis
compiler ce programme pour gnrer du code interprtable (bytecode). Cette
opration permet la cration dun ou plusieurs fichiers dextension .class . Il est
ensuite possible dexcuter le programme java laide dune machine virtuelle
capable dinterprter le bytecode.

On reproche souvent aux programmes java dtre plus lents que des programmes
compils directement en langage machine. Ceci est vrai lorsque le bytecode Java est
interprt, mais lest moins lorsque celui-ci est converti la vole en code natif par
un compilateur juste temps lors de lexcution. Les applications dveloppes
avec Java ont cependant lavantage dtre portables grce aux machines virtuelles.

Dans les langages objet et donc dans le langage Java, il est possible de dfinir une
classe par hritage dune autre classe et de spcialiser la nouvelle classe (il est
possible de redfinir une mthode de la classe dorigine).

Avec le langage Java, la gestion du polymorphisme (Choix dynamique de la mthode


excuter en fonction du contexte) est assure par la machine virtuelle et est plus
simple mettre en uvre quavec C++.

Exemple de programme java :

Le fichier Bonjour.java qui contient le code suivant :

package test;
public class Bonjour {
public static void main(String[] args) {
System.out.println("Bonjour");
}
}

Affiche Bonjour sur la console lors de son excution (aprs compilation).

Nous verrons un peu plus loin comment crer ce programme avec Eclipse.

67
Partie 2

3.4.6. Plate-forme architecturale

CLAVEL (2003) indique que larchitecture J2EE (Java 2 Entreprise Edition) est
aujourdhui le modle le plus utilis pour les applications web Intranet et Internet. Les
applications Intranet reposent sur les mmes principes quInternet (HTML, client
lger, protocole http ) mais accessibles uniquement par les membres de
lentreprise. La tendance actuelle pour beaucoup dentreprises est dutiliser les
technologies Web pour faire voluer leur systme dinformation (y compris les
applications critiques) et non plus uniquement de crer des applications
priphriques (ex : prsentation de la socit, postes pourvoir, ).

Une application informatique est compose de 3 couches fondamentales :

 Couche de prsentation (affichage des donnes pour lutilisateur)


 Logique mtier (ex : le montant TTC dune facture est li au taux de TVA)
 Couche daccs aux donnes ou couche de persistance

Il existe plusieurs types darchitectures :


 Simple tiers : les 3 couches sont sur lordinateur de lutilisateur
 Architecture client serveur ou 2 tiers : la base de donnes est partage entre
plusieurs utilisateurs et situe sur un serveur ddi. Les 2 autres couches
(couche de prsentation et logique mtier) sont sur le poste de lutilisateur.
Laccs aux donnes est gnralement ralis laide de commandes SQL.
 Architecture 3 tiers : Le poste client gre uniquement la couche de
prsentation. La logique mtier est dfinie sur un serveur accessible par tous
les utilisateurs. La couche daccs aux donnes est galement situe sur un
serveur partag entre tous les utilisateurs.
 Architecture n-tiers (ex : interface utilisateur, modle mtier, rgles mtiers,
correspondances entre objets mtiers et sources de donnes, accs aux
donnes).

Larchitecture J2EE est base sur la notion dapplication n-tiers (certaines couches
peuvent se situer physiquement sur le mme serveur). On identifie quatre couches
implmentables indpendamment les unes des autres :
 Prsentation ct client (pas de traitement mtier, uniquement laffichage des
informations fournies par le serveur au format HTML sur le navigateur).
 Prsentation ct serveur.
 Logique mtier ct serveur.
 Systme dinformation de lentreprise.

Les principaux avantages des architectures 3-tiers et n-tiers sont :


 De pouvoir faire voluer la logique mtier sans avoir effectuer un
dploiement sur chaque poste client.
 De partager des donnes entre plusieurs utilisateurs

Larchitecture J2EE est cense mieux supporter la monte en charge et permettre de


dvelopper des applications web plus faciles maintenir et avec une interface
utilisateur plus labore que ce qui tait possible avec les premires applications
web dynamiques qui utilisaient des scripts CGI.

68
Partie 2

J2EE regroupe la fois un ensemble de bibliothques et une plate-forme logicielle.


Cest une version de la plate-forme java spcialement tudie pour les problmes
des applications dentreprise. J2EE est destin aux gros systmes dentreprises.

Avec J2EE, il est possible de construire des applications indpendantes de toute


plate-forme matriel.

Larchitecture J2EE inclut principalement 4 types de composants :


 Les EJB (Entreprises JavaBeans) ;
 Les Web services ;
 Les servlets ;
 Les JSP (JavaServer Pages).

Les EJB et Web services ne seront pas tudis dans ce mmoire. Les servlets et les
JSP sont chargs ct serveur du traitement de la requte et de la mise en page du
document HTML.

Une servlet est une classe Java qui ralise des traitements et inscrit le rsultat dans
un flux en direction du client.

Une JSP est une page HTML qui invoque des traitements et insre les donnes
rcupres en son sein.

3.4.7. Programme Java s'excutant sur un serveur

SARRION (2005b) explique quune Servlet est une classe Java implmentant
linterface javax.servlet.Servlet qui est stocke et contrle par un serveur
dapplication J2EE (Tomcat dans notre cas). Son invocation est la consquence de
la requte du client, dirige vers cette servlet. Le serveur Web reoit une demande
adresse une servlet sous la forme dune requte http. Il transmet la requte la
servlet concerne. La servlet reoit les paramtres de la requte envoye par le
client. Elle peut alors effectuer toutes les oprations ncessaires pour construire de
manire dynamique la rponse avant de renvoyer celle-ci sous forme de code HTML
au client.

69
Partie 2

La servlet suivante renvoie au client une page HTML qui affiche Bonjour .

Fichier servlet1.java
package testservlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class servlet1 extends HttpServlet
{
protected void doGet(
HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException
{
/* obtention de l'ecrivain */
PrintWriter out = response.getWriter();
/* indiquer que le type de sortie dans la rponse doit tre
interprt en HTML */
response.setContentType("text/html");
/* envoyer du HTML sur le flux de sortie */
out.println ("<h1>Bonjour</h1>");
}
}

Avant de pouvoir appeler cette servlet, il faut la compiler afin de crer le fichier
servlet1.class. Ce fichier servlet1.class peut alors tre copi dans larborescence du
serveur dapplication (certaines rgles propres aux serveurs dapplication sont
respecter). Aprs avoir mis jour le fichier web.xml dans la mme arborescence, il
est alors possible dappeler la servlet.

Fichier web.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
"web-app_2_2.dtd">
<web-app>
<servlet>
<servlet-name>servlet1</servlet-name>
<servlet-class>testservlet.servlet1</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>servlet1</servlet-name>
<url-pattern>/servlet1.html</url-pattern>
</servlet-mapping>
</web-app>

Pour appeler la servlet, si elle a t installe sur Tomcat, il faut taper


http://localhost :8080/ testservlet/servlet1.html dans le navigateur.

Pour dvelopper lapplication de prise de rendez-vous, lutilisation de Struts nous


dispense davoir crer des servlets. Nous aurons par contre crer des pages
JSP.

70
Partie 2

3.4.8. Cration de pages dynamique en HTML

Les JSP (Java Server Page) sont trs proches des servlets (elles servent galement
crer du contenu Web de manire dynamique), mais en diffrent par le fait quelles
sont constitues de code Java insr dans des documents HTML. Le serveur J2EE
compile ces documents pour en faire des servlets qui renvoient aux clients du
contenu HTML.

Fichier nombres.jsp

<%@ page language="java" %>


<!DOCTYPE HTML PUBLIC "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<title>Lomboz JSP</title>
</head>
<body bgcolor="#FFFFFF">

<h1>Nombres de 1 10</h1>

<% int i;
for (i = 1; i <= 10; i++)
{
out.println(i + "<br>");
}
%>

</body>
</html>

Aprs avoir cr cette JSP dans larborescence du serveur dapplication, il est


possible de lappeler partir du navigateur.

3.4.9. Environnement de dveloppement

La lecture du livre HOLZNER (2004) ma apport une bonne matrise dEclipse. Ce


livre est trs bien crit et les exemples sont simples et faciles mettre en uvre.

71
Partie 2

Eclipse est un environnement de dveloppement trs complet, utilis principalement


pour dvelopper en java. Eclipse permet de dvelopper dans dautres langages en
installant les plug-ins adapts. On peut personnaliser linterface utilisateur dEclipse
(Choix des vues afficher). Par dfaut laffichage est le suivant :

Pour crer le programme Java qui affiche bonjour sur la console dont nous avons
dj parl, voici les tapes suivre :
 Crer un projet (fichier / nouveau / projet). Le nouveau projet apparat dans la
fentre explorateur de packages ;
 Crer une classe java et un package (fichier / nouveau / classe) ;
 Complter le code de la classe au centre de lcran et sauvegarder (fichier /
sauvegarder tout) ;
 Compiler (projet / gnrer tout) ;
 Redmarrer Tomcat avec licne du plugin sysdeo la plus droite

;
 Lancer lexcution (Clic droit sur la classe / excuter en tant que / application
java).

72
Partie 2

Pour passer en mode dbogage, il suffit de double cliquer gauche de la ligne de


code sur laquelle on souhaite placer un point darrt puis de lancer lexcution dans
le mode appropri (Clic droit sur la classe / Dboguer en tant que / application java).
Lcran suivant est affich (il permet dexcuter le programme pas pas) :

Une fois le dbogage termin, lutilisateur peut revenir au mode daffichage classique
(fentre / ouvrir la perspective / java).

Eclipse permet dutiliser Junit (librairie open source pour les tests unitaires). Vous
pouvez crer des classes bases sur loutil Junit et des classes normales dans le
mme projet. Le code Junit sert tester les autres classes du projet. Junit permet de
construire un ensemble de jeux de tests. Aprs chaque modification de code,
quelques clics suffisent pour vrifier si lapplication passe avec succs les jeux de
tests.

Dans la classe base sur JUnit (cre par : Fichier / nouveau / scnario de test Junit)
on peut utiliser plusieurs types dassertion pour effectuer les tests (ex :
assertFalse(a) permet de tester si le boolen a est faux). Il est ensuite possible avec
un clic droit sur la classe de test de slectionner loption excuter en tant que / test
Junit pour lancer le test.

DJAAFAR (2005) explique que sous Eclipse la gestion du travail en quipe repose
sur loutil CVS (Concurrent Versions System logiciel open source de gestion de
version). Pour travailler avec CVS, il est ncessaire davoir accs un serveur CVS.
Sous Windows, cest couramment CVSNT (disponible gratuitement sur le site
http://www.cvsnt.org) qui est utilis. Aprs avoir cr un rfrentiel pour le code
source du projet au moyen du serveur CVS et lanc CVSNT Eclipse permet dajouter
un projet et des sources dans le rfrentiel CVS. Le rfrentiel CVS est
gnralement situ sur un serveur partag entre tous les dveloppeurs. CVS gre et

73
Partie 2

stocke toutes les modifications effectues sur un code source en suivant par dfaut
les rgles du verrouillage optimiste. Le verrouillage optimiste autorise diffrents
programmeurs modifier simultanment un mme code source (chacun travaillant
sur sa propre version). Les diffrentes versions sont si possible fusionnes
automatiquement lors de la validation des modifications. En cas de conflits, le
programmeur est inform et il doit les rsoudre manuellement.

Ant, dont nous avons dj parl, est directement install et oprationnel dans
Eclipse. Ant peut automatiser plusieurs dizaines de tches quil aurait fallu raliser
manuellement. Pour travailler avec Ant il faut crer dans le projet un fichier build.xml.
Eclipse reconnat ce fichier comme un fichier Ant.

Le fichier build.xml suivant affiche Bonjour sur la console

<?xml version="1.0" encoding="ISO-8859-1" ?>


<project name="TestAnt" default="Affichermessage">
<target name="Affichermessage">
<echo message = Bonjour/>
</target>
</project>

Plusieurs blocs <target> </target> peuvent figurer dans build.xml. Chaque bloc
permet de raliser une action (ex : crer ou dtruire un rpertoire, compiler
lapplication, crer un fichier JAR ou WAR, crer la documentation javadoc, dplacer
des fichiers, lancer les tests unitaires, ). Les fichiers JAR et WAR sont des
conteneurs de fichiers (comme tar ou zip).

3.4.10. Bien concevoir larchitecture globale de lapplication

Le design pattern MVC (Modle Vue Contrleur) est prsent dans DUBOIS (2006).
Ce pattern est communment utilis dans les applications Java/J2EE pour raliser la
couche de prsentation des donnes. MVC favorise la sparation entre la
prsentation de lapplication, les interactions avec lutilisateur et des modles de
donnes. Il existe deux types de patterns MVC, le pattern MVC dit de type 1, qui
possde un contrleur par action, et le pattern MVC dit de type 2, plus rcent, qui
possde un contrleur unique. Nous nous concentrerons sur ce dernier, puisque
cest celui sur lequel sappuie Struts.

74
Partie 2

La figure ci-dessous illustre les diffrentes entits du type 2 du pattern MVC ainsi
que leurs interactions lors du traitement dune requte.

Contrleur Modle
Front Controller Worker Contient les
donnes
Aiguille les Ralise le prsenter
requtes vers traitement de la
le bon worker requte

Vue
Construit la vue en
affichant les donnes
prsenter

Figure 22 : Composants du pattern MVC type 2

Les caractristiques des composants de ce pattern sont les suivantes :

 Modle : Gestion des donnes de lapplication (lien avec la base de


donnes) ;
 Vue : Prsentation des donnes lutilisateur (sorties graphiques et textuelles
sur lcran) ;
 Contrleur : Comportement de lapplication en fonction des actions de
lutilisateur (clavier, souris). Lors de la mise en uvre du type 2 du pattern
MVC, cette partie se compose dun point dentre unique pour toute
lapplication. Ce point dentre unique traite la requte et dirige les traitements
vers lentit Worker approprie. Le Front Controller est intgr au framework
MVC, et seuls les workers sont spcifiques lapplication.

Un framework MVC implmente le contrleur faade, les mcanismes de gestion du


modle ainsi que ceux de slection et de construction de la vue. Lutilisateur dun tel
framework a en charge le dveloppement et la configuration des workers.

Une application mettant en uvre le design pattern MVC est gnralement mieux
structure et donc plus facile maintenir. Les donnes dun seul modle peuvent
tre affiches dans plusieurs vues qui disposent de logiques de prsentation
diffrentes.

3.4.11. Un framework bas sur l'approche MVC

Struts est un framework de dveloppement apparu en 2000 qui permet de crer des
applications web. C'est une solution open source qui implmente le design pattern
MVC de type 2.

Struts est de loin le framework le plus utilis pour le dveloppement dapplication


web J2EE. Il est facile de trouver des sites ou des livres traitant de struts. Struts est
particulirement adapt pour la cration de sites ayant une taille consquente.

75
Partie 2

Lutilisation de Struts pour des sites ne comportant que quelques pages alourdit
inutilement lapplication et nest donc pas justifie. Struts facilite la maintenance de
lapplication et la rend plus volutive.

Plusieurs personnes mont dcourages de mattaquer struts. Pour Eric Sarrion


(auteur de deux ouvrages cits dans ce mmoire) Struts est une usine gaz et il
nexiste pas de bons livres sur le sujet. Franois Merand (coauteur dun ouvrage cit
dans ce mmoire) a galement utilis le terme d usine gaz pour dcrire Struts,
mais il a ajout que ltude de Struts aurait au moins le mrite de me permettre de
me familiariser avec le modle MVC.

Il est vrai que lutilisation de struts nest pas triviale au premier abord. Aprs lavoir
pratiqu quelque peu, on finit gnralement par acqurir certains rflexes et les
choses qui paraissaient embrouilles au dpart finissent par devenir claires. Struts
nest justifi que pour des projets dune certaine taille.

Il existe plusieurs livres en franais sur struts. Jai entrepris la lecture de plusieurs
dentre eux en testant une partie des exemples proposs. Vous trouverez en
bibliographie les livres consacrs struts que jai consults. Certains sont assez
anciens, dautres destins tre utiliss comme aide-mmoire pour des personnes
connaissant dj struts. Parmi ces livres, jai tudi en dtail ceux de CEKVENICH &
GEHNER (2005) et FELICITE (2006) :

 Le premier ne permet pas un apprentissage approfondi de struts car le


fonctionnement de ce dernier nest pas dcrit en dtail. Cet ouvrage est
cependant trs intressant car les auteurs nous font part de leur exprience
sur des projets rels et dlivrent de nombreux conseils.
 Le deuxime est trs rcent et recommande ladoption dun environnement
stable bas sur les dernires versions du JDK et dEclipse. Ce livre ma
permis de valider les choix techniques que javais effectus prcdemment et
dcarter des outils comme Easystruts et MyEclipse.

Easystruts est un plugin Eclipse cens simplifier la cration


dapplications struts. Les tests que jai effectu ne mont pas sembl
concluant et de plus easystruts nest pour le moment compatible
quavec la version 2 dEclipse.

Le plugin MyEclipse pour Eclipse semble pouvoir rendre de nombreux


services, notamment pour crer des applications struts.
Malheureusement il nest pas gratuit et je ne lai donc pas test moi-
mme. Dans le cadre dune utilisation professionnelle, je pense que cet
outil est probablement retenir.

76
Partie 2

Architecture et concepts de struts

Struts implmente le pattern MVC de faon classique :

 Modle : Constitu de JavaBeans standards ;


 Vue : Constitue de pages JSP ;
 Contrleur : Constitu de la servlet Struts principale, appele ActionServlet.

Figure 23 : Struts et le modle MVC

Dans son implmentation, Struts utilise deux notions principales, qui sont
reprsentes par les classes :

 Action : Reprsente une action de lutilisateur, telle que valider une slection.
Cette classe proche du contrleur sert de liant entre le formulaire envoy par
lutilisateur, lexcution de traitements et laffichage dune page Web rsultant
de lopration. Elle reprsente le worker introduit la section prcdente.
 Formulaire : Reprsente un formulaire HTML, tel quil a t rempli par
lutilisateur.

Lensemble form par les actions, formulaires et JSP est reli via le fichier de
configuration de Struts, Struts-config.xml. Toute application Web J2EE doit respecter
certaines rgles au niveau de son arborescence afin de pouvoir fonctionner sur un
serveur dapplication. Le rpertoire WEB-INF doit figurer dans cette arborescence.
Le fichier Struts-config.xml doit tre stock dans ce rpertoire.

77
Partie 2

Configuration de Struts

Struts se fonde sur une servlet trs volue pour assurer sa fonction de contrleur
gnrique. Comme pour toute servlet, il faut la configurer dans le fichier web.xml :

()
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
()
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
()

Cette configuration permet denvoyer la servlet ActionServlet de Struts les URL se


terminant par *.do.

Le fichier struts-config de lapplication rendez-vous amput de certains formulaires et


de certaines actions, pour une prsentation plus lisible, se prsente de la faon
suivante :

<?xml version="1.0" encoding="UTF-8"?>


<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts
Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-
config_1_2.dtd">
<struts-config>
<form-beans >
<form-bean name="personneEditForm"
type="de.laliluna.library.struts.form.PersonneEditForm" />
()
</form-beans>
<global-exceptions />
<global-forwards />
<action-mappings >
<action
attribute="personneEditForm"
input="/jsp/MajMonProfil.jsp"
name="personneEditForm"
parameter="do"
path="/MajMonProfil"
scope="request"
type="de.laliluna.library.struts.action.MajMonProfilAction"
validate="false">
<forward name="menuClient" path="/jsp/menuClient.jsp" />
<forward name="editPersonne" path="/jsp/MajMonProfil.jsp" />
</action>
<action
attribute="personneEditForm"
input="/jsp/MajMonProfil.jsp"
name="personneEditForm"
parameter="do"
path="/SaveMonProfil"
scope="request"
type="de.laliluna.library.struts.action.MajMonProfilAction"

78
Partie 2

validate="true">
<forward name="menuClient" path="/jsp/menuClient.jsp" />
<forward name="editPersonne" path="/jsp/MajMonProfil.jsp" />
</action>
()
</action-mappings>
<message-resources
parameter="de.laliluna.library.struts.ApplicationResources" />
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property
property="pathnames"
value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/>
</plug-in>
</struts-config>

Ce fichier comporte les grandes parties suivantes :

 <form-bean> : Contient la liste des formulaires Struts. On associe chaque


formulaire, un nom et une classe Java. La classe reprsente un Javabean.
 <global-exceptions> : Cette partie est facultative. Elle permet de grer
certaines exceptions.
 <global-forwards> : Cette partie est facultative. Elle permet partir de toutes
les actions de pouvoir renvoyer certaines pages en simplifiant le paramtrage
dans struts-config.xml.
 <action-mappings> : Cette partie est la plus importante et la plus complexe.
Elle permet de lier une URL une action. Dans notre exemple le menu client
permet dafficher la page de mise jour du profil de la personne connecte
(ralis avec le lien <html:link action="MajMonProfil.do?do=prepareEdit">
Modifier mon profil</html:link>). Laiguillage est ralis dans le fichier struts-
config.xml avec laction dont path="/MajMonProfil". Lorsque lutilisateur
clique sur le bouton pour enregistrer sa saisie, la page est raffiche si la
saisie est incorrecte, sinon, le menu client est affich. La page de mise jour
du profil contient une instruction (<html:form action="/SaveMonProfil">) qui
permet dans le fichier struts-config.xml de savoir quelle action effectuer (celle
dont path="/SaveMonProfil"). On peut voir que dans cette action la validation
de la saisie est active (validate="true) alors quelle ne lest pas dans laction
identifie par /MajMonProfil.
 <message-resources> : Dfinit un fichier de proprits, dans notre cas
ApplicationResources.properties. Ce fichier contient les messages utiliss
dans les pages JSP et les actions.

Le fichier Struts-config.xml est relativement complexe. Il peut tre intressant


dutiliser un utilitaire (comme Struts Console) pour visualiser son contenu
graphiquement. Je nai pas test cette possibilit, mais DUBOIS (2006) la
recommande.

79
Partie 2

Actions et formulaires

Les actions et les formulaires sont les classes de base utilises dans Struts.

Les actions Struts hritent toutes de la classe Action ou de la classe DispatchAction


(il faut utiliser DispatchAction lorsque lon fait appel la validation de la saisie laide
de validators). Voici un exemple daction, provenant du projet rendez-vous :

package de.laliluna.library.struts.action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;
import de.laliluna.library.bl.LibraryManager;
import de.laliluna.library.struts.form.PersonneEditForm;

public class MajMonProfilAction extends DispatchAction {

/** Prparer Mise jour */


public ActionForward prepareEdit(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
PersonneEditForm personneEditForm = (PersonneEditForm) form;
LibraryManager libraryManager = new LibraryManager();
HttpSession s = request.getSession();
String p5="MonId" ;
System.out.println("prepareEdit Dans MajMonProfilAction");
String p6 = s.getAttribute(p5).toString();
Integer id = Integer.valueOf(p6);
personneEditForm.setPersonne(libraryManager.getPersonneByPrimaryKey(id));
return mapping.findForward("editPersonne");
}

/** Sauvegarde */
public ActionForward savePersonne(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
System.out.println("savePersonne Dans MajMonProfilAction");
PersonneEditForm personneEditForm = (PersonneEditForm) form;
LibraryManager libraryManager = new LibraryManager();
libraryManager.savePersonne(personneEditForm.getPersonne());
return mapping.findForward("menuClient");
}
}

Cette classe est utilise par le client lorsquil appelle la fonction de mise jour de son
profil partir du menu client et lorsquil valide sa saisie sur lcran de mise jour de
son profil. Dans les deux cas une mthode de la classe libraryManager est appele
(La classe LibraryManager contient toutes les mthodes ncessitant daccder la
base de donnes). Dans le premier cas la mthode de libraryManager permet de
charger dans le formulaire les informations du client modifier. Dans le deuxime
cas la mthode de libraryManager permet de savegarder les lments saisis dans la
base de donnes. Ces mthodes seront dcrites plus en dtail dans la partie
consacre Hibernate.

Lobjectif de laction est deffectuer un traitement, puis de renvoyer lutilisateur vers


une nouvelle page Web. Cette page est reprsente par lobjet ActionForward, que
retourne laction.

80
Partie 2

Dans notre exemple, la mthode prepareEdit renvoie sur la page de mise jour du
profil alors que la mthode savePersonne renvoie sur le menu client.

Les formulaires Struts sont des JavaBeans standards qui hritent tous de la classe
ActionForm ou de la classe ValidatorForm (il faut utiliser ValidatorForm lorsque lon
fait appel la validation de la saisie laide de validators).

Les formulaires Struts correspondent une page Web. Lors de la validation de la


page par lutilisateur, Struts transforme la requte http envoye en un objet
formulaire que nous pouvons ensuite plus facilement manipuler. Chaque paramtre
de la requte http est renseign dans lattribut du formulaire qui porte son nom.

Voici un exemple de formulaire, provenant du projet rendez-vous :

ValidatorForm
package de.laliluna.library.struts.form;
import java.util.List;
import java.util.Set;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import de.laliluna.library.Personne;
import org.apache.struts.validator.ValidatorForm;

public class PersonneEditForm extends ValidatorForm {

private Personne personne;


public Personne getPersonne() {
return personne;
}

public void setPersonne(Personne personne) {


this.personne = personne;
}

public boolean equals(Object rhs) {


return personne.equals(rhs);
}

public String getTelephone() {


return personne.getTelephone();
}

public Integer getId() {


return personne.getId();
}

public String getLastname() {


return personne.getLastname();
}

public String getFirstname() {


return personne.getFirstname();
}
public String getCourriel() {

81
Partie 2

return personne.getCourriel();
}

public void setCourriel(String courriel) {


personne.setCourriel(courriel);
}
public String getLogin() {
return personne.getLogin();
}

public void setLogin(String login) {


personne.setLogin(login);
}
public String getMotdepasse() {
return personne.getMotdepasse();
}

public void setMotdepasse(String motdepasse) {


personne.setMotdepasse(motdepasse);
}
public java.lang.Boolean getAdministrateur() {
return personne.getAdministrateur();
}

public void setAdministrateur(java.lang.Boolean administrateur) {


personne.setAdministrateur(administrateur);
}
public int hashCode() {
return personne.hashCode();
}

public void setTelephone(String telephone) {


personne.setTelephone(telephone);
}

public void setId(Integer id) {


personne.setId(id);
}

public void setLastname(String lastname) {


personne.setLastname(lastname);
}

public void setFirstname(String firstName) {


personne.setFirstname(firstName);
}

public String toString() {


return personne.toString();
}

public void reset(ActionMapping mapping, HttpServletRequest request) {


personne = new Personne();
}

Lorsque le client est sur la page de mise jour de son profil et quil clique sur le
bouton qui permet denregistrer sa saisie, les donnes prsentes sur la page sont

82
Partie 2

transmises aux attributs du formulaire ci-dessus laide des mthodes set


(setFirstname, etc.). Nous pouvons ensuite utiliser les mthodes get (getFirstname,
etc. ) pour accder ces valeurs.

Les balises Struts et les pages JSP

Les balises Struts vitent linsertion de code Java dans les pages JSP. Elles
ressemblent des balises HTML. Struts propose en standard de nombreuses
balises. Il existe dautres bibliothques de balises que celle propose par Struts (ex :
JSLT). La page JSP suivante est extraite du projet rendez-vous :

Page MajMonProfil.JSP
<%@ page language="java"%>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean"%>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html"%>
<html>
<head>
<title>Modifier mon profil - MajMonProfil.jsp </title>
</head>
<body>
<h1>Modifier mon profil</h1>
<html:form action="/SaveMonProfil">
<html:hidden property="id"/>
<html:hidden property="do" value="savePersonne"/>
<html:errors/>
<table border="1">
<tbody>
<tr>
<td>
<bean:message key="personne.prenom" />
</td>
<td>
<html:text property="firstname"/> &nbsp; *
<html:errors property="firstname" header="errors.entete"
footer="errors.pied" prefix="" suffix=""/>
</td>
</tr>
<tr>
<td>
Nom
</td>
<td>
<html:text property="lastname"/>
</td>
</tr>
<tr>
<td>
T&eacute;l&eacute;phone
</td>
<td>
<html:text property="telephone"/>
</td>
</tr>
<tr>
<td>
Courriel
</td>
<td>

83
Partie 2

<html:text property="courriel"/>
</td>
</tr>
<tr>
<td>
Login
</td>
<td>
<html:text property="login"/>
</td>
</tr>
<tr>
<td>
Mot de passe
</td>
<td>
<html:text property="motdepasse"/>
</td>
</tr>
</tbody>
</table>
<br>
<html:submit>Valider</html:submit>&nbsp;
<html:cancel>Menu</html:cancel>
</html:form>
</body>
</html>

Sur cette page, lorsque lutilisateur clique sur le bouton Valider, Laction appeler est
identifie dans le fichier struts-config.xml laide du contenu de la balise suivante :

<html:form action="/SaveMonProfil">

Les balises Struts sont trs nombreuses et bien documentes par les ouvrages
consacrs Struts.

84
Partie 2

Affichage en plusieurs langues

La Balise <bean:message key="personne.prenom" /> permet dafficher le texte


contenu dans le fichier des proprits laide de la clef personne.prenom. Cette
balise permet en utilisant plusieurs fichiers de proprits, dafficher les pages dune
application Web dans plusieurs langues. Dans lapplication rendez-vous, il existe
deux fichiers de proprits. Lun contient les libells en franais, lautre les libells en
anglais.

Extrait du fichier des proprits en anglais ApplicationResources_en.properties :


# -- Libelles --
personne.prenom=Firstname

Extrait du fichier des proprits en franais ApplicationResources_fr.properties :


# -- Libelles --
personne.prenom= Pr&eacute;nom

Si les rgles de nommage des fichiers de proprits ont t respectes (ex : ajouter
en devant .properties pour le fichier en Anglais), il suffit alors lutilisateur
dajouter et dordonner les langues prfres dans les paramtres de son navigateur
(ex : menu outil puis langue avec Internet Explorer) pour que lapplication saffiche
dans la langue souhaite.

Validation des formulaires

Struts offre une solution appele Validators qui permet de valider les donnes
saisies par lutilisateur sur une page Web. Pour mettre en uvre cette solution, les
fichiers validators-rules.xml et validation.xml doivent tre prsent dans le rpertoire
WEB-INF de lapplication et contenir les informations de validation existantes dans le
projet modle struts-blank.war fourni avec struts. Le fichier validation.xml doit tre
complt avec les rgles de validation que lon souhaite mettre en place.

Dans le projet rendez-vous, pour rendre obligatoire la saisie du champ prnom sur la
page qui permet au client de mettre jour son profil, les lignes suivantes ont t
ajoutes dans validation.xml :

<form name="personneEditForm">
<field
property="firstname"
depends="required"
page="0">
<arg key="personne.errors.prenom"/>
</field>
</form>

Ces lignes rendent obligatoire la saisie de lattribut firstname du formulaire


personneEditForm dont nous avons dj vu le source (rappel : ActionForm a t
remplac par ValidatorForm dans ce formulaire pour pouvoir utiliser les validators).
Le texte du message affich pour lutilisateur en cas derreur est charg partir du
fichier des proprits laide de la clef personne.errors.prenom . Lutilisation de

85
Partie 2

plusieurs fichiers de proprits permet dafficher le message derreur dans la langue


attendue.

Extrait du fichier des proprits en anglais ApplicationResources_en.properties :


# -- Personne Errors --
personne.errors.prenom=Firstname

Extrait du fichier des proprits en franais ApplicationResources_fr.properties :


# -- Personne Errors --
personne.errors.prenom=Pr&eacute;nom

Pour afficher le message derreur dans la page JSP nous avons ajout le code
suivant dans la page MajMonProfil.JSP :

(..)
<html:errors/>
(..)
<html:errors property="firstname" header="errors.entete"
footer="errors.pied" prefix="" suffix=""/>
(..)

Le code complet de cette page a t donn dans les pages prcdentes.

Le code suivant doit tre ajout dans le fichier Struts-config.xml juste avant la
dernire balise :

<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property
property="pathnames"
value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/>
</plug-in>

86
Partie 2

Enfin, pour que la validation soit active sur le formulaire personneEditForm


uniquement lorsquil le faut, nous avons dj vu quil fallait utiliser le paramtre
validate dans les actions du fichier struts-config.xml. Dans lexemple ci-dessous, la
validation est active uniquement lorsque lutilisateur clique sur le bouton
denregistrement de la page de modification du profil de lutilisateur courant.

Struts-config.xml
(..)
<action
attribute="personneEditForm"
input="/jsp/MajMonProfil.jsp"
name="personneEditForm"
parameter="do"
path="/MajMonProfil"
scope="request"
type="de.laliluna.library.struts.action.MajMonProfilAction"
validate="false">
<forward name="menuClient" path="/jsp/menuClient.jsp" />
<forward name="editPersonne" path="/jsp/MajMonProfil.jsp" />
</action>

<action
attribute="personneEditForm"
input="/jsp/MajMonProfil.jsp"
name="personneEditForm"
parameter="do"
path="/SaveMonProfil"
scope="request"
type="de.laliluna.library.struts.action.MajMonProfilAction"
validate="true">
<forward name="menuClient" path="/jsp/menuClient.jsp" />
<forward name="editPersonne" path="/jsp/MajMonProfil.jsp" />
</action>
(..)

La mthode de validation prsente ci-dessus sexcute sur le serveur. Struts


propose une autre mthode qui sappuie sur JavaScript pour effectuer les contrles
cot client.

La technologie Tiles

Tiles est une technologie de dcoupage de pages JSP qui sappuie sur les includes
des JSP en les amliorant significativement. En particulier, Tiles permet deffectuer
les tches suivantes :

 Crer aisment des modles de pages rutilisables, avec un support de


lhritage entre diffrents modles.
 Nommer les pages au lieu de donner leur chemin complet, dans lesprit des
tags <forwards>.
 Rutiliser des composants de prsentation, y compris des composants
internationaliss.

Afin de montrer le fonctionnement de tiles, nous allons crer un exemple avec une
page contenant 4 parties (entte, menu, cur de page et pied de page) et une autre

87
Partie 2

page identique la premire, mais avec un cur de page spcifique (le titre de la
barre de titre sera galement spcifique).

Pour rendre possible lutilisation des taglib de tiles, nous devons commencer par
ajouter ce qui suit dans le fichier WEB-INF/web.xml :

<taglib>
<taglib-uri>/tags/struts-tiles</taglib-uri>
<taglib-location>/WEB-INF/struts-tiles.tld</taglib-location>
</taglib>

Nous devons galement indiquer la fin du fichier struts-config.xml le nom et


lemplacement du fichier de configuration de tiles :

<plug-in className="org.apache.struts.tiles.TilesPlugin">
<set-property property="definitions-config"
value="/WEB-INF/tiles-defs.xml"/>
<set-property property="moduleAware" value="true" />
</plug-in>

Les deux pages appeles partir du navigateur internet (unepage00.jsp et


unepage01.jsp ) sont cres respectivement laide des morceaux de code suivant :

<%@ taglib uri="http://jakarta.apache.org/struts/tags-tiles" prefix="tiles" %>


<tiles:insert definition="page00" flush="true"/>

<%@ taglib uri="http://jakarta.apache.org/struts/tags-tiles" prefix="tiles" %>


<tiles:insert definition="page01" flush="true"/>

La premire ligne est identique pour les deux pages et est indispensable pour
permettre une interprtation correcte de la balise de la deuxime ligne. La deuxime
ligne indique le nom de la page correspondante dans le fichier tiles-defs.xml.

Pour notre exemple le fichier tiles-defs.xml contiendra :

<?xml version="1.0" encoding="ISO-8859-1" ?>


<!DOCTYPE tiles-definitions PUBLIC
"-//Apache Software Foundation//DTD Tiles Configuration 1.1//EN"
"http://jakarta.apache.org/struts/dtds/tiles-config_1_1.dtd">
<!--Utilisation de Tiles pour l'application rendez-vous-->
<tiles-definitions>
<definition name="page00" template="/jsp/myLayout.jsp">
<put name="title" value="Application Rendez-vous" />
<put name="header" value="/jsp/header.jsp" />
<put name="menu" value="/jsp/menu.jsp" />
<put name="footer" value="/jsp/footer.jsp" />
<put name="body" value="/jsp/body.jsp" />
</definition>
<definition name="page01" extends="page00">
<put name="title" value="titre page 1" />
<put name="body" value="/jsp/body01.jsp" />
</definition>
</tiles-definitions>

88
Partie 2

La page nomme page00 contient 4 parties et le titre afficher dans la barre de titre.
La page nomme page01 est identique page00 lexception du cur de la page
(body) et du titre (title).Page00 et par extension page01 dpendent du modle
(template en anglais) /jsp/myLayout.jsp dont le code suit :

<%@ taglib uri="http://jakarta.apache.org/struts/tags-tiles" prefix="tiles" %>


<html>
<head>
<title><tiles:getAsString name="title"/></title>
</head>
<body>
<table width="100%" border="0" cellspacing="5">
<tr bgcolor="#00CCFF">
<td colspan="2">
<tiles:insert attribute="header"/>
</td>
</tr>
<tr>
<td width="140" valign="top" bgcolor="#FFCC99">
<tiles:insert attribute="menu"/>
</td>
<td valign="top" align="left">
<tiles:insert attribute="body"/>
</td>
</tr>
<tr bgcolor="#CCCCCC">
<td colspan="2">
<tiles:insert attribute="footer"/>
</td>
</tr>
</table>
</body>
</html>

Ce modle indique comment crer la page HTML qui doit tre montre lutilisateur.
Cette page rassemble et met en forme les diffrentes parties de la page (titre, entte,
menu, etc.).

89
Partie 2

Aprs avoir cr le contenu des pages header.jsp, menu.jsp, body.jsp, body01.jsp et


footer.jsp, nous pouvons afficher unepage00.jsp dans le navigateur :

Figure 24 : Page cre avec la technologie tiles

Affichons maintenant unepage01.jsp :

90
Partie 2

Le rsultat est identique, lexception de la barre de titre et du cur de la page.

Comme prcis dans CEKVENICH (2005), pour une application Struts, il est inutile
de crer les pages unepage00.jsp et unepage01.jsp car il est possible dappeler
directement le pages page00 et page01 (noms utiliss dans tiles-defs.xml) partir du
fichier struts-config.xml.

<forward name=success path=page01>

Une alternative tiles est SiteMesh. SiteMesh permet d'enrichir la rponse d'une
requte HTTP l'aide de dcorateurs. Cet outil permet par exemple de rajouter
facilement des en-ttes et des pieds de page sur des pages web.

Lavenir de struts

Pour rester comptitif face aux nouveaux frameworks MVC (Spring MVC, Tapestry
Webwork, etc.), les concepteurs de Struts ont lanc le projet Shale. Shale est un
nouveau framework qui intgre des fonctionnalits prouves de Struts tout en
corrigeant la majorit des problmes soulevs lencontre de Struts (difficults pour
effectuer les tests, gestion insuffisante de la scurit et des loggings, mauvaise
gestion des types autre que string, etc.). Transformer une application Struts en
application Shale ncessite des adaptations. La version standard de Struts qui
continue voluer en assurant une compatibilit ascendante reste cependant de loin
la solution MVC la plus utilise pour java.

Pour tendre les possibilits de la partie prsentation de Struts, il est frquent


dutiliser la bibliothque de tags HTML de JSF (Java Server Faces). Pour DUBOIS
(2006) laccs la couche mtier dune application peut tre rendue plus
performante en intgrant Struts Spring.

3.4.12. Persistance des objets dans une base de donnes


relationnelle

DUBOIS (2006) et PATRICIO (2005) rappellent que la principale technologie de


persistance utilise est celle des bases de donnes relationnelles. Les rares
solutions concurrentes, comme les bases de donnes orientes objet, sont peu
utilises. Le programmeur java est donc contraint de faire cohabiter deux mondes
conceptuellement diffrents, le monde objet et le monde relationnel. Les applications
Java sappuyant sur des bases de donnes relationnelles sont trs souvent lourdes
coder, difficiles faire voluer et peu performantes. Des solutions de mapping objet /
relationnel (MOR) existent aujourdhui pour palier ces problmes. Ces dernires
proposent une couche dabstraction suprieure JDBC (Java DataBase
Connectivity), sur laquelle elles reposent. JDBC est une API fournie avec Java
permettant de dvelopper des applications capables de se connecter des bases de
donnes relationnelles. Le terme mapping objet / relationnel dcrit la technique
consistant faire le lien entre la reprsentation objet des donnes et une
reprsentation relationnelle base sur un schma SQL.

91
Partie 2

Hibernate tant en ce moment la solution de mapping la plus utilise dans le monde


Java, vous trouverez ci-dessous une prsentation de ses concepts fondamentaux.
Hibernate est une solution Open Source qui bnficie dune documentation
abondante.

Non seulement, Hibernate s'occupe du transfert des objets Java dans les tables de la
base de donnes (et des types de donnes Java dans les types de donnes SQL),
mais il permet de requter les donnes et propose des moyens de les rcuprer. Il
peut donc rduire de manire significative le temps de dveloppement qui aurait t
autrement perdu dans une manipulation manuelle des donnes via SQL et JDBC.

On peut voir Hibernate comme une fine surcouche de JDBC qui lui ajouterait une
dimension objet. Hibernate est surtout utile pour les applications dont la logique
mtier est implmente dans la couche Java et non dans des procdures stockes.

Les applications qui utilisent Hibernate peuvent facilement migrer vers une autre
base de donnes. Thoriquement il suffit de modifier le fichier de configuration
dhibernate pour remplacer une base de donnes Oracle par MySQL par exemple.

Hibernate utilise des objets persistants (JavaBeans simples) communment appels


POJO (Plain Old Java Object) avec des fichiers de mapping XML pour assurer la
persistance dobjets dans une base de donnes.

Avec Hibernate, Il est possible dutiliser des fonctionnalits objet complexes


(hritage, polymorphisme). Hibernate tant un framework trs riche, il est impossible
de prsenter dans ce mmoire toutes les possibilits quil offre. Nous nous
concentrerons donc uniquement sur les concepts les plus simples et les plus
couramment utiliss.

Larchitecture dHibernate peut tre reprsente de cette manire :

Application

Objet persistant

HIBERNATE
Fichier de configuration Fichier de mapping

Base de donnes relationnelle

Figure 25 : Architecture dhibernate

92
Partie 2

Les tapes suivantes prsentent hibernate laide du code cr pour le projet


rendez-vous.

Ajout dHibernate dans le projet :

Aprs avoir tlcharg et install hibernate 3 dans le projet rendez-vous declipse, la


bibliothque hibernate3.jar et quelques autres fichiers jar doivent apparatre dans
larborescence du projet.

Base de donnes :

La base de donne de lapplication rendez-vous sera cre dans MySQL laide des
fichiers de mapping dhibernate. Elle devra contenir une table personnes et une
table creneaux. Les rendez-vous pris par une personne seront enregistrs dans une
table intermdiaire.

Rendez-vous Creneaux
Personnes --------------- -------------
------------- creneaux_id * creneaux_id *
person_id * person_id * DateHeureDebut
nom ServicePropos
prnom RdvAutoris
tlphone
courriel
login
motdepasse
administrateur

Classes persistantes

Pour crer une classe persistante (exemple : la classe personne) dans le projet
rendez-vous, il faut crer un JavaBean personne. Celui-ci contient le type java de
tout les attributs de la classe et les mthodes get et set classiques.

personne.java :
package de.laliluna.library;
import ...
public class Personne
{
private java.lang.Integer id;
private java.lang.String firstname;
private java.lang.String lastname;
private java.lang.String courriel;
private java.lang.String login;
private java.lang.String motdepasse;
private java.lang.String telephone;
private java.lang.Boolean administrateur;
...
public java.lang.Integer getId()
{
return id;
}
public void setId(java.lang.Integer id)

93
Partie 2

{
this.hashValue = 0;
this.id = id;
}
...
public java.lang.Boolean getAdministrateur() {
return this.administrateur;
}
public void setAdministrateur(java.lang.Boolean administrateur) {
this.administrateur = administrateur;
}
...
}

creneaux.java :
package de.laliluna.library;
import
public class creneaux
{

private java.lang.Integer id;


private java.util.Date debut;

public java.lang.Integer getId()


{
return id;
}
public void setId(java.lang.Integer id)
{
this.hashValue = 0;
this.id = id;
}
public java.util.Date getDebut()
{
return this.dateheuredebut;
}
public void setDebut(java.util.Date debut)
{
this.debut = debut;
}

Fichiers de mapping :

Il faut ensuite crer pour chaque classe java persistante un fichier de mapping
(fichier XML). Celui-ci ralise une correspondance entre une table de la base de
donnes et une classe java (entre les champs de la table personnes et le JavaBean
personne par exemple). Le fichier de mapping permet galement de dcrire les
associations (exemple : association many to many entre personnes et creneaux).
Plusieurs types dassociations existent dans Hibernate. Les fichiers de mapping sont
lus lorsque lapplication dmarre.

94
Partie 2

Dans lapplication de prise de rendez-vous, les fichiers de mapping contiennent les


informations suivantes :

personne.hbm.xml :
<?xml version="1.0" encoding='UTF-8'?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
<hibernate-mapping package="de.laliluna.library">
<class name="Personne" table="personne">
<id name="id" column="person_id" type="java.lang.Integer">
<generator class="increment"/>
</id>
<property name="firstname" column="firstname" type="java.lang.String" />
<property name="lastname" column="lastname" type="java.lang.String" />
<property name="telephone" column="telephone" type="java.lang.String" />
<property name="courriel" column="courriel" type="java.lang.String" />
<property name="login" column="login" type="java.lang.String" />
<property name="motdepasse" column="motdepasse" type="java.lang.String" />
<property name="administrateur" column="administrateur" type="java.lang.Boolean" />
<set name="creneaux" table="rendez_vous" >
<key column="person_id"/>
<many-to-many column="creneau_id" class="Creneau"/>
</set>
</class>
</hibernate-mapping>

creneaux.hbm.xml
<?xml version="1.0" encoding='UTF-8'?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
<hibernate-mapping package="de.laliluna.library">
<class name="Creneau" table="creneau">
<id name="id" column="creneau_id" type="java.lang.Integer">
<generator class="increment"/>
</id>
<property name="dateheuredebut" column="dateheuredebut" type="timestamp" />
<property name="servicepropose" column="servicepropose" type="java.lang.String" />
<property name="rdvautorise" column="rdvautorise" type="java.lang.Boolean" />
<set name="participants" table="rendez_vous" inverse="true" >
<key column="creneau_id"/>
<many-to-many column="person_id" class="Personne"/>
</set>
</class>
</hibernate-mapping>

Lorsque les informations mapper sont nombreuses, le programmeur peut


sappuyer sur des outils pour acclrer la cration de ces documents XML (ex :
Hibernate Tools est un outil graphique, XDoclet un gnrateur de code). Pour
lapplication rendez-vous, les fichiers ont t crs avec un simple diteur de texte.

95
Partie 2

Configuration dHibernate :

Pour se connecter la base de donne bd_rdv4 de MySQL qui contient les tables de
lapplication rendez-vous, Hibernate a besoin dinformations de connexion. Ces
connexions sont tablies travers un pool de connexions JDBC, que nous devons
aussi configurer. Cette configuration est ralise laide du fichier hibernate.cfg.xml
qui pour lapplication rendez-vous contient les informations suivantes :

<?xml version='1.0' encoding='utf-8'?>


<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="connection.url">jdbc:mysql://localhost/bd_rdv4</property>
<property name="connection.username">root</property>
<property name="connection.password"></property>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="connection.pool_size">1</property>
<property name="current_session_context_class">thread</property>
<property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
<property name="show_sql">true</property>
<!-- <property name="hbm2ddl.auto">create</property> -->
<mapping resource="de/laliluna/library/Creneau.hbm.xml" />
<mapping resource="de/laliluna/library/Personne.hbm.xml" />
</session-factory>
</hibernate-configuration>

La configuration ci-dessus permet hibernate de se connecter avec le profil root


sans mot de passe.

L'option hbm2ddl.auto active la gnration automatique des schmas de base de


donnes (cration automatique de la base partir des fichiers de mapping). Dans le
fichier xml ci-dessus, cette option est mise en commentaire pour tre utilise
uniquement si ncessaire et viter la destruction accidentelle des jeux de test.

Session Hibernate :

Pour accder aux donnes de la base laide dhibernate, lapplication rendez-vous


doit premirement rcuprer une session Hibernate. Cette dernire est linterface
principale entre lapplication java et Hibernate et correspond une unit de travail.

La classe HibernateSessionFactory.java dont le code est list plus loin permet


lapplication rendez-vous de crer une session hibernate (ou de la clturer) en lisant
le fichier de configuration hibernate hibernate.cfg.xml. Aprs la cration dune
transaction, lapplication peut utiliser les objets persistant java et utiliser la session
pour rendre des objets persistants.

package de.laliluna.library;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.cfg.Configuration;
public class HibernateSessionFactory {
private static String CONFIG_FILE_LOCATION = "/hibernate.cfg.xml";

96
Partie 2

private static final ThreadLocal<Session> threadLocal = new ThreadLocal<Session>();


private static final Configuration cfg = new Configuration();
private static org.hibernate.SessionFactory sessionFactory;
public static Session currentSession() throws HibernateException {
Session session = (Session) threadLocal.get();
if (session != null && ! session.isOpen()) session = null;
if (session == null) {
if (sessionFactory == null) {
try {
cfg.configure(CONFIG_FILE_LOCATION);
sessionFactory = cfg.buildSessionFactory();
}
catch (Exception e) {
System.err.println("%%%% Error Creating SessionFactory %%%%");
e.printStackTrace();
}
}
session = sessionFactory.openSession();
threadLocal.set(session);
}
return session;
}
public static void closeSession() throws HibernateException {
Session session = (Session) threadLocal.get();
threadLocal.set(null);
if (session != null) {
session.close();
}
}
private HibernateSessionFactory() {
}
}

Charger et stocker des objets :

Hibernate propose plusieurs techniques de rcupration dobjets :


HQL (Hibernate Query Language), un puissant langage de requte orient
objet ;
LAPI Criteria (non tudie dans ce mmoire) ;
Le mapping de rsultats de requtes en SQL natif aussi appel SQLQuery
(dans cette technique, les objets sont chargs depuis le rsultat dune requte
crite en SQL. Ceci est surtout utilis pour introduire hibernate au sein dune
application dj existante afin dviter la rcriture des requtes SQL. Cette
technique est moins intressante en ce qui concerne la portabilit de
lapplication vers une autre base de donnes).

Le HQL est le moyen le plus utilis. Il consiste en une encapsulation du SQL selon
une logique oriente objet et permet de crer des requtes complexes. Les requtes
HQL sutilisent directement dans le code Java, elles sappuient sur les noms des
objets Java, mais leur syntaxe reste malgr tout trs proche du SQL.

97
Partie 2

Dans lapplication rendez-vous la classe LibraryManager.java liste en partie ci-


dessous contient toutes les mthodes daccs aux donnes.

package de.laliluna.library.bl;
import ...
import de.laliluna.library.Creneau;
import de.laliluna.library.Personne;
import de.laliluna.library.HibernateSessionFactory;
public class LibraryManager {
...
public void savePersonne(Personne personne) {
Session session = null;
Transaction tx = null;
session = HibernateSessionFactory.currentSession();
tx = session.beginTransaction();
if (personne.getId() == null || personne.getId().intValue() == 0)
session.save(personne);
else {
Personne toBeUpdated = (Personne) session.get(Personne.class,
personne.getId());
toBeUpdated.setTelephone(personne.getTelephone());
toBeUpdated.setLastname(personne.getLastname());
toBeUpdated.setFirstname(personne.getFirstname());
toBeUpdated.setCourriel(personne.getCourriel());
toBeUpdated.setLogin(personne.getLogin());
toBeUpdated.setMotdepasse(personne.getMotdepasse());
toBeUpdated.setAdministrateur(personne.getAdministrateur());
session.update(toBeUpdated);
}
tx.commit();
}
...
public Personne[] getAllPersonnes() {
List personnes = new ArrayList();
Session session = null;
Transaction tx = null;
session = HibernateSessionFactory.currentSession();
tx = session.beginTransaction();
List tmpPersonne = session.createQuery(
"select c from Personne as c order by c.lastname").list();
for (Iterator iter = tmpPersonne.iterator(); iter.hasNext();) {
personnes.add((Personne) iter.next());
}
tx.commit();
return (Personne[]) personnes.toArray(new Personne[0]);
}

La mthode savePersonne permet dajouter une personne dans la table de mme


nom.

La mthode getAllPersonnes utilise une requte HQL (Hibernate Query Language)


pour lister toutes les personnes prsentes dans la table personne.

98
Partie 2

3.4.13. Tracer une application Java

Pour MOLIERE (2005), Log4J (Log for Java) est une API de journalisation open
source couramment utilise dans le monde Java (tlchargeable sur
http://logging.apache.org/ log4j/docs/download.html).

Log4j sappuie sur un fichier de configuration (gnralement appel log4j.properties)


pouvant contenir les lignes suivantes :

log4j.rootLogger=DEBUG, A
log4j.appender.A=org.apache.log4j.ConsoleAppender
log4j.appender.A.layout=org.apache.log4j.PatternLayout
log4j.appender.A.layout.ConversionPattern=%d %-5p - %m%n

Les messages sont classs par niveau de gravit (DEBUG, INFO, WARN, ERROR,
et FATAL). La premire ligne du fichier de configuration prsent ci-dessus indique
que les messages de niveau DEBUG et suprieurs seront ajouts la log. Cette
option est souvent utilise pendant la phase de dveloppement. Lors de la mise en
production de lapplication, la premire ligne pourra tre modifie pour indiquer que
lon ne souhaite afficher dans la log que les messages de niveau WARN et
suprieurs.

Sur la deuxime ligne ConsoleAppender indique que les messages seront


affichs sur la console. Nous aurions pu diriger les messages vers un fichier.

La troisime et la quatrime ligne permettent de dfinir le format daffichage des


messages (date et heure, niveau sur 5 caractres, un tiret, le message, un retour
chariot).

Les lignes suivantes peuvent tre ajoutes dans lapplication pour vrifier le
fonctionnement de log4j :

import org.apache.log4j.*;

Logger log = Logger.getLogger() ;

log.debug("Premier message");

log.info("Deuxieme message");

Lors de lexcution de cette portion de code, le rsultat sur la console est le suivant :

2006-10-25 10:00:01,511 DEBUG - Premier message


2006-10-25 10:01:001,111 INFO - Deuxieme message

Si nous remplaons DEBUG par INFO dans le fichier de configuration, seule la


deuxime ligne apparat sur la console.

99
Partie 2

3.5. Prsentation de lapplication rendez-vous ralise

Prsentation de lapplication cre

Vous trouvez ci-dessous une reprsentation graphique des rgles de navigation puis
les images cran des principales fonctions de l'application de prise de rendez-vous
dveloppe avec struts et hibernate.

Lapplication rendez-vous permet la navigation suivante :

Figure 26 : Rgles de navigation


Les images ont t nommes de la faon suivante :

P01 : Page d'accueil P09 : Modifier crneau


P02 : Page de Login P10 : Gestion personnes
P03 : Menu administrateur P11 : Ajouter / Modifier personne
P04 : Identification incorrecte P12 : Prendre un rendez-vous (1/2)
P05 : Menu client P13 : Prendre un rendez-vous (2/2)
P06 : Gestion des crneaux P14 : Mes rendez-vous
P07 : Nouveau crneau P15 : Modifier mon profil
P08 : Associer un client

100
Partie 2

P01 : Page d'accueil

P02 : Page de Login

P03 : Menu administrateur

P04 : Identification incorrecte

101
Partie 2

P05 : Menu client

P06 : Gestion des crneaux

P07 : Nouveau crneau

102
Partie 2

P08 : Associer un client

P09 : Modifier crneau

P10 : Gestion personnes

103
Partie 2

P11 : Ajouter / Modifier personne

P12 : Prendre un rendez-vous (1/2)

P13 : Prendre un rendez-vous (2/2)

104
Partie 2

P14 : Mes rendez-vous

P15 : Modifier mon profil

3.6. Conclusion

Etudier et mettre en uvre les technologies J2EE en tant livr moi mme aura
t un vritable chalenge. Il est en effet ncessaire de matriser de nombreux outils
et dviter de se disperser tant il en existe. Je pense avoir atteint les objectifs que je
mtais fixs car jai russi crer une application J2EE et beaucoup de notions qui
me paraissaient obscures, avant de dbuter ce travail, me sont aujourdhui
familires. Cela ne se sera cependant pas fait sans difficults, car mme sil existe
de trs bons ouvrages sur le domaine, il mest arriv frquemment de rester bloqu
sur des problmes quun dveloppeur confirm contourne rapidement pour y avoir
dj t confront. Avec laide des auteurs, dinternautes ou de recherches
approfondies je suis toujours parvenu rsoudre les problmes rencontrs. Je dois
avouer tre cependant impatient de travailler nouveau en quipe pour le plaisir et
lefficacit que cela apporte.

105
4. CONCLUSION
La panoplie du parfait dveloppeur dapplication J2EE est aujourdhui mature. Les
outils Open Source tudis donnent de bons rsultats. Il est cependant important de
garder lesprit que la gratuit des licences nentrane pas ncessairement une
rduction du cot des applications dveloppes et quil reste indispensable de bien
former et encadrer lquipe de dveloppement en appliquant des mthodes
adaptes. J2EE connat aujourdhui un franc succs pour le dveloppement
dapplications web notamment dans les grandes entreprises. Il reste cependant
encore une place pour des solutions qui permettrons de simplifier et dindustrialiser le
processus de dveloppement, pour permettre de dvelopper ou faire voluer
toujours plus vite des applications dont le cycle de vie se raccourcit, alors que leur
complexit augmente. La solution se trouve peut-tre en partie dans lutilisation de
nouveaux frameworks (JSF, Spring, ) ou langages (RoR) Open Source. Ou
pourquoi pas, dans lutilisation de solutions intgres comme Visual Studio Team
System de Microsoft qui couvre tout le cycle de vie des logiciels et s'adresse
l'quipe de dveloppement toute entire (chefs de projets, architecte, dveloppeurs
et testeurs). Loffshore va t-il se dvelopper ? On le voit, lhistoire de linformatique
nest pas prte de sarrter et il est important de rester inform sur ce que propose le
march pour rester concurrentiel.

Ce mmoire maura permis dacqurir une vision plus claire sur le dveloppement
dapplications web avec J2EE et de mieux apprhender les problmes que peut
rencontrer un dveloppeur. Bien des domaines restent tudier. Ce nest donc pas
la fin.

106
5. GLOSSAIRE

Acube Acube ou A 3 est le nom de la filire de dveloppement J2EE au


MAE
Application Application laquelle on accde avec un simple navigateur
web
CCTP Cahier des Clauses Techniques Particulires
CMMI CMMI (Capability Maturity Model Intgration) est un modle
d'valuation des processus de conception d'un logiciel.
CRASIC Centres Rgionaux dAssistance des Systmes dinformation et de
Communication (Ministre des affaires trangres)
CXI Service des Systmes dinformation et de Communication du
ministre des affaires trangres
DC Dpartement des applications diplomatiques et consulaires rattach
PSI (Ministre des affaires trangres)
Design Un design pattern est la description dune solution classique un
Pattern problme rcurrent, que lon peut rencontrer gnralement un
niveau conceptuel, architectural ou technique. En adaptant un design
pattern au contexte dun projet il est possible de bnficier de
lexprience dexperts et donc damliorer la qualit ou la
maintenabilit dune application.
Framework Bibliothque de classes fournissant une ossature gnrale pour le
dveloppement d'une application (ex : Struts est un exemple de
framework en Open Source, bas sur l'architecture MVC).
Hibernate Hibernate est un framework open source grant la persistance des
objets en base de donnes relationnelle.
J2EE J2EE (Java 2 Entreprise Edition) est une norme qui dfinit une
infrastructure pour lexcution des applications java et les API des
services utiliss pour concevoir ces applications.
MAE Ministre des affaires trangres
MVC (Model Ce pattern architectural est recommand pour la conception des
View applications web dynamiques. Il propose dorganiser lapplication en
Controller) 3 couches spares. Le but est de sparer, lors de la conception,
laccs la base de donnes (M), la partie visible par lutilisateur (V)
et la distribution des requtes aux composants appropris en
fonction de la logique de lapplication (C).
Open Source FONTAINE (2003) donne une dfinition prcise des logiciels Open
Source en sappuyant sur celle donne par les membres de la FSF
(Free Software Foundation). Nous retiendrons que les logiciels Open
Source doivent tre distribus gratuitement et que le code source
complet doit tre disponible. Enfin il est possible de modifier un
logiciel Open Source, de distribuer la version modifie et de
lexcuter pour n'importe quel usage.
Poste Agence consulaire ou Ambassade ou Antenne consulaire ou
Consulat gnral (poste consulaire) au Ministre des affaires
trangres
PSI Division Projets du Systme dinformation du Ministre des affaires

107
trangres
Racine Ensemble des applications du MAE permettant de grer les services
offerts aux franais ltranger.
RMV2 Application du MAE permettant de grer les demandes de visa
manant des trangers souhaitant venir en France.
RUP RUP (Rational Unified Process) est lune des plus clbres
implmentations de la mthode UP.
Struts Struts est un Framework Open Source utilis pour dvelopper des
applications WEB J2EE. Il sagit dun squelette dapplication
sappuyant sur le MVC et fournissant des outils supplmentaires pour
aider le dveloppeur raliser ses applications.
UP Le Processus Unifi (UP) est un processus de dveloppement
logiciel itratif et incrmental, centr sur larchitecture, conduit par
les cas dutilisation et pilot par les risques .
URL Une URL (Uniform Resource Locator) est ladresse dune ressource
sur Internet. Pour une page par exemple, son url est compose du
protocole http:// suivi du nom de domaine du serveur, puis du chemin
daccs la page.
Visanet Projet Acube permettant d'externaliser la saisie de certaines
demandes de visa.
XP L'Extreme Programming (XP) est une mthode agile de gestion de
projet informatique adapte aux quipes rduites avec des besoins
changeants. Elle pousse l'extrme des principes simples.

108
6. BIBLIOGRAPHIE
BENARD J.L., BOSSAVIT L., 2002. Gestion de projet eXtreme Programming,
Eyrolles, Paris, 316 p.
BENARD J.L., MERAND F., 2005. Approches pragmatiques pour industrialiser le
dveloppement dapplications, BrainSonic, Paris, 88 p.
BORDAGE F., DAVY P., PARPINELLI S., 2005, MySQL aux trousses des gants du
SGBD, 01 informatique du 21/10/2005, 6-8.
CEKVENICH V., GEHNER W., 2005. Struts, Dunod, Paris, 219 p.
CLAVEL G., 2003. Java la synthse, Dunod, Lige, 403 p.
CLOUX P.Y., DOUSSOT D., 2002. Technologies et architectures Internet, Dunod,
Paris, 254 p.
CLOUX P.Y., 2003. RUP XP, Dunod, Paris, 277 p.
DJAAFAR K., 2005. Eclipse et Jboss : Dveloppement dapplications J2EE
professionnelles, de la conception au dploiement, Eyrolles, Paris, 627 p.
DUBOIS J., 2006. Spring par la pratique, Eyrolles, Paris, 517 p.
FELICITE J.C., 2006. Dveloppement java sous struts, Eni ditions, Nantes, 415 p.
FONTAINE A., 2003. Dveloppement open source avec Windows, Dunod, Paris, 320
p.
GOODWILL J., 2003. Jakarta Struts par la pratique, Eyrolles, Paris, 330 p.
HOLZNER S., 2004. Eclipse, OReilly, Paris, 324 p.
HUBBARD J., 2005. Programmation java, EdiScience, Baume les dames, 388 p.
LANCKER L.V., 2003. HTML Entranez-vous matriser le code source, Eni ditions,
Nantes, 295 p.
MANGOLD P., 2005. Gestion de projet informatique, Eyrolles, Marsat, 120 p
MOLIERE J., 2005. J2EE, Eyrolles, Paris, 220 p
PATRICIO A., 2005. Hibernate 3.0, Eyrolles, Paris, 317 p.
RAIBLE M., 2005. Spring live, SourceBeat, 13-57,
http://www.sourcebeat.com/TitleAction.do?id=7
RETAILLE J.P., 2005. Refactoring des applications Java/J2EE, Eyrolles, Paris, 390
p.
ROQUES P., 2002. UML - Modliser un site e-commerce, Eyrolles. Paris, 152 P.
ROQUES P., VALLEE F., 2004. UML 2 en action de lanalyse des besoins la
conception J2EE, Eyrolles, Paris, 385 p.
SARRION E., 2005a. CSS et JavaScript, OReilly, Paris, 305 p.
SARRION E., 2005b. J2EE, OReilly, Paris, 235 p.
TURNER J., BEDELL K., 2003. Struts, CampusPress, Paris, 407 p.
ZELLER A., KRINKE J., 2005. Essential open source toolset, Wiley, Heidelberg, 392
p.

109
7. ANNEXES
Les outils prsents ci-dessous ont t tests sous Windows XP durant mon
mmoire et peuvent tre utiles pour dvelopper une application J2EE.

7.1. Filezilla

FileZilla est un logiciel open source permettant de se connecter distance (en FTP)
sur un serveur pour y tlcharger des fichiers.

http://filezilla.sourceforge.net/

7.2. GIMP

Le logiciel GIMP est un puissant outil de manipulation d'images. C'est un logiciel libre
et gratuit, dvelopp par la communaut du logiciel libre. Ses spcialits vont de la
retouche de photographies numriques la cration d'images.

http://gimp-win.sourceforge.net/stable.html

7.3. Irfanview

Irfanview = outil de retouche d'image gratuit (pour retouches ultra rapide *)

Ce logiciel de retouche dimages gratuit ne permet pas de tout faire (dessiner, faire
des dgrads, ...) mais il est trs pratique pour changer la dimension d'une image,
recadrer une image, changer le type de fichier " image ", corriger les couleurs d'une
image.

http://info.sio2.be/divers/irfanview/index.php

7.4. JarsBrowser 3.0

Cet outil gratuit permet de trouver dans un ensemble de fichiers jar ou war celui qui
contient une classe donne.

http://cmarton.free.fr/jarsbrowser/

7.5. FreeDiff

FreeDiff est un logiciel gratuit qui permet de visualiser les diffrences entre deux
fichiers.

110
http://www.freediff.com/

7.6. JDecompiler

Cet utilitaire permet de dcompiler une classe java (cration du fichier d'extension
java partir de celui d'extension class). Il est utilisable pendant 15 jours
gratuitement. Il existe des quivalents comme JCavaj (gratuit) ou DJ Java
Decompiler (10 essais gratuits).

http://www.shareup.com/JDecompiler-download-43149.html

111
OLLIVIER Philippe

Participation la conception dune application J2EE dentreprise.


Dveloppement dune application web de prise de rendez-vous avec les
frameworks Struts et Hibernate
Mmoire dingnieur C.N.A.M., Nantes 2006

RSUM
Aujourdhui, les concepteurs dapplications estampilles nouvelles
technologies base de serveur dapplication, sont confronts ce que le
Gartner Group nomme lexplosion de la complexit . Les dveloppeurs
doivent avoir recours un panel doutils et de technologies toujours plus larges.

Mon objectif lors du choix du sujet de mon mmoire tait de participer au


dveloppement dune application J2EE en mintressant aux aspects
fonctionnels et organisationnels mais galement techniques. Ce mmoire
CNAM a t ralis en deux phases. La premire phase (4 mois) sest droule
au MAE Nantes. Elle ma permis de raliser une tude et de participer
lcriture du cahier des charges ainsi qu llaboration dune maquette pour
une application de gestion des rendez-vous. La seconde phase (5 mois )
ralise lcole polytechnique de luniversit de Nantes ma permis de me
former aux technologies J2EE et de dvelopper une application simplifie de
gestion des rendez-vous.

De plus en plus dapplications informatiques sont dveloppes avec des


technologies N-tiers. Devant le nombre important doutils disponibles sur le
march (libres ou non) pouvant tre utiliss pour dvelopper des applications
de ce type, les entreprises doivent aujourdhui adopter une stratgie claire. Le
Ministre des affaires trangres a cr une filire de dveloppement Acube en
2004 avec pour objectif de dfinir les outils, les mthodes et les normes
appliquer, lors des dveloppements faisant appel la technologie J2EE. La
premire partie de ce mmoire prsente ces notions et explique comment le
projet rendez-vous du MAE a t conduit.

La deuxime partie de ce mmoire prsente la dmarche que jai adopte pour


dvelopper seul une application J2EE sappuyant sur les frameworks struts et
hibernate : dfinition de larchitecture, formation sur les outils retenus, cahier
des charges de lapplication rendez-vous et prsentation de lapplication
dveloppe.

Mots-clefs : J2EE, MVC, UP, UML, XML, Normes, Mthodes, Outils, Java,
HTML, Struts, Hibernate, application Web, Open Source