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