NFP 214 - Systèmes et réseaux répartis Jacques LAFORGUE IPST-CNAM ATELIER 16 I. Objectifs L’objectif de cet atelier est de montrer par un exemple simple, une architecture 3 tiers dite « Http », comme décrite en cours : - le 1er tier est le client léger de type applet s’exécutant dans le navigateur IE - le 2ème tier est constitué de servlets qui s’exécutent dans un serveur HTTP - le 3ème tier est constitué par un serveur applicatif RMI Cet exemple pourra servir de modèle pour la réalisation d’un projet en TP. 2 cas sont implémentés : - le 1er cas utilise un mini serveur Http développé de toute pièce en Java. Ce cas permet de voir et comprendre la base d’architecture du fonctionnement d’un serveur Http - le 2ème cas utilise un vrai serveur Http, Tomcat version 5.0. Le 1er cas permet une exécution suivant 3 architectures : - une architecture main unique (CasMain) - une architecture client-serveur dite lourde (CasRMI) - l’architecture 3 tiers (internet) (CasRMI-HTTP) Ceci permet de démontrer l’utilisation d’une interface qui sépare l’interface IHM de l’applicatif. II. Pré requis Pour le cas 1 et le cas 2, le pré-requis est le JdK java alors que pour le cas 2, il est nécessaire d’installer Tomcat. Tomcat se télécharge librement sur Internet et sa procédure d’installation est largement décrite sur Internet. Il n’y a pas de configuration particulière de Tomcat. III. Recommandations Il n’y a pas de recommandation pour le cas 1 qui est autonome avec son script unique de compilation. Pour le cas 2, les recommandations sont de faire la sauvegarde du répertoire webapps de Tomcat car le script de compilation va y installer les fichiers nécessaires à l’exécution de l’application. page - 1 - NFP 214 - Systèmes et réseaux répartis Jacques LAFORGUE IPST-CNAM Pour plus d’information, lire les fichiers README.txt situés dans chacun des cas. IV. Présentation et concepts L’application consiste en l’exécution d’un programme RMI dont le rôle est de fournir les 2 services suivants : - String getDate() : retourne un texte contenant un préfixe et une date en heure, minute et secondes. - void setPrefixe(String valeur) : change le préfixe du texte. Une IHM affiche ce texte cycliquement (thread) et permet de changer la valeur du préfixe. page - 2 - NFP 214 - Systèmes et réseaux répartis Jacques LAFORGUE IPST-CNAM Architecture RMI : Objet Distribué Prefixe IHM setPrefixe(v) Applicatif getDate() Bus RMI Architecture HTTP : Objet Distribué Prefixe IHM servlet setPrexixe setPrefixe(v) servlet getDate getDate() Internet Serveur HTTP page - 3 - Bus RMI Applicatif NFP 214 - Systèmes et réseaux répartis Jacques LAFORGUE IPST-CNAM V. Architecture des répertoires Entre le cas 1 et 2 l’architecture des répertoires est sensiblement la même. Pour le cas 2, il existe une différence pour les servlets qui doivent être sous l’arborescence classique des programmes web. Cas 1 (CasRMI-HTTP) correspond au cas complet: la racine contient les scripts de compilation et d’exécution ainsi que les sources des programmes main (qui ne sont pas dans des packages) bin répertoire dans lequel sont générés les .class et les .jar cnamp répertoire des sources qui est structuré en 6 répertoires : app package java de l’applicatif applets sources des applets java html les fichiers html ihm package java de l’ihm myhttp package du mini-serveur HTTP servlets sources des servlets www arborescence des fichiers web utilisé par le mini serveur Cas 2 : la racine contient les scripts de compilation et d’exécution ainsi que les sources des programmes main (qui ne sont pas dans des packages) bin répertoire dans lequel sont générés les .class et les .jar cnamp répertoire des sources qui est structuré en 6 répertoires : app package java de l’applicatif applets sources des applets java html les fichiers html ihm package java de l’ihm myhttp package du mini-serveur HTTP servlets sources des servlets Le répertoire servlets est structuré en sous-repertoire web pour chacun des servlets : <nom du servlets> WEB-INF web.xml le fichier de description du servlet classes les .classe du servlet lib packages nécessaires à l’exécution du servlet src sources du servlet Il n’y a pas de répertoire www car les fichiers sont copiés dans la webapps de Tomcat par le script de compilation. page - 4 - NFP 214 - Systèmes et réseaux répartis Jacques LAFORGUE IPST-CNAM VI. Compilations et exécutions Cas 1 - CasMain Pour compiler : compilMain.bat Pour exécuter : runMain.bat Cas 1 - CasRMI Pour compiler : compilRMI.bat Pour exécuter : runOrb.bat runAppXXXServeur.bat runIhmXXXClient.bat Cas 1 - CasRMI-HTTP Pour compiler : compil.bat Pour exécuter : runOrb.bat runAppXXXServeur.bat runHttpd.bat localhost (link sur IE) runIhmXXXClient.bat Cas2_AvecTomcat Pour compiler : compil.bat Pour exécuter : runOrb.bat runAppXXXServeur.bat startup Server Tomcat.bat localhost (link sur IE) runIhmXXXClient.bat exécution de l'adaptateur RMI exécution de l'OD (1 seule exécution) exécution de l'IHM (autant que l'on veut) exécution de l'adaptateur RMI (sur 9100) exécution de l'OD (1 seule exécution) exécution du mini-serveur Http (sur 9200) équivalent à taper dans l'IE l'URL : http://localhost:9200 on peut exécuter le client IHM en parallèle également ATTENTION la var d'env suivante doit être définie dans le fichier avec le path de votre JEE: set JEE_LIB="C:\Sun\AppServer3\lib" (dans mon cas) exécution de l'adaptateur RMI (sur 9100) exécution de l'OD (1 seule exécution) lancement du serveur Tomcat équivalent à taper dans l'IE l'URL : http://localhost:8080 on peut exécuter le client IHM en parallèle également page - 5 - NFP 214 - Systèmes et réseaux répartis Jacques LAFORGUE IPST-CNAM VII. Architecture logiciel, réseau et matériel Dans le cas CasMain: page - 6 - NFP 214 - Systèmes et réseaux répartis Jacques LAFORGUE IPST-CNAM Dans le cas CasRMI : Dans le cas CasRMI-HTTP complet : page - 7 - NFP 214 - Systèmes et réseaux répartis Jacques LAFORGUE IPST-CNAM page - 8 - NFP 214 - Systèmes et réseaux répartis Jacques LAFORGUE IPST-CNAM VIII. Compilation Pour chacun des cas, la compilation se fait tout simplement en exécutant le script compil.bat. Pour comprendre ces scripts, allez voir les commentaires qui s’y trouvent. IX. Exécutions Voir les fichiers README.txt page - 9 -