Java EE Guide de développement d'applications web en...
Transcript of Java EE Guide de développement d'applications web en...
-
Ce livre sur le dveloppement dapplications web en Java sadresse tout dveloppeur qui souhaite disposer de tous les dtails des diffrentes tapes de ralisation dune application web : lanalyse, la modlisation, le codage, la mise en production, les tests et la maintenance. Le livre suit une dmarche progressive et sappuie sur une tude de cas dun dveloppement dune boutique de vente en ligne. Il est dcoup en sept chapitres progressifs qui peuvent galement tre tudis de manire autonome. Le premier chapitre prsente le langage Java, explique les rgles de nommage et les bonnes pratiques adopter lors des dveloppements de projets Java EE. Le chapitre 2 est consacr la mise en place du serveur Java EE de rfrence, Tomcat, sous Windows et Linux. Les chapitres 3 et 4 explorent en dtail les servlets et les JavaServer Page (JSP), en application avec ltude de cas et le modle MVC. Le chapitre 5 prsente les bases de donnes en Java EE et dtaille la mise en place de JDBC et des technologies associes. Le chapitre 6 concerne le dveloppement Java EE laide dun framework. En accord avec les standards actuels en entreprise, Struts a t utilis pour ce livre. Cependant les explications sont valables pour dautres frameworks Java (description des outils proposs par un framework Java tant en terme de validation de donnes que dapproche MVC II). Enfin, le dernier chapitre est consacr aux techniques avances Java EE et permet de dployer un vritable projet sur un serveur en production partir dun nom de domaine. Le code li ltude de cas traite dans le livre est en tlchargement sur cette page. Lauteur propose ses lecteurs un lieu dchanges via le site www.gdawj.com qui apporte galement un certain nombre dlments complmentaires (FAQ, outils, application dploye...).
Ce livre numrique a t conu et est diffus dans le respect des droits dauteur. Toutes les marques cites ont t dposes par leur diteur respectif. La loi du 11 Mars 1957 nautorisant aux termes des alinas 2 et 3 de larticle 41, dune part, que les copies ou reproductions strictement rserves lusage priv du copiste et non destines une utilisation collective, et, dautre part, que les analyses et les courtes citations dans un but dexemple et dillustration, toute reprsentation ou reproduction intgrale, ou partielle, faite sans le consentement de lauteur ou de ses ayants droit ou ayant cause, est illicite (alina 1er de larticle 40). Cette reprsentation ou reproduction, par quelque procd que ce soit, constituerait donc une contrefaon sanctionne par les articles 425 et suivants du Code Pnal. Copyright Editions ENI
JavaEEGuide de dveloppement d'applications web en Java
JrmeLAFOSSE
Rsum
L'auteur
Ingnieur en informatique et diplm du CNAM, Jrme Lafosse intervient comme consultant, concepteur et formateur sur les technologies Java. Spcialiste des technologies web, il travaille promouvoir les outils et solutions Open Source pour le dveloppement de projets Internet. Il enseigne galement la plate-forme Java Entreprise Edition et la conception de projets Web en Licence et Master. Son exprience pdagogique s'allie ses comptences techniques et offrent au lecteur un guide rellement oprationnel sur le dveloppement d'applications web en Java.
- 1 - ENI Editions - All rigths reserved
http://www.gdawj.com/
-
Avantpropos
LaralisationdesitesWebpassepardiffrentestapes :lanalyse,lamodlisation,lecodage,lamiseenproduction,lestestsetlamaintenance.Toutescesphasesdeconceptionsontlongues,complexesetdoiventtrematrisesendtail pourmener bien les projets Internet. Pour ce type de projet, diffrents langages de programmation sontutilisscommePHP,Ruby,Perl, .NETou Java. Javaest reconnuactuellementcomme lundesmeilleurs langagesdeprogrammationobjetpourlaralisationdeprojetsInternetcomplexesavecsonAPIspcifique,JavaEE.
Ce guide dtaill suit une dmarche progressive et vous aidera crer des applications Web complexes etfonctionnelles.Tous lesconceptsde lacrationdunprojetprofessionnelsontabordsdansce livre,de lapriseenmaindulangage,linstallationdelenvironnement,laconfigurationdunserveurWebJavajusqulacrationetlamiseenproductiondunprojet.CetouvragepermetdepercevoirledveloppementdapplicationsWebenJavadanssaglobalit.
Monobjectifestde fournirunguidecompletdedveloppementdapplicationsWebenJavasur lesdeuxprincipauxenvironnements de dveloppement que sont Windows et Linux, sans faire limpasse sur une partie du cycle dedveloppement.Ilsagitdexplicationsetdeconseilsconcrets,illustrsparunetudedecasralistedeboutiquedeventeenligne.
Les lecteurs sont dailleurs invits changer via le site www.gdawj.com, vritable complment du livre puisquilpropose un exemple de lapplication dploye, un forum de questions, des outils complmentaires pour ledveloppementdapplicationsweb,etc.
- 1 - ENI Editions - All rigths reserved
-
Organisationduguide
Leguideestdivisenseptchapitresspcifiquesetautonomes :
Lechapitre1(ObjectifsetspcificationsdeJavaEE)prsente le langageJava, lesrglesdenommageainsiquelinstallationdelenvironnementdedveloppement.
Lechapitre2(LeserveurdapplicationsApacheTomcat)estconsacr lamiseenplaceduserveurJavaderfrence,Tomcat.
Le chapitre 3 (Les JavaServer Page) aborde la programmation de Servlets avec les classes, objets etmthodes.
Lechapitre4(LesServlets)exploreendtailledveloppementdepagesWebautraversdespagesJSP.
Lechapitre5(Javaetlesbasesdedonnes)prsentelesbasesdedonnesenJavaainsiquelessolutionstechniquesetlesoutilsadaptslapersistancedesdonnes.
Le chapitre 6 (Framework Java EE) est consacr ltudedun framework de dveloppement Java nommStruts.
Lechapitre7(Techniquesavances)estddiauxtechniquesavancesendveloppementJavaEE.
- 1 - ENI Editions - All rigths reserved
-
quisadresseceguide?
QuevousayezpeudeconnaissancesendveloppementWebouquevoussoyezunexpertJavaEE,ceguideapourobjectifdevousprsenterendtailetdefaonexhaustive,touteslestapesderalisationdapplicationsInternetpartirdun projet concretmais facilement portable. Au cours demes tudes et demon parcours professionnel, jaitudileslangagesduWeb,linstallationdunserveurJava,lamiseenuvredunframework,lesbasesdedonnespourInternet,lesServlets/JSPetledveloppementdeprojetsmaisaucunouvrageneregroupaittouscesaspectsdeconceptionetcertainespartiesimportantesntaientpasdtailles,commesilmanquaitquelquesclsessentiellesquine sacquirentquavec lexprience. La dmarche pdagogique de ce guide est de ne pas faire limpasse surdespointsessentielsdunprojetWebcommeledploiementsurunserveurenproductionavecunnomdedomaine, lamiseenplacedunpooldeconnexionsurunebasededonnesquelconqueouencorelaconfigurationcompltedunserveurJava.Louvrageutilisepourcelaunemiseenpageadapteafindemettreenvaleurlesconceptsessentielspartirdeschmas,graphiques,etc.
- 1 - ENI Editions - All rigths reserved
-
Lesconventions
1.Lesconventionsduguide,deJava,decodageetlesrglesdenommage
Danslecycledeviedunproduitlogiciel,laphasedemaintenancereprsentelamajeurepartiedutemps(environ80%).Demme,un logicielest rarementdveloppparuneseuleetmmepersonne.Cestunequipeentirequiraliseleprojetdedveloppementavectouslesavantagesmaisaussitouteslescontraintesquecelaimplique.
Larussitedunprojetdpendbeaucoupdelhomognitdanslecodage.Cettetapeessentiellepasseparlamiseenuvredeconventionsstrictes respectespar toute lquipe impliquedans leprojet.Laplupartdesoutilsdedveloppement(IDE)proposentdesfonctionnalitspourpermettrecettehomognitmaisilexistedesrglesqueseuls les dveloppeurs doivent appliquer. Le fait de vouloir tout prix avoir un code esthtique et de faiblecomplexitpeuttreunfreinauxperformances.linverse,lacourselaperformancepeutdcoulersuruncodepeulisible.Ilrevientdoncauxdveloppeursdetrouverlebonquilibreentrelesconventionsetlescontraintesduprojet(projetaxsurlaperformance,projetOpenSource...).
2.Lesconventionsduguide
Toutaulongdeceguideserontutilisesdesconventionspourlardactiondesexplications,lespartiesdecode,lesrappels et les rsums. Les explications seront rdiges sous format textuel et graphique avec unmaximum declart.Lespartiesdecodeserontbiendiffrenciespar lapolicedecaractresetserontencadres.Lesschmasviendrontappuyeruneexplicationetpermettrontdexpliquersous formegraphiqueuneconvention,unchoix,unespcificationouunexemple.
3.Lesconventionsdecodage
Desconventionsdecodagesontutilisestoutaulongdecedocument.Pardfaut,lesconventionsdecodagepourlaplupartdesprojetsOpenSourcesuiventcesinstructions.Parexemple,silaparenthse{estaprslaconditionif,lecodenestpascorrect.
Touslesblocsdecodedoiventcommencerparunenouvelleligne.
public class MaClasse { public void maMethode() { if (xxx) { } } }
Chaqueconditionnellecontientlesparenthsesouvrantesetfermantes.
//Correct if (expression) { //le code } //Incorrect if (expression) //le code
Uneindentationsetrouveaprschaqueinstruction.Lesnomsdesfonctionsetdesparamtres,nedoiventpasavoirdeprfixe,commencentparuneminusculeetchaquepartiedemotestenmajuscule.
public class MaClasse { private String maChaine; public void maMethode(String monParametre) { }
- 1 - ENI Editions - All rigths reserved
-
}
Laversiondelapplication(ducode)estprcisedanschaquefichierdextension.java.
@version 2.8
Lenomdelauteurestprcis.
@author jeromelafosse
Chaqueimportationdepaquetage(paquet)Javaestpleinementqualifie.
//Correct import java.util.Date; import java.net.HttpURLConnection; //Incorrect import java.util.*; import java.net.*;
4.LesconventionsJava
Pour utiliser efficacement le langage de programmation Java, il existe plusieurs conventions connatre et appliquer.Les instructionsJavaseterminentparunpointvirgule.LesinstructionsJavautilisentdesaccolades{}pourindiquerledbutetlafinducorps.Uncorpspeutcontenirplusieursinstructions.
LaprsentationaveclesaccoladesalignessurlammecolonnequelepremiercaractredelinstructionJavaserautilise.Cetteprsentationajoutedeslignesdecode,maiselleestplusfacilelire.Ilestimportantdemettreenretrait(espaceoutabulation)lesinstructionsJavaquicomportentuncorps.Ilestgalementncessairedetoujoursutiliserlammemiseenretraitducode.
Javarecourtcommetoutlangageplusieursmotscls,cestdiredesmotsrservsexclusivementaulangage.Ilneseradoncpaspossibledutilisercesmotsclscommenomsouvaleursdevariables.
Voiciunelistenonexhaustivedecesmotscls :abstract,boolean,break,case,catch,char,class,continue,do,double,else,extends,false,final,finally,float,for,if, import,instanceof,int,interface,new,null,package,private,protected,public,return,static,super,switch,this,true,try,void,while...
Lecodedoittresuccinct,celafacilitelamaintenanceetlalisibilitdelensemble.Ilvautmieuxdcouperparfoisdesmthodesetajouterdescommentaires.Lesrecommandationsdoiventtreappliquessurlintgralitduprojetetnon avec parcimonie. Si les rgles sont plus ou moins appliques, si le code change dun fichier lautre, lacomprhensionseradifficile.Lapplicationuniformedesrglesestungagedemaintenabilit.
Les noms des fichiers sources portent lextension .java et le code (bytecode) gnr porte lextension .class. Lesfichiers de proprits portent lextension .properties (langues, traductions...) et les fichiers de configurationlextension.xml.Lefichierdeconstructionduprojetportelenombuild.xml(Ant)etlefichierdedescriptionduprojetestappelREADME.
Unprojetdedveloppementutiliseplusieursrpertoires.Ilestgnralementcomposdurpertoire/srcquicontientles sources, du rpertoire /build qui contient les classes compiles, /docs qui contient la documentation du projetet/logquicontientlestracesdexcutionsetderreursduprojet.
Souvent,pourunprojetminime,seulslesrpertoires/src,/buildet/docssontutiliss.
Lesclassesdoiventtreregroupesenpackages(paquetagesoupaquets).
Ilestrecommanddenepasdpasser2000lignesdecodeparfichier.Sitelestlecas,ilestimportantdoptimiserlecode,devrifiersilnexistepasderedondanceetdedcouperlesfonctionnalitsenplusieursclasses(boteoutilsparexemple).
Il faut configurer lditeurpourque la tabulationcrivehuitcaractresespace(configurationpardfaut).Lentredansunblocimposelajoutduneindentation.Desblocsdemmeniveaudoiventdbutersurlammecolonne,cestdireavoirlammeindentation.Leslignesblanchesdoiventtreutilisespoursparerdesportionsdecodeetlesmthodes.Lesespacespeuventtreutilissenquantitmais souscertainesconditions.Lecaractreespaceest
Fichiers
Sources
Formatage
- 2 - ENI Editions - All rigths reserved
-
proscritavantlespointsvirgules,avantlescrochetsdestableauxetentreunevariableetlesoprateursdepr/postincrment.Parcontre,lespaceestautorisaprslesvirgules,avantetaprslesaccolades,avantetaprschaqueoprateur,aprslesmotsrservsdulangageetentrelenomdunemthodeetlaparenthsedesesparamtres.
//Correct maMethode (a, b, c, d); for (i = 0; i < 100; i++) { ++count; (MaClasse)maVariable.get(i); //Incorrect MaMethode (a,b,c,d); ++ count; (MaClasse) maVariable.get(i);
Lesnomsutilissdoiventtreexplicites,cestdireque lenomdoitexpliquer le contenude lobjet, le rlede lamthode...Lesacronymesquiapparaissentdanslesnomsdoiventtrepasssenminuscules(sauflapremirelettredupremiermot).Ilestconseilldemettrelesidentifiantsenlangueanglaisepourdesprojetsinternationaux.
Lesnomsdespaquetagesdoiventtreenminuscules.Cesnomsdoiventtrepleinementqualifis(commeuneURL)et reprennent le nom du projet, lURL du site... En gnral, la technique consiste retourner lURL du projet.Exemple :monprojet.comdevient :com.monprojet.monpaquet
//Correct package com.monprojet.monpaquet; //Incorrect package Com.MonProjet.MonPaquet;
Lesnomsdesclassesdoiventtreenminuscules,hormislesinitialesdesmotsquilescomposent.
//Correct class MaClasseFavorite; //Incorrect class maclassefavorite; class maClassefavorite;
Lesnomsdesmthodesdoiventtreenminusculeshormis les initialesdesmotsquicomposent lesmots(sauf lapremirelettre).
//Correct public void maMethodeFavorite() { //Incorrect public void mamethodefavorite() {
Lesaccesseursdirects(gettersetsetters)desattributsduneclassedoiventtreprfixsdungetpourlalecturedelattributetdunsetpourlcriture.Leprfixeisdoittreutilispourlesmthodesquiretournentunboolen.
//Correct public int getNiveau() { public void setNiveau(int niveau) { public boolean isVisible() { //Incorrect public int recupererLeNiveau() { public void ecrireLeNiveau(int niveau) { public boolean estIlVisible() {
Nouspouvonsgalementutiliserdautresmotspour les recherches, les suppressions, lesajouts, la fermeturedeconnexions...(find,delete,add,close...).
Nommage
Package/Paquetage
Classesetinterfaces
Mthodes
- 3 - ENI Editions - All rigths reserved
-
Lesattributsdesclasses,lesvariablesainsiquelesparamtresdesmthodesdoiventtreenminusculeshormislesinitialesdesmotsquilescomposent(sauflepremier).Lesvariablesdeboucledoiventporteruneseulelettre :i,j,k...Lessignesdollars($)etsoulignement(_)sontproscrits.
//Correct Voiture prochaineVoiture = voitures.get(this.id + 1); float laTaille = 145.5; //Incorrect Voiture a = voitures.get(this.id + 1); float la_Taille = 145.5;
Lescollectionsdoiventtrenommesaupluriel.
//Correct Vector comptes; Collection banques; Object[] mesObjets; //Incorrect Vector compte; Collection banque; Object[] monObjet;
Lesnomsdesconstantesdoiventtrecritsentirementenmajuscules.Lesparateurdemotestlecaractredesoulignement(underscore).
//Correct static final int LOG_CONSOLE = 1; //Incorrect static final int LOGCONSOLE = 1; static final int console_Log = 1; static final int Console_LOG = 1;
Lescommentairessontessentielsdansuncodesource.Ilspermettentdedocumenterleprojetlintrieurmmeducode source en vue de la gnration de la documentation via loutil JavaDoc. Il existe en Java deux types decommentaires :
lescommentairesmonolignequipermettentdedsactivertoutcequiapparatsurlammeligne//
les commentaires multilignes qui permettent de dsactiver tout le code qui se trouve entre les deuxdlimiteurs/**/.
IlestimportantderserverlescommentairesmultilignesauxblocsutileslaJavaDocetlinactivationdeportionsde code. Les commentaires monoligne permettent de commenter le reste, savoir, toute information dedocumentationinterneauxlignesdecode.
/* * La classe MaClasse permet telles fonctionnalits */ public class MaClasse() { // Recuperer un objet de la collection monFichier = (Fichier)fichiers.get((int)item.getIdFichier());
Lesvariablesdoiventtredclaresligneparligne.Linitialisationdoitsefairelorsdeladclarationlorsquecelaestpossible.Lesvariablesdoiventtredclaresauplusttdansunblocdecode.Lesnomsdesmthodessontaccolslaparenthseouvrantelistantleursparamtres.Aucunespacenedoitytreinsr.
//Correct int niveau = 10; void maMethode() {
Attributs,variablesetparamtres
Constantes
Commentaires
Dclarations
- 4 - ENI Editions - All rigths reserved
-
//Incorrect int niveau; niveau = 10; void maMethode () {
Lordrededclarationdesentitsducodesourcedoittrelesuivant(quiestplusoumoinsnaturel) :
Lesattributsdelaclasse(1>statiques,2>publiques,3>protgs,4>privs).
Lesmthodesdelaclasse(1>statiques,2>publiques,3>protges,4>prives).
Unelignedecodenepeutcontenirquuneseuleinstruction.
//Correct count++; i--; println("Bonjour"); //Incorrect count++; i--; println("Bonjour");
Ordre
Instructions
- 5 - ENI Editions - All rigths reserved
-
DfinitionsdeJ2EE/JavaEE
DenombreusespossibilitsexistentpourraliserdesapplicationsInternetdepuisplusieursannes.Deslangagesonttcrs,desarchitecturesetdesenvironnementsdetravailonttconuspourrpondreauxbesoinsetfaciliterlatchedesdveloppeurs.Sun(leconcepteurdeJava)adoncmisenplaceunensembledetechnologiespourraliserdesapplicationsWeb.CestechnologiessontregroupessouslenomJ2EE(Java2EntrepriseEdition),dsormaisJavaEE.
Depuislaversion5,lechiffre2adisparupourfaciliterlacomprhensiondelaversionetnepasmlangerlechiffre2aveclenumrodeversion.
La plateforme Java EE sappuie entirement sur le langage Java. Java EE est donc une norme, qui permet desdveloppeurs,entreprisesetSSIIdedvelopperleurpropreapplicationquiimplmenteentotalitoupartiellementlesspcificationsdeSUN.Ensimplifiant,ilestpossibledereprsenterJavaEEcommeunensembledespcificationsdAPI,unearchitecture,unemthodedepackagingetdedploiementdapplicationsetlagestiondapplicationsdployessurunserveurcompatibleJava.
Une API est un ensemble de librairies ou bibliothques de fonctions destines tre utilises par lesprogrammeursdansleursapplications.
Java Entreprise Edition est destin aux gros (trs gros) systmes dentreprises. Les librairies utilises fonctionnentdifficilement sur un simple PC et requirent une puissance beaucoup plus importante (notamment au niveau de lammoire).
JavaEntrepriseEditionestapparuelafindesannes90.CettevolutionapporteaulangageJavauneplateformelogicielle robuste et complte pour le dveloppement. La plateforme Java EE a souvent t remise en cause,malutiliseetmalcomprise.DesoutilsOpenSourcesontvenuslaconcurrencer.CesremarquesetlaconcurrenceontpermisSundamliorersonproduitetdditerdesversionsdeplusenplusabouties.JavaEEneremplaceenaucuncasJ2SE.Aucontraire,J2SEestlabasedeJavaEEquiestpluscompletetquiestaxsurleWeb.LaplateformeJ2SEoffredesoutilsdedveloppementdapplicationsclient/serveur,applicationsgraphiquesfentresetApplets.
LaplateformeJ2SEestcomposedeslmentssuivants :
LamachinevirtuelleJava(JVM) :permetdexcuterdesapplicationsJava.Elleconstitueunepasserelleetpermetuneportabilitentrelesarchitectures(Windows,Linux,Mac...).
LabibliothquedeclassesJava:unensembledecomposantslogicielsprtlemploi.
Les outils de dveloppement : le compilateur javac , un interprteur Java nomm java, le gnrateur dedocumentationjavadoc,laconsoledesupervisationJconsole...LaplateformeJavaEEestuneextensiondelaplateformeJ2SE.Ellepermetundveloppementdapplicationsquivontsexcutersurunserveurdapplications.Lesapplicationsserontutilisespardesclientslgers(commedesnavigateursWeb)oubiendesapplicationslourdes(IHM).LadernireversionstabledeJavaEEestlaversionJavaEE5.0etfonctionneavecleJDK5.0et6.0.
1.PourquoichoisirJavaEE
Ilexisteactuellementbeaucoupdautresplatesformesdedveloppementquisontbasessurdautreslangages(C#,PHP5,.NET...).LesprincipauxavantagesdutiliserJavaEE(etdoncJava)sontlaportabilit,lindpendance,lascuritetlamultitudedelibrairiesproposes.
Ledveloppementdapplicationsdentreprisencessitelamiseenuvreduneinfrastructureimportante.Beaucoupdefonctionnalitssontutilisesetdveloppes,lebuttantdeproduiredesapplicationssres,robustesetfacilesmaintenir. Certains services sont dailleurs rcurrents comme : laccs aux bases de donnes, lenvoi demails, lestransactions,lagestiondefichiers,lagestiondimages,letlchargement,lechargementouupload,lasupervisiondusystme...
CestpourcelaquelarchitectureJavaEEest intressantecartousleslmentsfondamentauxsontdjenplace.Pasbesoinde concevoir une architecture , des librairies et des outils spcialement adapts.Cela ncessiterait untempsetuninvestissementconsidrables.
Enfin, la plateforme Java EE est base sur des spcifications, ce qui signifie que les projets sont portables surnimporte quel serveur dapplications conforme (Tomcat, JBoss, WebSphere...) ces spcifications. CetteimplmentationestgratuiteetpermetdebnficierdelatotalitdelAPIsansinvestissement.LaplateformeJavaEEest la plus riche des platesformes Java et offre un environnement standard de dveloppement et dexcutiondapplicationsdentreprisemultitiers.
- 1 - ENI Editions - All rigths reserved
-
Le fait que Java EE soit standardis a contribu son adoption par de trs nombreux diteurs de logiciels/outilsinformatique. Ces diteurs associs Sun Microsystems font partie du JCP (Java Community Process). Le JavaCommunityProcessregroupelesentreprisessuivantes :Sun,IBM,Oracle,Borland,Nokia,Sony,lafondationApache,ObjectWeb...LobjectifduJCPestdedfinirlesspcificationsdestechnologiesbasessurJava.
ChaquedemandedemodificationestappeleuneJSR(JavaSpecificationRequest).
2.LAPIJavaEE(JDBC,Servlets,JSP)
LaplateformeJavaEEestcomposedeplusieursAPI(ensembledelibrairesetservices).JavaEEfaitintervenirtroistypesdecomposantslogiciels(Servlets,JSP,EJB).
a.LesServlets
LAPIServletfournitleslmentsncessaireslaconceptiondecomposantsWebdynamiquesaveclelangageJava.LesServletssontdescomposantslogicielsentirementcritsenJava.LesServletseffectuentdestraitementsctserveur en rponse aux requtes des clients distants. Une Servlet est charge enmmoire lors de son premierappel.Demme,ilnexistequuneseuleinstanceduneServletenmmoire,leserveurutilisealorsunthreadglobalpourtraiterlesdemandesmisesparlesclients.
UneServletestuneclasseJava.CetteclassedoittrechargepuisinterprteparunemachinevirtuelleJava(celleduserveurdapplications).LaServletestalorsprterecevoirdesrequtesetrenvoyerdesrponses.Lorsquelapplicationouleserveursarrte,laServletestdtruite,puissoninstanceestnettoyeparleramassemiettesdelamachinevirtuelle.
LesServletspermettentdedvelopperdespagesdynamiques,dont lecontenuestcr lavolesurdemande.Cestlecasparexemple,lorsquunclientsouhaiteobtenirlalistedesarticlesduneboutiquepouruneplagedeprix.LespagesHTMLsontalorsgnresdynamiquementenfonctiondecritresspcifiques(prix,dates,recherches...).
UneServletestuncomposantJavaquiimplmentelinterface javax.servlet.Servlet.Cetteinterfacepermetdegrerlesrequtesduclient,dirigesverslaServletenquestion.LeserveurreoitunedemandeadresseuneServletsouslaformedunerequteHTTP.IltransmetalorslarequtelaServletconcerneparletraitementpuisrenvoielarponsefournieparcelleciauclient.LaServletestgreparleconteneurdeServletsJavaEE.LorsqueleserveurWeb reoit la requte du client, il charge la Servlet (si elle nest pas encore charge) et invoque linterfacejavax.servlet.Servletafindesatisfairelarequte.
CycledevieduneServlet
- 2 - ENI Editions - All rigths reserved
-
Ce type de programmation est trs proche du dveloppement CGI mais offre les outils pour grer les cookies,sessions,accsauxbasesdedonnesetautresavecuneexcellenteportabilit.
ExempledeServletsimple :
public class PremiereServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, java.io.IOException { } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, java.io.IOException { doGet(request, response); } }
b.LesJSP(JavaServerPage)
LAPIJSPpermetdedvelopperdespagesWebdynamiquesrapidementpartirdunsqueletteHTMLetdedonnesincluses directement dans chaque page. Les JSP permettent dinsrer des bouts de code Java (scriptlets)directementdanslecodeHTML.
Dupointdevuedelastructure,uneJSPesttrsprochedunepagePHPoubienASP.UnepageJSPestunfichierquiportelextension.jspou.jspf(pourlesfragmentsdecode).
Lors de la cration de Servlets, le but est de construire des composants capables de produire un service(essentiellementdu codeHTML).Toutefois, ceprincipeestparfois complexepourdespersonnesquine sontpashabitues laprogrammationobjetetaucode100%Java.Cestpourcesraisonsque lesdveloppeursdechezSUNontinventJSP.
LapageJSPesttransformeenclasseJavapuiscompileenServletparleserveurdapplications.Cetraitementestralisparleserveurdapplicationsaupremierappeldelapageetchaquefoisquecettepageestmodifieparunprogrammeur.
Cest cette tape qui ncessite un serveur dapplications Java EE, un compilateur Java et qui par consquentncessitepourlamajoritlinstallationdeJavaavecunJDKpluttquunJRE.
CycledevieduneJSP
- 3 - ENI Editions - All rigths reserved
-
Le rsultatde lacompilation (essentiellementducodeHTML)est renvoyauclient.Cette technologieestsimple,lgre et rapide. Les dveloppeurs de pages JSP peuvent ainsi mlanger du contenu statique et du contenudynamique.
IlestdoncpossibledavoirdesquipesdedveloppementsparesavecunepersonnespcialistedeHTML/XHTMLetdudesignetunprogrammeurJavaquiraliselesscriptlets.LesJSPsontexcutessouslaformedeServlets,ellesdisposentdoncdesmmesfonctionnalitsquecellescietpeuventainsimanipulerlessessions,lesbasesdedonnes,lesmails...
- 4 - ENI Editions - All rigths reserved
-
c.LESEJB(EntrepriseJavaBean)
LesEJBsontdescomposantsmtierdistribus,cestdirequilssontinvocablesparlerseau.UncomposantEJBestuneclassequipossdedesattributsetmthodespourmettreenapplicationlalogiquemtier.LAPIEJBfournitun ensemble de services (persistance, transaction...) de gestion de composants. Il existe plusieurs (trois) typesdEJB :lesbeanssessions,lesbeansentitsetlesbeanscontrlsparmessage.
EJBsession :ilpermetdemaintenirdesinformationssurlesclientsetlestraitementsquilsralisent.
EJBentit :cestuncomposantpersistant,sontatestsauvegarddansunebasededonnes.
EJBpilotparmessage :lesEJBmessagesontsemblablesauxEJBsessionmaissontinvoqusdiffremment(parlebiaisdeJavaMessageService).
La mise en place dEJB ncessite lutilisation dun serveur dapplications capable de grer ces EJB.Actuellement,lesserveursGlassFish,JBossetJonasexistentdansledomainedulibre.LeserveurTomcatne
permetpasdutiliserlesEJB.
IlexisteensuiteauseindeJavaEE,laplateformedeServicesavecJDBC,JNI,JavaMail,JTA,RMI,JAASetXML.
LAPI JDBCpermetde faciliter lobtentionde connexions JDBCversdes sourcesdedonnes (essentiellementdesbasesdedonnes,maisgalementannuaire...).LAPIfournitleslibrairiespourseconnecterauxbasesdedonnesetpourlagestiondestransactions.
LAPI JNDI permet daccder des services de nommage ou dannuaire (LDAP par exemple). Cette API est parexempleutilisepourseconnecterunesourcededonnespourdesaccslabasededonnesoulagestiondesaccs(associeauxRealms).JNDIpermetdimplmenterunservicedenommage.LensembledesressourcesqueleserveurdapplicationsmetdispositionviacesAPIdeservices,doittreenregistravecunnomlogiqueunique,permettantauxapplicationsderecherchercetteressourcedansleserveur.
LAPI JavaMail fournit des fonctionnalits de gestion de courrier lectronique (transfert, type de contenu, picesjointes...).JavaMailpermetlacrationetlenvoidemessageslectroniquesviaJava.CetteAPIpermetdemanipulerlesprotocolesdemessagerieInternetcommePOP,IMAP,SMTP.JavaMailnestpasunserveurdecourriermaispluttunoutilquipermetdinteragiraveccetypedeserveur.
LesentitsBeansonttdveloppespourlemodledepersistanceenJavaEE.Cemodledecomposantsavaitde nombreux dtracteurs. Pour apporter des solutions ce problme, de nouvelles spcifications, des outils demapping objet/relationnel comme TopLink et Hibernate ont t dvelopps. Java EE apporte donc un nouveaumodledepersistancenommJPA.JPAsappuiesurJDBCpourcommuniqueraveclabasededonnesmaispermetdviterdemanipulerdirectementlesfonctionnalitsdeJDBCetlelangageSQL.
3.LesautresAPI
ParmilesautresAPIJavaEE,ilfautciter :
JMS(JavaMessageService)permetdaccderunservicedemessagespourunegestionasynchronedescomposants.Lecomposantappelantposteunmessage(enarrireplan)destinationdunefiledattentedemessageshbergsparleserveurdapplicationspuiscontinuesontraitementsansattendre.
RMI (RemoteMethod Invocation) permet de concevoir des applications distribues en Java. RMI permet lappel defonctionnalitsdistanceparlebiaisdelacommunicationrseau.
JTA(JavaTransactionAPI)permetdemettreenplaceunegestiondestransactionsdansdesapplicationsdistribues(commit,rollback...).Leprincipedestransactionsestdeconsidrerunensembledoprationscommeuneseule.Cetypedeserviceestobligatoirepourdestraitementsbancaire.Parexemple,uneapplicationbancairequipermetderaliserdesvirementsentredeuxcomptesvadaborddbiterlepremiercompteetensuitecrditerlesecondcompte.Si le dbit puis le crdit aboutissent sans problme, alors la transaction est valide. JDBC permet de grer lestransactionssurunebasededonneslocalemaissilesdonnessontrparties,ilfaudraalorsutiliserlestransactionsJTA.JTApermeteneffetdegrerlestransactionsdistribuesquifontintervenirdiffrentesbasesdedonnes.
JDBC(JavaDataBaseConnectivity)
JNDI(JavaNamingandDirectoryInterface)
JavaMail
JPA(JavaPersistanceAPI)
- 5 - ENI Editions - All rigths reserved
-
JCA (J2EE Connector Architecture) : ce connecteur permet Java EE dutiliser des gros systmes tels que lesmainframes.
JAAS(JavaAuthenticationandAutorisationService)estunmcanismedescuritgrparleserveurdapplications.
XML nest pas vritablement une API Java mais il est trs utilis pour la mise en place et la configuration desapplications.Demme,XMLestlabasedunnouveaumodedecommunicationentrelesapplicationsquiestappelWebService.Parexemple,JAXP(JavaAPIforXMLParsing)analysedesfichiersoudonnesXML,JAXRPC(JavaAPIforXMLbasedRPC)utilisedesWebServicesetJAXB(JavaAPIforXMLBinding)permetdegnrerdesclassesJavapartirdeschmasXMLouinversement.
Actuellement,laversiondeJavaEEest5.0associelAPIServlet2.5,etlAPIJSP2.1(etApacheTomcat5.X6.X).
- 6 - ENI Editions - All rigths reserved
-
EncodagedesapplicationsJava
1.Prsentation
Lesordinateurstravaillentavecdesbitsousuitesdoctets(unoctet=8bits).Leschanesdecaractres,entiers,relssont donc codes sous forme doctets. Les ordinateurs utilisent donc un procd qui consiste transformer leschanesdecaractresenoctets,associunetechniqueafinderelireleschanesdorigine.Cestceprocdquiestappelencodage.
Ilexisteplusieursencodagesquiutilisentplusoumoins lemmenombredoctets,doncdecaractresdisponiblescomme ISO88591,ASCII,UTF8... LencodageUTF8est lepluspratiquepourchangerdes textesconstitusdecaractresUNICODE(standardduconsortiumUnicode).Ceconsortiumapourbutderpertoriertouslescaractresutilissdanslesdiffrenteslanguesetdassocierchacununcodenotsousformehexadcimal.LencodageUTF8estcompatibleaveclencodageASCIIcequiesttrspratiquelorsdesdveloppementsinformatiques.
LorsdesdveloppementsdapplicationsJavaet/ouJavaEE, ilnestpasraredeconstaterdenombreuxproblmesdencodage des applications tant au niveau des messages prsents dans un navigateur, que des fichiers deproprits dune application ou encore de lencodage des caractres saisis au clavier. La mise en uvre duneapplicationJavancessitedonc lagestiondeplusieursparamtres.Ladifficultestquilnefautpasenoublierunseulsouspeinedeconstaterlaffichagedehiroglypheslaplaceducaractresouhait.
2.Lesfichiers
Lapremirecontraintevrifierestquetouslesfichiers(HTML,JSP,JSPF,XML,XSLT...)delapplicationdveloppesoient dans lencodage souhait. Pour cela, la plupart des IDE peuvent se paramtrer afin de slectionnerlencodage.AvecEclipse,nouspouvonsslectionner lencodagedans lemenuFentre Prfrences Editeurs CodagedufichiertexteetTypesdecontenu.
3.LespagesJSPetJSPF
IlestncessairededclarerdanschaquepageJSPouJSPFdentte lencodageutilis.Pourcela,ilfaututiliserladirectiveJSPadapte.
ou
- 1 - ENI Editions - All rigths reserved
-
Ilestpossiblegalementdecentraliserlencodagedanslefichierdeconfigurationetdedploiementdelapplicationweb.xmlduserveurTomcat.
Config. de lencodage des pages JSP *.jsp UTF-8
4.LespagesHTML/XHTML
Il est galement important de prvenir le navigateur client de lencodage quil doit utiliser pour afficher la pageHTML/XHTML.Cettedirectiveestprciseaveclabalisemetaetleparamtrecontent.
...
Ilestgalementpossibledeprciserlencodagedunefeuilledestyleexternelaidedeladirectiveplaceentoutdbutdefichier.
@charset "UTF-8";
5.LesfeuillesdestyleXSL
Si des transformations XSLT sont utilises dans notre application, il est ncessaire de dclarer galementexplicitementlencodagedanscespages.
6.CodeJava
DupointdevueducodeJava,ilestpossibledutiliserunfiltrequivaforcerleserveurdapplicationsJavalirelesparamtresdelarequtedanslencodagesouhaitetquivarenvoyerlesrponsesaveclemmeencodage.
package application.filters; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; public class EncodingFilter implements Filter { public static final String ENCODING = "encoding"; private String encoding; public void init(FilterConfig filterConfig) throws ServletException { this.encoding = filterConfig.getInitParameter(ENCODING); } public void doFilter(ServletRequest req, ServletResponse resp, FilterChain filterChain)throws IOException, ServletException { req.setCharacterEncoding(encoding); resp.setContentType("text/html;charset="+encoding);
- 2 - ENI Editions - All rigths reserved
-
filterChain.doFilter(req, resp); } public void destroy() {} }
Ilestalorspossiblededclarercefiltreauseindufichierdeconfigurationdelapplicationweb.xml.Lesfiltrestantexcutsdanslordrededclaration,cemappingdoittrelepremierdclardanslefichierdeconfiguration.
encodingfilter application.filters.EncodingFilter encoding UTF-8 encodingfilter /*
Lencodage peut aussi tre gr au sein dune Servlet gnrique. Chaque Servlet du projet devra alors ensuitehriterdecetteServlet.
package application.servlets; import java.io.IOException; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public abstract class EncodingServlet extends HttpServlet { public static final String ENCODING = "encoding"; private String encoding; public void init(ServletConfig servletConfig)throws ServletException { this.encoding = servletConfig.getInitParameter(ENCODING); } public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException { req.setCharacterEncoding(encoding); resp.setContentType("text/html;charset="+encoding); } public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException { request.setCharacterEncoding(encoding); response.setContentType("text/html;charset="+encoding); } }
7.EncodagedelaJVM
IlestimportantdexcuterlaJVMdanslencodagevoulu.Letraitementdeschanesdecaractresdoittrelemmequelerestedelapplication.CestaulancementdelaJVM,doncaulancementduserveurJavaEE,quelencodageestspcifilaidedelargument :-Dfile.encoding=UTF-8
AvecTomcat,cetargumentestspcifidanslefichierdelancementduserveur,catalina.sh.
JAVA_OPTS="$JAVA_OPTS "-Dfile.encoding=utf-8"
Ilestparfoisgalementncessairedevrifier lencodagedesURLde lapplication.AvecTomcat,cetencodageestdclarexplicitementvialattributURIEncodingsurleconnecteurCoyote.Voicilalignedufichierserver.xmlconcern :
- 3 - ENI Editions - All rigths reserved
-
Lecodesuivantesttrsutilecarilpermetlatransformationdunechanedecaractresdansunencodageprcis.
public static String transformStringEncoding(String init,String encodingBefore, String encodingAfter) { try { return new String(init.getBytes(encodingBefore), encodingAfter); } catch (UnsupportedEncodingException uee) { return null; } }
8.Gestiondelencodage
IlesttoutfaitpossibleenJavadegrerlencodageutiliser.Pourlesflotsdentreparexemple,laconnexionestraliselaidedelaclasseInputStreamReader.Lejeudecaractresutiliserpeuttrealorsprcis.Pardfaut,lejeudecaractresestfonctiondusystmedexploitationutilisetdelalocalisation(ex :fr_FRUTF8).
Avecunflot,ilestpossibledeprciserlencodageutilis :
InputStreamReader i=new InputStreamReader(is,"UTF-8");
LenomdujeudecaractresutilispardfautestobtenuenprogrammationaveclamthodeSystem.getProperty()etleparamtrefile.encoding.
package com.betaboutique.classes; public class Programmation { public static void main(String[] args) { System.out.println("Encodage : "+System.getProperty("file.encoding")); } }
LorsdesdveloppementsWeb,ilestassezcourantquelesparamtresreusparlesmthodesHTTPGETetPOSTnesoientpasdansunformatcorrect.Lesproblmesportentalorssurlesaccents,lescaractresspciaux...Pourcela,latransformationdunencodagepeuttreforcenutilisant lesoctets.LecodecidessouspermetdetransformerunparamtrereuencaractresUTF8.
String parametre=(String)request.getParameter("parametre"); String parametreUTF8=new String(parametre.getBytes(),"UTF-8");
DemmepourlesenvoisdinformationsenprogrammationJavatraversdesflux,lencodageetlestransformationsdejeuxdecaractressontutiliss.
package com.betaboutique.classes; import java.io.InputStream; import java.net.URL; import java.net.URLEncoder; public class Programmation { public static void main(String[] args) {
- 4 - ENI Editions - All rigths reserved
-
try { //paramtre envoyer en direction du flux String parametreaenvoyer="mon paramtre"; String unautreparametreaenvoyer="un autre paramtre"; String unautreparametreeniso="un paramtre en iso"; URL url=new URL("http://www.essai.com"+"?parametre1=" +URLEncoder.encode (parametreaenvoyer,"UTF-8") +"¶metre2="+URLEncoder.encode(new String (unautreparametreaenvoyer.getBytes(), "UTF-8"),"UTF-8") +"¶metre3="+URLEncoder.encode(unautreparametreeniso,"ISO-8859-1")); //poster les informations dans le flux InputStream fluxLecture=url.openStream(); //fermer le flux fluxLecture.close(); } catch(Exception e) { System.out.println("Erreur de connexion"); } } }
- 5 - ENI Editions - All rigths reserved
-
LesarchitecturesWeb
1.Lestypesdarchitectures
DanslesapplicationsWeb,lacommunicationentreleclientetleserveurestraliseselonleprotocoleTCP/IPquiestcharg du routage des donnes. Le transit des informations seffectue selon le protocole HTTP pour leWeb, lesdonnessontalorstransmisesentreleclientetleserveurviaTCP/IP.Ondistinguealorsdeuxtypesdeclients :
Le client lger : il est aussi appel client Web car le module dexcution est alors un navigateur. LesapplicationsclientessontcomposesdepagesHTML/XHTMLvoireDHTMLaveclutilisationdulangageclientJavaScript.
Leclientlourd:ilsagitduneapplicationcomposeduneinterfacegraphiquevolueouenmodeconsole.Dans lidal, les clients lourds communiquants ne contiennent que la logique prsentation (affichage desdonnes).Touslestraitementssontdlgusdescomposantsmtierdistants.
IlexisteactuellementungrandnombredarchitecturesutilisespourleWeb.
Larchitecture2tiersestcomposededeuxlments,unclientetunserveur.Cettearchitecturephysiquesimplepeuttrereprsentedecettefaon :
Cettearchitecturepeutaussitrereprsenteavecunserveurdebasededonnes(SGBD),leschmaestalorslesuivant :
Danscetypedarchitecture,leclientassumelestchesdeprsentationetcommuniqueuniquementavecleserveurdapplications.Leclientestditlourd.Cetypedarchitecturepeuttredvelopptrsrapidementenfonctiondelacomplexitduprojet.Ilexisteuntrsgrandnombredoutilsdedveloppementetdelangagespourlesarchitectures2tiers.
Dupoint de vuedes inconvnients, le problmedvolutivit, demaintenanceet lamise enplace lors deprojetscomplexespeuventtrecits.
Danslarchitecture3tiers, leclientestconstitudunsimplenavigateurInternetetcommuniqueavecleserveur.Cettearchitectureestcomposedetroislmentsoutroiscouches.Lacoucheprsentationouaffichageestleclientlgerdanslamesureoilnefaitaucuntraitement.LacouchefonctionnelleoumtierestengnralunserveurWeb.Etenfin,lacouchededonnesestlieauserveurdebasesdedonnes(SGBD).
Lacoucheprsentation(depremierniveau)souventappeleIHM(InterfaceHommeMachine)correspondlapartievisibleetinteractive.CettepartieestralisepourleWebenHTMLengnralavecJavaScript,Flash...
- 1 - ENI Editions - All rigths reserved
-
Lacouchemtier(desecondniveau)correspondlapartiefonctionnelledelapplication.Lesoprationsraliser, les fonctions daccs auxdonnes et les traitements sontmis la disposition des utilisateurs etinvoqusparleursrequtes.Pourfournircesservices,ellesappuieparfoissurlacoucheaccsauxdonnesetenretourrenvoielacoucheprsentationlesrsultatsquelleacalculs.
Ladernirecouche(detroisimeniveau)grelaccsauxdonnesdusystme.Cesdonnespeuventtrestockessurlemmesystme(fichiers,fichiersXML,basededonnes,images...)ousurdautressystmes.Laccsauxdonnesesttransparentpourlacouchemtieretcorresponduniquementlaproccupationdelacoucheaccsauxdonnes.
Dune manire gnrale cette abstraction amliore la maintenance du systme. Parmi les avantages de cettearchitecture,laflexibilitdelensemblepeuttrecite.Lapartieclientestcomposeuniquementdaffichage(pasdeprogrammation,derequtesSQL...).Defait,desmodificationspeuventtreralisesauniveauduSGBDsansquecelaapporteun impactsur lacoucheclient.Demme,par lasuite toutenouvelle technologiepeuttre introduitesanstoutremettreenquestion.Dupointdevuedveloppement,lasparationentreleclient,leserveuretleSGBDpermet une spcialisation des dveloppeurs et unemeilleure rpartition des tches et fonctions (dveloppeur demodle/designer,programmeur,administrateurdebasesdedonnes...).
Legrosinconvnientdecemodle(etleprincipal),estlexpertisequilestncessairedavoiretquiestassezlongueobtenirpourbienmatriserchaquetiersetinterconnexions.Lescotsdedveloppementdunearchitecture3tierssontpluslevsquepourdu2tiers.
Larchitecturentiersatpensepourpallierleslimitationsdesarchitectures3tiersetconcevoirdesapplicationspuissantes et simples maintenir. Dun point de vue thorique, cette architecture permet de solutionner lesproblmessuivants :
Ellepermetlutilisationdeclientsriches.
Ellesparenettementtouslesniveauxdelapplication.
Ellefacilitelagestiondessessions.
Elleoffredegrandescapacitsdextension.
Une dfinition possible de ce type darchitecture est : une architecture 3tiers dans laquelle le traitement desdonnes(coucheaccsauxdonnesoumiddleware)contientluimmeplusieurscouchesmultipliantainsilestiers.
Danscecas,lapplicationclientepeuttredveloppeavecdescomposantsgraphiques(Swingparexemple)etfaireappeldesrglesmtierEJBquiaccdentunebasededonnes.
Il est aussi possible de trouver des applications clientes avec JSP, EJB et base de donnes. Le client est unnavigateurWeb.LespagesJSPaccdentauxrglesmtieretconstruisentlecontenuHTMLfourniaunavigateur.
LestypesdarchitecturesenJavaEE
- 2 - ENI Editions - All rigths reserved
-
UndrivdelarchitectureprcdenteestuneAppletclienteavecJSPetbasededonnes.Danscecas,leclientestencore un navigateur mais une Applet permet dobtenir une interface utilisateur plus complexe (mais aussi pluslourde) et plus interactive. Cette Applet peut accder au contenu produit par des JSP. Cellesci obtiennent desdonnesncessairesgrceJDBC.
Une autre version de larchitecture prcdente est JWS (Java Web Start) avec JSP et base de donnes. CestpratiquementlemmecasquelarchitectureavecAppletsicenestqueleclientestuneapplicationtlchargeableetutilisabledemanireautonome(sansnavigateur)maisuniquementavecuneconnexionrseau.
LederniertypedarchitecturereposesurlintgrationdeservicesWeb.UneapplicationclienteaccdeauxdonnesgrceunserviceWebprogrammenJava.
- 3 - ENI Editions - All rigths reserved
-
Les architectures proposes par Java EE reposent sur le dcoupage des applications en plusieurs tiers auxresponsabilitsclairementspares.Lesprogrammeursvontdvelopperdescomposantsquiseronthbergsparunserveurdapplication JavaEE (Tomcat, JBoss...). Lesapplicationsdistribues (ralisessous formedecomposantsdistincts)permettentdediviserlelogicielenplusieurscouchesappelestiers(chaquecouchereprsenteuntiers).Lemodle leplus couranttant larchitecture3tiers/ntiers.Cettedivision facilite lamaintenanceet ladaptabilitduproduit.
2.LarchitectureMVC(ModelViewController)
LarchitectureMVCproposeparSunestlasolutiondedveloppementWebctserveurquipermetdesparerlapartielogique/mtierdelapartieprsentationdansuneapplicationWeb.Cestunpointessentieldudveloppementdeprojetscarcelapermet toute lquipedetravaillersparment(chacunpossdeses fichiers,ses logicielsdedveloppementetsescomposants).
Cettearchitecture trouvesonoriginedans le langageSmallTalkaudbutdesannes1980,cenestdoncpasunmodle(designpattern)nouveauuniquement liJavaEE.Lobjectifprincipalestdediviser lapplicationentroispartiesdistinctes :lemodle,lavueetlecontrleur.
DanslarchitectureMVC,nousretrouvons :
LemodlequiestreprsentparlesEJBet/ouJavaBeanset/ousystmesdepersistances(Hibernate,objetssrialissenXML,stockagededonnesparlebiaisdeJDBC...).
LavuequiestreprsenteparlesJSP.
LecontrleurquiestreprsentparlesServlets.
PrincipedefonctionnementdelarchitectureMVC
- 4 - ENI Editions - All rigths reserved
-
1.LeclientenvoieunerequteHTTPauserveur.CestengnraluneServlet(ouunprogrammeexcutablectserveur)quitraitelademande.
2. La Servlet rcupre les informations transmises par le client et dlgue le traitement un composantmtieradapt.
3.Lescomposantsdumodlemanipulentounondesdonnesdusystmedinformation(lecture,criture,misejour,suppression).
4. Une fois les traitements termins, les composants rendent la main la Servlet en lui retournant unrsultat.LaServletstockealorslersultatdansuncontexteadapt(session,requte,rponse...).
5.LaServletappellelaJSPadquatequipeutaccderaursultat.
6.LaJSPsexcute,utiliselesdonnestransmisesparlaServletetgnrelarponseauclient.
Lescomposantssontbiensrplusnombreuxmaisgalementplussimples.Leursspcificitsfontquilspourronttredveloppspardesspcialistes :lesServletsetEJBpardesdveloppeursJava,lesJSPpardesdveloppeursetWebdesigner,lesaccsauxdonnespardesspcialistesSQL...Cedcoupagepermetgalementunemaintenanceplusaisedusystme.Ainsi,lechangementdelachartegraphiqueseraoprfacilementenutilisantlesvuessanstoucheraumodleetaucontrleur.
Afin de faciliter lutilisation du modle MVC dans les architectures Java EE, des frameworks (outils composs despcifications, librairies,outils...)dedveloppemententirementbasssurcemodleonttdvelopps(ApacheStruts/Spring).Leschmacomplexecidessousreprendunexempledemiseenplacedunetellearchitecturedansunprojetdentreprise.
3.LesdiffrentsmodulesJavaEE
Comme indiqu prcdemment, les architectures Java EE offrent de multiples possibilits. Il est donc ncessairedorganiserlesdiffrentslmentsduneapplicationenfonctiondeleurrle.
LemoduleWebcontientleslmentsduneapplicationJavaEEquivontpermettrelutilisationdecetteapplicationautraversdun navigateurWeb et de toute application utilisant le protocoleHTTP. Les lments regroups dans cemoduleWeb sont les Servlets, les JSP et les ressources statiques de lapplication Internet (images, JavaScripts,fichiers statiques...). Il yagalementdesbibliothquesdynamiquesdveloppesen Java fournies sous formedefichiers.jaretquisontutilisespar lesServletset/ouJSP(manipulationdimages,defichiers...).LesmodulesWebpossdentundescripteurdedploiement, le fichierweb.xml. Lensembledes fichiersest regroupdansun fichierdextension.warsignifiantWebARchive.
Les composants EJB sont constitus de fichiers de code Java. Il y a aussi dans cemodule des bibliothques au
ModuleWeb
ModuleEJB/composantsmtier
- 5 - ENI Editions - All rigths reserved
-
format.jar.Lesmodulessontensuiteassemblsenarchivedextension.jar.
IlestpossibledutiliserunclientricheavecuneinterfacegraphiquedveloppeenutilisantlesAPIdeprogrammationJava comme Swing et/ou AWT. Un module client permet un assemblage en classes et fournit un descripteur dedploiement.Lemoduleclientestunfichierdarchiveportantlextension.jar.
ModuleClient
- 6 - ENI Editions - All rigths reserved
-
Miseenplacedelenvironnement
Linterface Java EE permet de crer des sitesWeb dynamiques avec une technologie Java. Lamise en place dunenvironnementJavaEEncessitelutilisationdunserveurdapplicationscapabledexcuterlecodeetderpondreauxrequtesdesclients.GlassFish,Jonas,JBoss,WebSphereetApacheTomcatfontpartiedecesserveursdapplicationsJava.
Ilestgalementncessairedutiliserunenvironnementdedveloppementvolu.Ilnestpaspossiblededvelopperdemanireconfortabledescentainesdefichierssources,ladocumentation,lesfichiersdeconfigurationavecunsimplediteurdetexteetlecompilateurenlignedecommandes.
IlexisteplusieursgrandsIDEJava :Eclipseetsesdiffrentesversions,JBuilder,NetBean...
Eclipseest trspuissant, ildisposedunegrandepanopliedepluginspour linterfaceravecTomcat,pourmanipulerMysql,pourgrerlesfichiersXML,lesJSP,lecodeJavaScript...Enfin,pointimportant,EclipseestunprojetOpenSourcegratuit.
Pourlaralisationdespagesetdesexemples,laversionLombozdEclipseserautilise(Eclipse+ensembledepluginspourJavaEE).CetteversioncompltedEclipseatdveloppeparleconsortiumObjectWeb.
LinstallationseraexpliquepourunsystmeWindowsetpourunsystmeLinux.Vousremarquezalors lintrtdedvelopper en Java, tout est portable et indpendant de la plateforme de dveloppement. Nous vrifieronslinstallation complte de lenvironnement en dployant une application trs simple. Il est essentiel de testerlinstallation avec un petit projet plutt que de rencontrer des problmes ensuite lors de la ralisation dexemplescomplexes.
1.InstallationduJDK(JavaDevelopmentKit)
LeJavaDevelopmentKit(courammentabrgenJDK)estlenvironnementdanslequellecodeJavaestcompilpourtretransformenbytecodeafinquelaJVM(machinevirtuelleJava)puisselinterprter/lexcuter.
La premire tape ncessaire linstallation de lenvironnement est la mise en place des bibliothques dedveloppementJava.Eneffet,avant linstallationduserveurJavaEE, ilest impratifque leJDKsoit installsur lamachineoceluiciserainstall.LeserveurdapplicationsfonctionneenJavaetadoncbesoinluiaussiduJDKpourtravailler.LeJDKfournirauncompilateurJavancessairepourletraitementdesJSP.AvantdinstalleruneversiondedveloppementJava,ilestncessairedevrifiersilesystmeactuelnepossdepasdjuneversiondeJava.
Pourvrifiersi lesystmeactuelpossdeuneversiondeJava, il fautouvrirune invitedecommandesMsDOSetlancerlacommande :java -version
NouspouvonsvoirquelaversionindiquedanscetexempleestJava1.6(ougalementappele6.0).LecompilateurutilisestJ2SE(ilauraittaussipossibledutiliserJavaEE).Sicettecommandenindiqueaucunrsultat,cestqueleJDKnestpasinstallouquelavariabledenvironnementPATHnestpascorrectementconfiguresurlesystme.
Les variables denvironnement sont des raccourcis utiliss par Windows et Linux pour dsigner certainsdossiers(excutables)dudisquedur(ex :pasbesoindesaisir/usr/bin/java/javac,leraccourcijavacsuffit).
Une fois lesvariablesdenvironnement correctement configures, lexcutiondevosapplications serabeaucoupplussimple.
Nous pouvons galement obtenir des informations sur lAPI Java en utilisant sous Windows le panneau deconfiguration.LicneJavaouvreunefentreaveclesongletssuivants :GnralMisejourJavaScuritetAvanc.
a.InstallationsousWindows
Unefoiscesvrificationseffectues,linstallationdeJavaEEseffectuesimplementenexcutantlefichiertlchargsurlesitedeSunMicrosystems(http://java.sun.com/).Leprogrammedinstallationdmarrepuisindiquelestapessuivre.
- 1 - ENI Editions - All rigths reserved
-
LapagesuivantepermetdetlchargerleJDK/JavaEE/JavaSE :http://java.sun.com/javase/downloads/index.jsp
La version Windows Platform denviron 160 Mo permet dinstaller lenvironnement de dveloppement complet.Linstallation ne pose pas de problme particulier, il suffit de double cliquer sur lexcutable tlcharg etlinstallationseffectuetouteseuleaprsavoirindiqulerpertoiredinstallationdesbibliothques.
1Lancementdelinstallation
2Acceptationdesconditions
- 2 - ENI Editions - All rigths reserved
-
3Choixdurpertoiredinstallation
4Findelinstallation
b.InstallationsousLinux
LinstallationsousLinuxncessiteletlchargementdelalibrairieauformat.bin.
Toujourssurlammepage,ilestpossibledetlchargerlaversionduJDKpourLinux.
LapagesuivantepermetdetlchargerleJDK/J2EE/JSE :
https://sdlc5b.sun.com/ECom/EComActionServletjsessionid=BB61072B1EEB17E1232E99D84013FACB
LaversionLinuxPlatform JavaEESDKdenviron150Mopermetune installationsousLinux.Linstallation sous
- 3 - ENI Editions - All rigths reserved
-
LinuxestunpeudiffrentedecellesousWindows.Aprsletlchargementdelabibliothque,ilestncessairedecopiercellecidansunrpertoiredelibrairiesLinux(engnral/usr/local/src).
Exempleaveclejdk1.6.0 :
#mv /home/jdk-1_6_0-linux-i586.bin /usr/local/src
Puis,ilfautrendrecepaquetexcutable.
#chmod +x jdk-1_6_0-linux-i586.bin
Linstallationpeuttreensuitelance.
#./jdk-1_6_0-linux-i586.bin
Toutlerpertoireestalorsdcompactdans/usr/local/src.
IlfautmaintenantdplacerlerpertoireduJDKdansunrpertoirefinaldinstallation(engnral/usr/local).
#mv /jdk.6.0_00 /usr/local
Ilfautensuitesedplacerdanslerpertoire/usr/local.
#cd /usr/local
Unlien(raccourci)appeljdkpeuttrecr,ilseraplussimpledaccsquelenomcompletjdk.6.0_00.
#ln -s jdk.6.0_00 jdk
IlresteplacerlesdroitssurlesfichiersdelalibrairieJava.
#chmod 755 jdk.6.0_00
Javaestdsormais installmais il fautencoreparamtrer lesvariablesdenvironnementpourpouvoir lancer lescommandes directement (sans indiquer le chemin complet, ex : /usr/local/jdk/java). Dans ltat actuel nous nepouvonspaslancerJavadirectement :
#java -version (not found...)
Ilexisteplusieurssolutionspourcela :
1.diterlefichier/etc/profileetajouterlalignesuivantedanslefichier.
PATH=$PATH:/usr/local/jdk/bin
2.diterlefichier/root/.bashrcetajouterlalignesuivantedanslefichier.
export PATH=$PATH:/usr/local/jdk/bin
3.diterlefichierdelutilisateurconnectetajouterlalignesuivantedanslefichier.
export PATH=$PATH:/usr/local/jdk/bin
4.ExporterlavariabledenvironnementPATHdirectementenlignedecommandedansunshell.
export PATH=$PATH:/usr/local/jdk/bin echo $PATH (pour vrifier)
Pourquelesmodificationssoienteffectives,ilfautfermertouteslesfentresetouvrirunnouveauterminal.
Attention, par la suite nous raliserons un script de dmarrage de Tomcat (serveur dapplications) quiexporteraluimmelesvariablesdenvironnement.
VouspouvezdsormaisvrifierquelinstallationduJDKsousLinuxestoprationnelle.
- 4 - ENI Editions - All rigths reserved
-
#java -version
- 5 - ENI Editions - All rigths reserved
-
InstallationduserveurdapplicationsJavaEE(Tomcat)
UnserveurJavaEEestaussiappelserveurdapplications(applicationssignifiantapplicationsWeb).LutilisationdunserveurJavaEEestobligatoirepourledveloppementdepagesWebdynamiquesenJavaEE.
UnserveurHTTPclassiquereoitdesrequtesHTTPetrenvoiedesrponsesmaisilneconnatpaslesServlets,lesJSP...IlestdoncessentieldutiliserunprogrammeappelmoteurdeServletsquiestcontenudansleserveurJavaEEetquipermetdepalliercemanque.Danslaplupartdescas,leserveurJavaEEcontientgalementunserveurHTTPmais il nest pas aussi puissant que les serveurs spcialiss du monde informatique pour les contenus statiques(Apache).
Ilexisteungrandnombredeserveursquirpondentcettenorme(Tomcat,WebSphere,JRun,JBoss,GlassFish...).Nous utiliserons le serveur ApacheTomcat de la fondation Apache. Il est trs important de comprendre que cesserveurs servent uniquement fournir une plateforme dexploitationde lAPI Java EE fournie par SUN.Donc, si leserveur rpond la norme et au standard Java EE, le choix na alors que peu dimportance. La diffrence seraobservedunpointdevuerapidit,scurit,facilitdutilisation,monteencharge,gestionoupasdesEJB...
LesversionsmajeuresdeTomcatcorrespondenttoutesuneimplmentationderfrencedestechnologiesServletetJSP.VoiciunbrefrappeldesrelationsentrelesversionsdestechnologiesJavaEEetlesversionsdeTomcat.
Commeindiquprcdemment,ilestimpratifqueleJDKsoitdjinstallavantlinstallationduserveurdapplications.
LeserveurTomcat6estdisponibleenlibretlchargement.LesversionsbinairesdeTomcatsontenfaitconstituesdeclassesJavaetsontdoncportablesentrelessystmesdexploitationetlesplatesformesmatrielles.
Ilexistetroisformatsdarchivesbinaires :
LesarchivesauformatZIP :unefoislerpertoiredcompress,leserveurestdirectementoprationnelaprsconfiguration.Ceformatestintressantpourlesadministrateurscarilpermetunemisejourrapideencasdechangementdeversionduserveur.Deplus, laconfigurationdusystmenestpasmodifie, linstallationesttransparente.
LesarchivesauformatTAR.GZ :cestleformatlepluscommunsouslessystmesLinux.
Les installeurs Windows : au format EXE permettent une installation partir dun assistant qui ralisegalementlaconfiguration.CestlamthodelaplussimplepourinstallerTomcatsurlesystmedeMicrosoft.
1.Quelleversionchoisir?
Tomcat 6.X est une adaptation de Tomcat 5.5 pour Java 5.0 (JDK 1.5) avec des amliorations concernant lesperformances. La version 1.5 de Java a vu apparatre de nombreusesmodifications dans le langage. Tomcat 6.XrequiertdoncauminimumunemachinevirtuelleJava1.5pourfonctionnercorrectement.
Pourleguideetleprojet,laversiondeTomcatutiliseestlaversion6.0.16.
LinstallationdeTomcatversion6supposeletlchargementdelabibliothquedepuislesitedelafondationApacheladressesuivante :http://tomcat.apache.org/
Lasectiondownloadpermetdechoisirlaversionadaptenosbesoins.LesliensCoresontalorsutilissauformatsouhait (WindowsService Installerparexemple)afinde tlchargerTomcatpourWindows (http://apache.miroirfrancais.fr/tomcat/tomcat6/v6.0.16/bin/apachetomcat6.0.16.exe).
Une fois la bibliothque tlcharge, il est demand dindiquer le chemin de la JVM (Java Virtual Machine) sur lesystme(dolimportancedinstallerleJDKavantleserveur).
SpcificationsJ2EE APIServlet APIJSP ApacheTomcat
J2EE1.2 2.2 1.1 3.X
J2EE1.3 2.3 1.2 4.X
J2EE1.4 2.4 2.0 5.X
JavaEE5.0 2.5 2.1 5.X6.X
InstallationsousWindows
- 1 - ENI Editions - All rigths reserved
-
Tomcat6utiliseuncertainnombredeportsTCP/IPpourfonctionner.Ilfautdoncsassurerquecesportsnesontpasdjutiliss:Port8080 :portduconnecteurHTTPTomcat,Port8005 :portdarrtduserveur,
Port8809 :portduconnecteurJK.
LinstallationaveclinstalleurWindowspermetdecrerlesentresdanslemenuDmarrerdeWindowsainsiquunservice pour Tomcat permettant, si ncessaire, le dmarrage de celuici au lancement du systme. Linstalleurpropose galement de crer un utilisateur Tomcat pour administrer et grer les applications (un superadministrateur).
1Lancementdelinstallation
2Acceptationdesconditions
- 2 - ENI Editions - All rigths reserved
-
3Crationdelutilisateur(UserName :admin,Password :admin)
4Suitedelinstallation
- 3 - ENI Editions - All rigths reserved
-
5Findelinstallation
Aprslinstallation,lefonctionnementduserveurpeuttretestenlanantlemoniteurTomcatsitudanslemenudmarrer.Lemoniteurselancedanslesystray(barredestchesctdelhorlogeWindows)avecuneicnerouge.Leservicedemonitoringestlancmaisleserveurpasencore.PourrellementlancerleserveurTomcat,ilfautsoitdoublecliquersurlicnesoitfaireunclicdroitetstartservice.
Danscettefentredemonitoring,TomcatpeuttredmarrencliquantsurStart,stoppavecleboutonStop...Lesautresongletsdelafentrepermettentdegrerleslogs,leJDKassociauserveur,lelancementaudmarragedelamachine,lesoprationsdarrtduserveur...
Afindevrifierque leserveurestcorrectement installetoprationnel (capabledexcuterdesServletsetpages
VrifierqueleserveurJavaEEestactif
- 4 - ENI Editions - All rigths reserved
-
JSP),nouspouvonslancerunnavigateuretsaisirladressesuivante :http://localhost:8080/
Lenomlocalhostcorrespondladresselocaledelamachine(leserveurdelamachinelocale)etleport8080estleportHTTPpourTomcat.
Suivantleserveurutilis(Tomcat,JRun...)lefonctionnementestidentique,seulleportdaccsHTTPchange(8080,8200...).LelienTomcatManagerdumenupermetdegrerlesdiffrentesapplicationsdployessurleserveur.Uneauthentificationestncessaire.Lescoordonnes(identifiantetmotdepasse)correspondentcellessaisieslorsdelinstallationduserveur(UserName :admin,Password :admin).
Il peut tre intressant dinstaller la partie administration de Tomcat. Pour cela, il faut tlcharger le ZIPAdministrationWebApplication(http://tomcat.apache.org)etdcompressercefichierdanslerpertoiredinstallationde Tomcat. Il sera alors possible daccder la partie administration du serveur ladresse suivante :http://localhost:8080/admin.
Pourvrifier le fonctionnementduserveur,nouspouvons lancer lesexemplesprsents,pardfaut,sur leserveuravecdesServletsetdesJSP.
PourlinstallationsousLinux,voirlechapitreLeserveurdapplicationsApacheTomcatconsacrTomcat.
- 5 - ENI Editions - All rigths reserved
-
Installationdelenvironnementdedveloppement(IDE)Eclipse
1.Prsentation
Eclipseestlenvironnementdedveloppement(spcialispourlelangageJava)quiserautilisdanscetouvrage.Lechoix dEclipse repose essentiellement sur sa gratuit, sa facilit dutilisation, sa puissance de dveloppement etsurtout ses nombreux plugins (bibliothques additives). Il existe actuellement beaucoup de versions dEclipse debase(versions2.1,3.X).LaversionutilisedanscetouvragecorrespondEclipse3.3Europa.
2.Installation
Eclipse a t dclin en plusieurs versions spcifiques pour des dveloppements orients. Par exemple, pour ledveloppement Java EE, la version Lomboz dEclipse dveloppe par le consortium ObjectWeb(http://www.objectweb.org/)estactuellement lune des plus pousses et stables (parseurXML, syntaxe JSP,CSS,HTML,XHTML...).
LaversionutilisedeLombozregroupeEclipseetlespluginspourledveloppementJavaEE.
Laversiontlchargeestlasuivante :http://lomboz.objectweb.org/downloads/drops/R3.3200710290621/
IlexisteuneversionpourWindowsetuneautrepourLinux.Ilestimportantdetlchargerleprojetcomplet(LombozCompleteInstallation)afindedisposerdunsystmerobusteetstable.
Linstallationneposepasdeproblmeparticulier.Lefichiertlchargauformat.zipdoittredcompressdanslerpertoireonoussouhaitonsinstallerEclipse/Lomboz.Commepourleserveurdapplications,ilestimportantdebieninstaller avant lIDE un JDK Java. Lors de linstallation dEclipse, il sera alors demand de prciser le rpertoiredinstallationduJDK.
SiaulancementdeWindowsnousobtenonsunefentrederreurdecetype : JVMTerminated.Exitcode=1..., il fautalorssupprimerlerpertoire.metadataquisetrouvedanslerpertoiredesprojetsdEclipse(Workspace)etrelancerlIDE.
Lefichiertlchargauformat.tar.gzdoittrecopidanslerpertoiredessources.
#cp lomboz.tar.gz /usr/local/src
Ilfautensuitedzipperetdtarrercettearchive.
#gunzip lomboz.tar.gz
Unrpertoirenommlombozestalorscr.Ilfautdplacercerpertoiredans/usr/local.
#mv -r lomboz /usr/local/lomboz
Ilfautenfinpositionnerdesdroitscorrectssurlesfichiers.
InstallationsousWindows
InstallationsousLinux
- 1 - ENI Editions - All rigths reserved
-
#chown -R tomcat:tomcat /usr/local/lomboz
NouspouvonsensuitelancerlIDEEclipse.
#/usr/local/lomboz/eclipse&
Le lancement dEclipse est donc effectu en tapant la commande shell adapte (depuis le rpertoire dinstallationdEclipseouaveclechemincomplet).
#eclipse -vm /usr/local/jdk
CettecommandepermetdelancerEclipseenprcisantlerpertoiredinstallationduJDK.Pardfaut,lesprojetssontstocks dans le rpertoire workspace situ dans le rpertoire dEclipse. Il est galement possible de modifier ceparamtreavecloptiondata.
#eclipse -data /home/lafosse/mesprojets
3.LespluginsEclipse
Un plugin est un composant logiciel additionnel qui permet un logiciel principal dapporter de nouvellesfonctionnalits.IlexisteunemultitudedepluginsplusoumoinsintressantsetfiablespourEclipsequisontclasssparcatgorie(J2EE,graphiques...)cetteadresseURL:http://www.eclipseplugincentral.com
4.LancementdEclipseetparamtrageduserveurJavaEE(Tomcat)
Au lancementdEclipse,unsplashscreen(crandattente)estaffichetpermetdechargerenarrireplan les trsnombreuseslibrairiesdelenvironnement.
Ilfautensuitevaliderleworkspace(rpertoiredetravail)etlenvironnementsouvre.
- 2 - ENI Editions - All rigths reserved
-
EclipsepossdeunplugindveloppparlasocitSYSDEOquipermetdegrerleserveurdapplicationsTomcat.Ceplugin permet de disposer dune barre doutils et de dmarrer, arrter et redmarrer Tomcat directement depuisEclipse. Linstallation est trs simple, il suffit de tlcharger le plugin EclipseTomcat cette adresse :http://www.eclipsetotale.com/tomcatPlugin.html
IlestimportantdechoisirlepluginquicorrespondlaversiondEclipseinstalle.Pourlutilisationdeceguideetledveloppementduprojet,lepluginutilisesttomcatPluginV321.zip.
Unefoisletlchargementtermin,ilfautdcompressercefichierdanslerpertoiredespluginsdEclipse(/lombozeclipe3.3/plugins/).
AvantlinstallationdunnouveaupluginEclipse,ilestimportantdefermerlenvironnementdedveloppement,dinstallerlepluginetderelancerlenvironnement.
Lorsdupremierlancement,ilestimportantdeparamtrercorrectementlIDEavecleserveurJavaTomcatetdevrifierleJDKutilis.PourcontrlerTomcatdepuisLombozetviterdetoujoursrechargerlespages,dmarrer/arrterTomcataveclemenudmarrer,ilfautraliserlesoprationssuivantes :MenuWindowsPreferencesTomcat.
Dans la fentreprincipale, il faut indiquer la versiondeTomcatutilise (Version6.x), le rpertoiredinstallationdeTomcatet lesdclarationsdecontextes.Lesdclarationsdecontextespermettentdeprcisersiunseulfichierestutilispourdclarer lesapplicationsousiaucontraire, ilyaunfichierparapplication.Ilestprfrabledutiliserunfichierparapplicationoucontextepourdesraisonspratiquesdemaintenabilit.
InstallationduplugindegestionduserveurTomcat
- 3 - ENI Editions - All rigths reserved
-
Dans la fentre Application Tomcat Manager, il faut vrifier que lURL est bien http://localhost:8080/manager etindiquerlidentifiantetlemotdepasseTomcat(ceuxutilisslorsdelinstallationduserveur,pardfaut :UserName :adminPassword :admin).
Enfin,linstallationdelenvironnementesttermineenvrifiantlacompatibilitetlaversionduJDKutilisparEclipse :WindowsPreferencesJavaCompiler.
- 4 - ENI Editions - All rigths reserved
-
Danslafentre,ilestvisiblequelecompilateurJavaJDKutilisestlaversion6.0(JDK1.6).NouspouvonsdsormaisrelancerEclipseetobserverlanouvellebarredoutilspropose.
5.Enrsum
Ce chapitre nous a prsent les conventions utilises dans ce guide et au sein de Java ainsi que la gestion delencodageenJava.
LaplateformeJavaEEatexpliqueendtailainsiquesesservicesassocistelsquelesServlets,JSP,EJB,JDBC...Dansuntroisimetemps,lesarchitecturesWebonttprsentesafindemontrerlapertinencedunchoixphysiqueavantledveloppementdunprojet.
Enfin, lenvironnement Java EE a t mis en place avec linstallation du JDK Java, du serveur dapplications, delenvironnementdedveloppementetduparamtragedelensemble.
- 5 - ENI Editions - All rigths reserved
-
QuestcequeTomcat?
1.Prsentationetdfinition
ApacheTomcatest leserveurdapplicationsJavaduprojet Jakartade la fondationApache.Ceserveur libre,souslicenceApachepermetdexcuterdesapplicationsWebdveloppesaveclestechnologiesJava(Servlets,JSP...).
ApacheTomcattrouvesesoriginesautoutdbutdelapparitiondestechnologiesServletsetJSPJavalorsqueSunMicrosystemsdcidededonnerlecodedesonserveurJavaWebServerlafondationApache(1999).Aujourdhui,TomcatestpourSunMicrosystems,leserveurderfrencepourlestechnologiesJavaEEServletetJSP.TomcatestunmoteurdeServletsfiable,volutifetadaptlutilisationprofessionnelle.Ilestactuellementutilisdanslemondeentieretmisenapplicationauseindedomainestrsvaris.
2.LafondationApache
LeserveurWebApacheatdveloppparRobMcCoolen1994.LapremireversiondeceserveurWebestrenduedisponibleenAvril1995souslenomdApache(APatchyServer).Aujourdhui,leserveurWebApacheestleserveurleplusutilisdelaplante.En1999,lesdveloppeursloriginedApachefondentlApacheSoftwareFoundation.Cetteorganisationbutnon lucratif dveloppedenombreuxprojetset logiciels libres (le serveurTomcat,des librairiespourledveloppementInternet,leserveurWebApache,desbibliothquesdebalises...).
3.LeprojetJakarta
Jakarta est un des trs nombreux projets de la fondation Apache. Jakarta divise ses projets en trois grandescatgories :
lesserveursdapplications
lesbibliothques,outilsetAPI
lesframeworks.
LeserveurdapplicationsTomcatappartientlapremirecatgoriedesprojetsApache.Parmilesautresprojets,ilya :
JMeter :outildemesuredeperformancesdesapplicationsWeb
Log4J :bibliothquedegestiondesfichiersjournaux(logs)ettracesdeprogrammation
Struts :leframeworkdedveloppementWebenJavaleplusclbre
ANT :loutildautomatisationdesapplicationsWeb
Commons :unensembledebibliothquesdeprogrammationJava.
Actuellement,leprojetTomcataprisunetelleampleurquilnestplusconsidrcommeunsousprojetJakarta(delacatgorieserveursdapplications)maiscommeunprojetcompletdnommApacheTomcat.
4.volutionsdeTomcat
LapremireversiondeTomcatestlaversion3.XquiestlimplmentationdestechnologiesServlets2.2etJSP1.1.CetteversionatconuepartirducodesourcedonnparSunMicrosystemslafondationApache.partirde2000,leserveuratcompltementmodifietdonnealorsnaissancelaversion4.X.LeserveurpossdealorsunnouveaumoteurdeServletsbaptisCatalina(Servlets2.3etJSP1.2).
Tomcat5.XestapparurcemmentetimplmentelesServlets2.4etJSP2.0.Cetteversionapportedesnouveautsauniveaudumonitoring(intgrationdeJMXJavaManagementExtension)ainsiqueplusieursoptimisations(mmoire,
- 1 - ENI Editions - All rigths reserved
-
configurationduserveur...).Tomcat5.XintgrelesupportdelaversionJava5.0.LadernireversiondeTomcat6.XpermetlutilisationdeJava6.0.CetteversionreposesurlesServlets2.5etJSP2.1.
Le serveur JakartaTomcat est dveloppdepuis sespremiresversionsen Java. LesapplicationshbergesparTomcat sont ellesmmes crites en Java, lintgration est alors totale et robuste. Aujourdhui, la version 6.X deTomcatsaittirerprofitdesamliorationsapporteslaplateformeJavaSE,notammententermedeperformance.
- 2 - ENI Editions - All rigths reserved
-
InstallationdeTomcat
1.Quelleversionchoisir?
Actuellement, Tomcat propose une version 6.X stable qui est supporte par la majorit des environnements dedveloppement.Laversion6.XdeTomcatutiliselaspcificationJavaEE5ainsiquelAPIServlet2.5etlAPIJSP2.1.CestcetteversiondeTomcatquiserautilisetoutaulongdeceguideetquiestparfaitementgreparEclipsepourlesoprationsdedmarrage,darrtetde redmarrageduserveur.LeserveurTomcat6.Xestdisponibleen libretlchargementsurlesiteInternetdApachecetteadresse :http://tomcat.apache.org
2.InstallationsousWindows
Pour linstallation sous Windows, vous pouvez vous rfrer au premier chapitre de ce guide de dveloppementdapplicationsWebenJava.Ladmarchesuivreestexpliqueendtailavecuneprogressiontapepartape.
3.InstallationsousLinux
Commeindiqudanslepremierchapitredeceguide,leserveurdapplicationsabesoindunJDKJavapourfonctionnercorrectement.IlestdoncncessairedavoirinstallunJDK1.5ouJDK1.6fonctionnelavantdeprocderlinstallationduserveurTomcat.LaversiondeTomcatutilisedansceguideestapachetomcat6.0.16etpeuttretlchargecetteadresse :http://tomcat.apache.org/download60.cgi.
Lorsdelinstallation,nousallonsprparerleserveurdefaoncequilpuissedialoguerparlasuiteavecleserveurWeb.LesystmeLinuxutilistoutaulongdeceguideestuneversionDebian(Etch)stable.
Avanttoutechose,ilestncessairedemettrejourlespaquetsinstalls.
#apt-get update #apt-get upgrade
Apacheserautilisparlasuitelorsdudploiementdunexemplecompletsurunserveurenproduction.
Les serveurs dj installs sur le systme sont dsinstalls afin de paramtrer lensemble de manire stable etuniforme.
#apt-get remove --purge apache #apt-get remove --purge apache2 #apt-get remove --purge apache-perl #apt-get remove --purge apache-ssl
Nousallonsensuite,dtruirelesrpertoiresdesprcdentesinstallations.
#rm -rf /etc/apache #rm -rf /etc/apache2 #rm -rf /etc/apache-ssl #rm -rf /etc/apache-perl
NousprocdonslinstallationduserveurWebApache(1.3ou2.0auchoix).
#apt-get install apache
LtapesuivanteconsisteinstallerleJDK1.5ouJDK1.6Java.IlexistedetrsfortesdpendancesdelaplateformeJavaEE5etTomcat6.XavecJava5.IlestdoncimpratifdinstallerunserveurTomcat6surunJDK5.0auminimum.
PourlinstallationdujdksousLinux,vouspouvezvousrfrerauchapitreObjectifsetspcificationsdeJavaEEdeceguidededveloppementdapplicationsWebenJava.
Vrifierlespaquetsinstalls
MiseenplaceduserveurWebApache
InstallationduJDK1.5/1.6
- 1 - ENI Editions - All rigths reserved
-
LinstallationdeTomcatpartirdunearchiveestassezsimple.IlestncessairedetlchargersurlesitedApacheTomcat larchive du serveur au format .bin. La version utilise pour ce guide est la suivante : apachetomcat6.0.16.tar.gz.
Aveclaversion6.0.XdeTomcat,lapartieadministrationnestpasinclusemaisfaitpartieduneoption.Ilestdonc important de tlcharger galement la partie administration du serveur : apachetomcat6.0.16
admin.tar.gz.
Aprsletlchargement,ilfautcopierlarchivedanslerpertoiredessourcesLinux(/usr/local/src).
#cp apache-tomcat-6.0.16.tar.gz /usr/local/src
Ilfautensuitedtarrerlarchivedanslerpertoire/usr/local.
#tar -xzf apache-tomcat-6.0.16.tar.gz -C /usr/local
IlfautmaintenantcrerunlienpourrfrencerTomcatdirectement.
#cd /usr/local #ln -s apache-tomcat-6.0.16 ./tomcat
IlseradoncpossiblederfrencerTomcatdecettemaniresanssesoucierdelaversionutilise.
#cd /usr/local/tomcat
Dsormais, ilestncessairedecrerunutilisateursystme,ddiTomcatetdindiquerquecetutilisateurest lepropritairedeTomcat.
#groupadd tomcat #useradd -g tomcat -d /usr/local/tomcat tomcat #chown -R tomcat:tomcat apache-tomcat-6.0.16 #chmod 770 apache-tomcat-6.0.16
Leserveurdebaseestdsormaisoprationnel.Nouspouvonsalorsvrifiersonfonctionnementenlanantleserveuretenouvrantunnavigateurladressesuivante :http://localhost:8080/.
#/usr/local/tomcat/bin/startup.sh
Pourunfonctionnementcorrectetafindviterdepositionnerlesvariablesdenvironnementchaquedmarrageoudanslesfichiersspcifiques,ilestncessairedecrerunscriptdedmarrageetdarrtdeTomcat.
#! /bin/bash # LAFOSSE JEROME NAME="apache-tomcat6.0.16" #variables denvironnement TOMCAT_HOME=/usr/local/tomcat CATALINA_HOME=/usr/local/tomcat JAVA_HOME=/usr/local/jdk CATALINA_OPTS="-Dfile.encoding=iso8859-1" TOMCAT_USER=tomcat LC_ALL=fr_FR #exporter les variables export TOMCAT_HOME CATALINA_HOME JAVA_HOME CATALINA_OPTS TOMCAT_USER LC_ALL cd $TOMCAT_HOME/logs case "$1" in start) echo -ne "Demarrer $NAME.\n" /bin/su $TOMCAT_USER $TOMCAT_HOME/bin/startup.sh ;; stop) echo -ne "Arreter $NAME.\n" /bin/su $TOMCAT_USER $TOMCAT_HOME/bin/shutdown.sh
InstallationdeTomcat6.0.X
- 2 - ENI Editions - All rigths reserved
-
;; *) echo "Usage : /etc/init.d/tomcat {start|stop}" exit 1 ;; esac exit 0
Ilestaussipossibledemodifierlgrementlescriptafindegrerlapartieredmarrageduserveuretainsidviterderaliserdesarrts/dmarragespourunsimpleredmarrage.
... restart) echo -ne "Redemarrer $NAME.\n" /bin/su $TOMCAT_USER $TOMCAT_HOME/bin/shutdown.sh sleep 7 /bin/su $TOMCAT_USER $TOMCAT_HOME/bin/startup.sh ;; ...
Il est ncessaire de copier ce script dans le rpertoire ddi aux services de la machine Linux et de le rendreexcutable.
#cp tomcat /etc/init.d/ #chmod 755 /etc/init.d/tomcat
Lepropritairedecescriptdoittrelesuperutilisateurrootcarcestleseulutilisateurquialedroitdedmarrerdesservices.
#chown root:root /etc/init.d/tomcat
Nouspouvonsdsormaistesterlefonctionnementduserveurenutilisantlescommandessuivantes :
#/etc/init.d/tomcat start #/etc/init.d/tomcat stop
Pour activer le script au dmarrage du systme afin de lancer Tomcat ds lamorage du systme, il est possibledutiliserlacommande :#chkconfig - -add /etc/init.d/tomcat
cestadedelinstallationleserveurTomcatestoprationnel.Ilestdsormaispossibledelancerunnavigateuretdeseconnectersurlapagedaccueilduserveurladressesuivante:http://localhost:8080/
Ilestsouventtrsutiledesuivrelestraceslorsdundmarrageouarrtduserveur.Demme,lesfichiersjournauxpermettentderenseignerlesadministrateurssurlesproblmesdeconnexionauSGBD,lesexceptions,lestracesdeprogrammation...LesfichiersjournauxdeTomcatsontstocksdanslerpertoire :/usr/local/tomcat/logs.
Unebonnehabitudeestdouvrirenpermanenceuneconsoleaveclacommandesuivantequitraceentempsrellefichierdelogsduserveur.
#tail -f /usr/local/tomcat/logs/catalina.out&
Suivrelesfichiersjournaux
- 3 - ENI Editions - All rigths reserved
-
LenomdonnauservicedeTomcat6.0.X(moteurdeServlets)estCatalina.
4.MiseenplacedelapartieadministrationdeTomcat
Pardfaut,lapartieadministrationduserveurnestpasinstalle.SinouscliquonssurlelienTomcatAdministrationouquenousaccdons ladressesuivante :http://localhost:8080/admin/ lemessagesuivantestaffich :Tomcatsadministrationwebapplicationisnolongerinstalledbydefault.Downloadandinstallthe"admin"packagetouseit.Nousallons donc procder linstallation de la partie administration en utilisant la librairie apachetomcat6.0.16admin.tar.gz.
IlestncessairedecommencerlinstallationendtarrantlarchivedanslerpertoiredessourcesLinux.
#tar -xzf apache-tomcat-6.0.16-admin.tar.gz /usr/local/src
Lerpertoireapachetomcat6.0.16vatrecr.Ilfautalorscopiertoutlecontenudecerpertoire(quipossdeplusdefichiersquelaversiondorigine)danslerpertoiredinstallationdeTomcat.
#cd /usr/local/src/apache-tomcat-6.0.16 #cp -r * /usr/local/tomcat/
Leserveurestpresqueoprationnel,ilfautjusteremettrelesbonsdroitssurlesfichiersetrpertoiresetredmarrerleserveur(arrtpuisdmarrage).
#chown -R tomcat:tomcat /usr/local/apache-tomcat-6.0.16 #chmod 770 apache-tomcat-6.0.16 #/etc/init.d/tomcat stop #/etc/inid.t/tomcat start
Nouspouvonsdsormaisnousconnecterladressesuivantehttp://localhost:8080/admin/maisilestncessairedecrerunutilisateurmanagerTomcat.
Pourcela,ilestncessairedditerlefichier :/usr/local/tomcat/conf/tomcatusers.xml.
#vi /usr/local/tomcat/conf/tomcat-users.xml
Lalignesuivanteestajoute,ellepermetdecrerunutilisateuraveclidentifiantadminetlemotdepasseadminpuisonredmarreleserveur.
#/etc/init.d/tomcat stop #/etc/init.d/tomcat start
En fait, lapartieadministrationdeTomcatestuneapplication/webapp fournie sous formede fichiers .tarou .gz.Laseulediffrenceavec lesautreswebappsestque leprojetnestpas livrsous la formedune
archive.wardirectementdployable.Ilfautdonccopierlesfichiersdeconfigurationaubonendroit.
Pour viter certains problmes au dmarrage du serveur, il est ncessaire dditer lefichier /usr/local/tomcat/conf/server.xmletdemettreencommentaire la lignesuivantequiestappeleAPR
pour Apache Portable Runtime et qui empche parfois Tomcat de fonctionner correctement :
5.AugmenterlammoirealloueTomcat
Tomcatestdveloppen langageJavaetcommetoutprogrammequiutilisece langage, ilestassezgourmandentermedemmoire.IlestdoncparfoisncessairedaugmenterlammoirealloueTomcatafinquilpuissecompilerplus rapidement les pages et rpondre au plus vite aux requtes clients (mme en phase de dveloppement unserveurrapideestplussouple).
SousWindows
- 4 - ENI Editions - All rigths reserved
-
SousWindows,lammoirealloueTomcatpeuttreparamtreaveclaconsoledegestionsituedanslesystray.IlfautouvrirlongletJavaetparamtrerleschampsInitialmemorypooletMaximummemorypool.Pourlutilisationdeceguideetdesesexemples,200MoserontallousTomcat.
Une autre solution pour la gestion de la mmoire alloue Tomcat est dutiliser Eclipse et longletWindows Preferences.Dans lapartie rserveTomcat, ilestpossibledeprciser lammoire initiale (Xms)et lammoiremaxi(Xmx).Danscetexemple,200MosontallousTomcat.Ilestimportantdenepasallouertropdemmoireparrapportauxpossibilitsdelamachineafindviterdesblocageslorsdedploiements/codages.
Pour augmenter la mmoire alloue Tomcat sous Linux, il est ncessaire dditer le fichier deconfiguration/usr/local/tomcat/bin/catalina.shetdajouterlalignesuivanteendbutdefichier.Danscetexemple,2GodeRAMsontallousTomcatpourunserveurenproduction.
JAVA_OPTS="-Xms2048m -Xmx2048m"
SousLinux
- 5 - ENI Editions - All rigths reserved
-
CouplerTomcatetleserveurWebApache
1.Prsentation
Sinousnesouhaitonspasinstallerunserveurenproduction,cettepartieestalorsfacultative.Eneffet,ellenepermetpasdamliorerlenvironnementdedveloppementmaiselleestrecommandepourundploiementsurunserveurenproduction.
Dans une architecture en production, il est recommand dutiliser un serveur Web en frontal dun serveurdapplications. Ces recommandations sont galement appliques dans le cas de lutilisation dun conteneur WebcommeTomcat.LutilisationdunserveurWebenfrontalestncessairepourdesraisonsdeperformance,descuritetdeconfigurabilit.
Performance :lemoteurHTTPdeTomcatestbeaucouppluslentquelemoteurHTTPdunserveurWebddi cette tche. Le serveurWeb permet de dlivrer les contenus statiques comme les pagesHTML, le codeJavaScript, les images du site, les feuilles de style... Tomcat sera utilis alors pour servir uniquement lescontenusdynamiquesenJava.
Scurit :leserveurWebestutilisenfrontaletisoleleconteneurWebdInternet.Leconteneurestalorsauplusprsdesdonnesetilestmoinssollicitpourdesservicessimples.
Configurabilit :unserveurWebcommeApachedisposeduneplusgrandepalettedeservices(pointdevueHTP)queTomcat(.htaccess,gestiondesdroits,urlrewriting,alias,annuaire...).
2.UnconnecteurpourlintgrationduserveurWeb
LintgrationdunserveurTomcatavecunserveurWebsefaitautraversdunconnecteurconfigurauseindeTomcatetduneextensionajouteauserveurWeb.UnconnecteurTomcatestuneclasse Javaqui supporteunprotocolerseauspcifiqueetpropritaire.LalibrairiedextensionduserveurWebestchargedynamiquementparleserveurWeblorsdesondmarrageetpermetundialogueentrelesdeuxserveurs.Plusieursconnecteursexistentcommelemodulemod_jserv pour le serveur JServ et lemodulemod_webapp pour Tomcat 4.X. Cesmodules sont dsormaisabandonnsauprofitduconnecteurJK.
LeconnecteurJKutiliseleprotocoleAJP(ApacheJServProtocol)danssaversion1.3(AJP13).Ceconnecteurestplusperformant mais il offre galement le support de plusieurs systmes dexploitation, de plusieurs serveurs Web(Apache,IIS,LotusDomini)etduprotocoleHTTPS.CeconnecteurestaujourdhuilarfrencepourlecouplagedunserveurdapplicationsavecunserveurWeb.
a.Fonctionnement
LeconnecteurJKutilisedoncleprotocoleAJP13etncessitelinstallationdumodulemod_jkpourfonctionneravecApache.LeconnecteurJKpermetainsidutiliserleserveurWebenfrontaletdedlguercertainestchesauserveurTomcat.
Les requtes des clients sont envoyes au serveur Web Apache qui retourne alors directement les contenusstatiquescommelesimages,JavaScript,pagesHTML,...Pourlesrequtesavecducontenudynamique,lemodulemod_jkduserveurWebestalorssollicitetdlguecertainestchesauserveurdapplicationsTomcat.
LaconfigurationdeTomcatavecunserveurWebutiliselanotiondeworkeroutravailleur.UntravailleurestliuneinstancedeserveurTomcat.UntravailleurestcaractrisparunnomdhteouuneadresseIPetunnumrodeport(commeunesocket/prise).LetravailleurAJP13reprsenteuneinstancedeTomcatenfonctionnementetilestutiliscommepluginpour leserveurApache.Lemodulemod_jkagitalorscommeunrouteurderequtesvers leserveurTomcat.
- 1 - ENI Editions - All rigths reserved
-
b.Installationdumodulemod_jk
LextensiondApachequisupporteleconnecteurJKestlemodulemod_jk.Cemoduleestlivrsousformedebinaires(oucodesource).
Lemodulemod_jkfonctionnesurleport8009deTomcat.Pardfaut,lefichierdeconfigurationdeTomcatserver.xml propose un connecteur AJP13 qui fonctionne sur le port 8009 :
Avantde commencer linstallation, il fautmettreenplace sousLinuxDebian, lepaquetapachedev quipermetdecompilerlesmodulesdApache.
#apt-get install apache-dev
LinstallationdeTomcat6.XavecuneintgrationpourunserveurWebnerequiertaucuneconfigurationparticulire.Pourutilisermod_jk, il fautun connecteur compatible configurdans le fichierserver.xml de linstancede serveurTomcat 6.X. Cette configuration existe dsormais par dfaut avec Tomcat 6.X et propose un connecteur quifonctionnesurleport8009.Ensuite,ilestncessairedetlchargerleconnecteur(ladernireversion)surlesitedApacheTomcat(http://tomcat.apache.org).Leliensuivantestutilis :TheApacheJakartaTomcatConnector.Pourceguide, cest la version jakartatomcatconnectors1.2.15src.tar.gz du connecteur qui a t utilise. LinstallationcommenceencopiantlabibliothquesourcedanslerpertoiredessourcesLinux.
#cp jakarta-tomcat-connectors-1.2.15-src.tar.gz /usr/local/src
Ensuite,larchiveestdtarr(e):
#tar -xzf jakarta-tomcat-connectors-1.2.15-src.tar.gz
Il faut ensuite compiler le fichier source prsent dans le rpertoire /usr/local/src/jakartatomcatconnectors1.2.15src/jk/native.
#./configure -with-apxs=/usr/bin/apxs #make
Loption withapxs permet de prciser lemplacement de la commande apxs qui est utilise pour construire lesmodulesdApache.Unfichiersourcecompilvaalorstregnr.CefichiersourceestalorscopidanslerpertoiredeslibrairiesApache.
#cp apache-1.3/mod_jk.so.0.0.0 /usr/lib/apache/1.3/mod_jk.so
Ilfautalorspositionnerlesdroitscorrectssurlemodule.
#chown root:root /usr/lib/apache/1.3/mod_jk.so #chmod 644 /usr/lib/apache/1.3/mod_jk.so
c.Configurerlemodulemod_jk
IlnousresteconfigurerlefichierdegestiondApachepourquilchargedynamiquementlorsdesondmarragelemodulemod_jk.Pourcela,ilfautditerselonlaversiondApachelefichierhttpd.confoumodules.confetajouterleslignessuivantes :
LoadModule jk_module /usr/lib/apache/1.3/mod_jk.so JkWorkersFile /etc/apache/workers.properties JkLogFile /usr/local/tomcat/logs/mod_jk.log JkLogLevel warn
Lapremireoprationpermetderaliserlechargementdumodulemod_jkdansleserveurApache(LoadModule).LadirectiveJkWorkersFilepermetdespcifierlemplacementdufichierdeconfigurationdumodule.LadirectiveJkLogFileprciselemplacementdunfichierjournalrservaumoduleetladirectiveJkLogLevelindiqueletypedemessagesenregistrsdanscefichier.
Il ne restemaintenant plus qu configurer le serveurWebApache et crer le fichierworkers.properties. Il fautcommencerparditerlefichierdeconfigurationdApache/etc/apache/httpd.confpuisajouterleslignessuivantespournotrehtevirtuel.
- 2 - ENI Editions - All rigths reserved
-
ServerName monserveur.com #les parties statiques de mon application sont gres par Apache Alias /images /usr/local/tomcat/webapps/monapplication/images Alias /css /usr/local/tomcat/webapps/monapplication/css DocumentRoot /usr/local/tomcat/webapps/monapplication #les requtes ne sont transmises Tomcat que pour les servlets et JSP JkMount worker1 JkMount worker1 #pages daccueil autorises DirectoryIndex index.html index.htm index.jsp
Vousremarquezqueleserveurseracapablededfinirlapageindex.jspcommepagedaccueildelapplication.Demme, tous les contenus autres que lesServlets (extension .do)et les JSP (extension .jsp) seront traits par leserveurWebquiestplusappropri.
La directive JkMount est trs importante car cest elle qui permet au serveur Apache daccder aux applicationsTomcat.Ellepermeteneffet,despcifieruntravailleurpourlaccsaucontexte.Ilyauradoncuneredirectionderequtesutilisateurdestinationdutravailleur.Ladirective JkUnMountpermetderaliser linverseetdoncdenepasredirigerlesrequtesutilisateursdestinationderessourcesparticulires.
Exemple :
JkUnMount /usr/local/tomcat/webapps/monapplication/mesimages/*.gif
DautresdirectivesdApachesontutilisablesaveclemod_jk.JkAutoAliaspermetderaliserunaliasdurpertoiredeTomcatsurlerpertoirededonnesApache,JkLogStampFormatpermetdegrerleformatdeladatedanslefichierjournal dumodule, JkExtractSSL permet de transmettre les informations SSL vers le serveur Tomcat (taton pardfaut)...
d.Crerlefichierdeconfigurationdutravailleur
Une fois le fichier de configuration dApachemodifi, il faut ensuite crer le fichier de configuration du travailleurindiquparladirectiveJkWorkersFiledanslefichierdApache.CefichierpermetdegrerlacommunicationentreleserveurWebetleserveurTomcat.Lefichierutilisn