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