Cedric Dumoulin
Transcription
Cedric Dumoulin
Cedric Dumoulin Serveur d’application Serveur web Serveurs d’application permet l’exécution d’applications Serveurs web permet l’exécution d’applications web Application 1 Application 2 Application 3 Application 4 Application 5 Application web 6 Application web 7 Un serveur, plusieurs applications http://serverAddr:port/applicationName Une application par défaut http://serverAddr:port/ Application web 8 serveur Serveur == containeur Exécute les applications Fournit le cycle de vie des applications, les services communs, … Application == composant Packagé dans war, ear, rar, jar, … Exécuté dans le containeur Application 1.jar Application 2.ear Application 3.ear Application 4.jar Application 5.ear Application web 6.war Application web 7.war Application web 8.war serveur Serveur Web Principe de Base Le browser affiche la réponse le serveur construit la réponse le browser se connecte au serveur et demande une page le serveur envoie la page demandée votre machine avec un browser web Que ce passe t-il quand vous tapez une url ? http://www.lifl.fr/index.html le browser se connecte au serveur demande la page affiche la réponse serveur web Derrière la Scène (page statique) Le browser découpe l’URL en trois: http: // www.lifl.fr / index.html le protocole http: l’adresse du serveur www.lifl.fr la page demandée index.html Le browser demande à un serveur de nom l’adresse IP correspondant au serveur (ici 134.206.16.244) Le browser se connecte au serveur sur le port 80 (port par défaut) En suivant le protocole http, le browser fait un ‘get’ sur le serveur, et demande la page index.html Le serveur répond en envoyant la page html Le browser interprète les balises html et affiche la page Le Protocole http HyperText Transfer Protocol protocole de communication client-serveur développé pour le World Wide Web inventé par Tim Berners-Lee avec les adresses Web et le langage HTML pour créer le World Wide Web actuellement: http 1.1 Serveurs http : Apache, IIS, Tomcat, Zope Clients http : serveurs web Le Protocole http Les type de requêtes GET C'est la méthode la plus courante pour demander une ressource. Une requête GET est sans effet sur la ressource, il doit être possible de répéter la requête sans effet. HEAD POST Cette méthode ne demande que des informations sur la ressource, sans demander la ressource elle-même. Cette méthode doit être utilisée pour ajouter une nouvelle ressource (un message sur un forum ou un article dans un site). L'URI fournie est l'URI d'une ressource liée à la nouvelle ressource (comme l'URI du forum ou site) et non l'URI de la ressource nouvellement créée. OPTIONS CONNECT TRACE Cette méthode permet d'obtenir les options de communication d'une ressource ou du serveur en général. Cette méthode permet d'utiliser un proxy comme un tunnel de communication. Cette méthode demande au serveur de retourner ce qu'il a reçu, dans le but de tester et effectuer un diagnostic sur la connexion. PUT Cette méthode permet de remplacer ou d'ajouter une ressource sur le serveur. L'URI fourni est celui de la ressource en question. Nécessitent généralement un accès privilégié Cette méthode permet de supprimer une ressource du serveur. Nécessitent généralement un accès privilégié DELETE Le Protocole http Les codes status 5 classes de code status: 1xx Information 2xx Succès 3xx Redirection 4xx Erreur du client 5xx Erreur du serveur Structure d’une application web servlet/jsp Définie par la norme J2EE Doit être respecté application = module Packaging Web Modules Into a .war file Web Archive Kind of zip file Following the previous directory structure Manually Using ant <war …> Packaging Web Modules with Ant <war …> <target name="app-war" description="Build the Web application archive" depends="compile"> <!-- Copy the lib in one single lib --> <war warfile="${build.dir}/${tp.name}.war" webxml="${etc.dir}/web.xml"> <fileset dir="${etc.dir}/" includes="jsp/**" /> <metainf dir="${etc.dir}/tomcat"> <include name="*.xml" /> </metainf> <lib dir="${hibernate.lib.home}"> <include name="hibernate3.jar" /> </lib> <lib id="app-war.libs" dir="${hibernate.lib.home}/lib"> <include name="dom4j-1.6.1.jar" /> <include name="log4j-1.2.11.jar" /> <include name="asm-attrs.jar" /> </lib> </target> </war> <classes dir="${classes.dir}"> <include name="**" /> <exclude name="${tags.pkg}/**.class, ${portal.pkg}/**.class" /> </classes> <classes dir="${properties.dir}" includes="*.properties" /> <classes dir="${etc.dir}" includes="*.properties" /> Administration du serveur Console Par une console d’administration Pas toujours activé par défaut Peux nécessiter un login (login-passwd) Permet: Le déploiement d’application L’arrêt, le démarrage, … La console d’administration est souvent une application du serveur !! Elle peut être enlevée Administration du serveur Fichiers de configuration Le serveur peut être configuré grâce à des fichiers de configuration Ils sont dans un répertoire spécifique du serveur Plusieurs niveaux: Serveur conf/* Application applicationName/WEB-INF/* Déploiement d’application Action de déployer/installer une application web Se fait en mettant l’application dans un répertoire particulier Soit par copie du répertoire Soit par copie de l’archive .war Le serveur se charge de dezipper Soit en faisant pointer le serveur sur un répertoire contenant l’application Ou en utilisant le manager/console d’administration Updating Web Modules 1. Recompile any modified classes. 2. If you have deployed a packaged web module, update any modified components in the WAR. 3. Redeploy the module. 4. Reload the URL in the client. Dynamic Reloading Useful in a development environment, copy the changed JSP or class files into the deployment directory Don’t use in production Resources consuming Depends of the web server check server documentation !!! Arborescence des répertoires du serveurs Exemple : Tomcat bin Contains the startup, shutdown, tomcat, ... scripts. conf Contains various configuration files including server.xml and lib web.xml JAR files placed here are visible both to web applications and internal Tomcat code. This is a good place to put JDBC drivers that are required for both your application and internal Tomcat use (such as for a JDBCRealm) logs This is where Tomcat places it's log files temp webapps This is where we place our web applications. work Automatically generated by Tomcat, this is where Tomcat places intermediate files (such as compiled JSP files) Démarrage / arrêt d’un serveur Exemple Tomcat Déployer les applications bin/startup.sh ou bin/startup.bat Vérifier le bon déroulement dans la console ! Les erreurs de démarrage entraînent souvent des erreurs d’execution exécution … bin/shutdown.sh ou bin/shutdown.bat Applications dynamique avec JSP Exemple Tomcat - Jasper Tomcat transforme les JSP en Servlet Les requêtes sont traitées par le servlet correspondant à la page JSP Moteur : Jasper c’est un servlet il traite les *.jsp déclaré dans $TOMCAT/conf/web.xml paramétrable ex : keepgenerated=true Execution des JSP : principe de base 2 check page 1 sample/hello.jsp request tomcat (jasper) hello.jsp 2.1 generate hello.java (servlet) 3 requeste include 4 response 2.3 compile hello.class (servlet) Class loader hierarchy Where to put my Jar ? Why my Jar is not visible ? Why Tomcat use the wrong Jar ? Because of the class loaders bootstrap Class loader hierarchy: System Common – to webApps and server Catalina – server impl Share – common to webapps webAppsN – dedicated to webapp common catalina webApp1 share webApp2 Bibliographie et Docs Docs http://docs.oracle.com/javaee/ http://docs.oracle.com/javaee/6/firstcup/doc/ http://docs.oracle.com/javaee/6/tutorial/doc/ servlet-2_4-fr-spec.pdf Bibliographie http://computer.howstuffworks.com/web-server2.htm http://fr.wikipedia.org/wiki/Hypertext_Transfer_Protoc ol http://fr.wikipedia.org/wiki/Liste_des_codes_HTTP http://fr.wikipedia.org/wiki/Apache_Tomcat