Serveur d'applications. Apache Tomcat



Documents pareils
Groupe Eyrolles, 2003 ISBN : X

Avant-propos 1. Avant-propos Organisation du guide À qui s'adresse ce guide?...4

Utilisation de Jakarta Tomcat

A. Architecture du serveur Tomcat 6

Application Web et J2EE

Formations OMCAT. J2EE Open Source BY-NC-SA

MANUEL D INSTALLATION de GEONETWORK sur un serveur LINUX CentOS 4

JOnAS Day 5.1. Outils de développements

Java pour le Web. Cours Java - F. Michel

Institut Supérieur de Gestion. Cours pour 3 ème LFIG. Java Enterprise Edition Introduction Bayoudhi Chaouki

Projet Java EE Approfondi

BOUCHARD Nicolas. GENTILE Pierre

TP réseau Android. Bidouilles Tomcat. a) Installer tomcat : il suffit de dézipper l'archive apache-tomcat windowsx64.zip.

Web Tier : déploiement de servlets

Compte Rendu d intégration d application

Refonte front-office / back-office - Architecture & Conception -

Réf. : S2I-CIELL2-PI-1.0. Version : 1.0. Auteurs : S2I-TOULON

Mise en œuvre des serveurs d application

JOnAS 5. Serveur d application d

1. Installation d'un serveur d'application JBoss:

Pharmed. gestion de pharmacie hospitalière. Installation / déploiement

Le serveur web Apache

Architecture JEE. Objectifs attendus. Serveurs d applications JEE. Architectures JEE Normes JEE. Systèmes distribués

Load Balancing avec Apache 2 14/07/10

Environnements de Développement

Europa. Développement JEE 5. avec Eclipse. K a r i m D j a a f a r. A v e c l a c o n t r i b u t i o n d e O l i v i e r S a l v a t o r i

Auto-évaluation Aperçu de l architecture Java EE

PROCEDURE D'INSTALLATION OPENREPORTS

Network Shutdown Module V3 Extension du Manuel Utilisateur pour architecture Virtualisée VMWare ESX Server 3, 3.5

Introduction aux «Services Web»

Technologies du Web. Créer et héberger un site Web. Pierre Senellart. Page 1 / 26 Licence de droits d usage

TP JEE Développement Web en Java. Dans ce TP nous commencerons la programmation JEE par le premier niveau d une application JEE : l application web.

Quick Start Installation de MDweb version 2.3

Linux sécurité des réseaux

Tests de montée en charge & Haute disponibilité

Architecture de la plateforme SBC

Le filtrage de niveau IP

Tunnels et VPN. 22/01/2009 Formation Permanente Paris6 86

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

Correspondances Windows-Linux

Un exemple d'authentification sécurisée utilisant les outils du Web : CAS. P-F. Bonnefoi

Version Wraptor Laboratories. SpamWars Serveur Proxy-SMTP

Introduction à la plateforme J2EE

Configuration des grappes de serveurs d applications ADOBE LIVECYCLE ES3 à l aide de JBOSS

contact@nqicorp.com - Web :

Cours Master Recherche RI 7 Extraction et Intégration d'information du Web «Services Web»

Open Source Job Scheduler. Installation(s)

Installation du package esup-portail Version uportal-2.5.x-esup

LINUX - Sécurité. Déroulé de l'action. - 3 jours - Contenu de formation

Simple Database Monitoring - SDBM Guide de l'usager

Réseaux. Moyens de sécurisation. Plan. Evolutions topologiques des réseaux locaux

Titre: Version: Dernière modification: Auteur: Statut: Licence:

Apache Tomcat 6. Guide d'administration du serveur Java EE sous Windows et Linux. Résumé. Étienne LANGLET

Réalisation d un portail captif d accès authentifié à Internet

Installation. Conception, mise en œuvre, hébergement, exploitation et

Expérience d un hébergeur public dans la sécurisation des sites Web, CCK. Hinda Feriani Ghariani Samedi 2 avril 2005 Hammamet

contact@nqicorp.com - Web :

Jahia. Guillaume Monnette École Ingénieurs 2000 Marne-La-Vallée IR3

Table des matières Hakim Benameurlaine 1

Armelin ASIMANE. Services RDS. de Windows Server 2012 R2. Remote Desktop Services : Installation et administration

SERVEUR WEB LINUX LAMP. Raymond RAZAFIMAMONJY Administration LINUX / UNIX Chapitre 15

4. SERVICES WEB REST 46

Installation d un serveur HTTP (Hypertext Transfer Protocol) sous Débian 6

BTS SIO SISR3 TP 1-I Le service Web [1] Le service Web [1]

Un serveur web léger et ouvert

Tous les autres noms de produits ou appellations sont des marques déposées ou des noms commerciaux appartenant à leurs propriétaires respectifs.

Gestion d identités PSL Exploitation IdP Authentic

CONFIGURATION DES GRAPPES DE SERVEURS D APPLICATIONS ADOBE DIGITAL ENTERPRISE PLATFORM DOCUMENT SERVICES A L AIDE DE JBOSS

JOnAS Day 5.1. Clustering

IP & Co. 1. Service DHCP. L'objectif de ce TP est de voir l'ensemble des services élémentaires mis en oeuvre dans les réseaux IP.

Applications distribuées: le retour du client "riche"

Outil de planification en ligne pour des créations de rendez-vous ou de sondage

Programmation Internet Cours 4

Formation en Logiciels Libres. Fiche d inscription

Tutoriel: Création d'un Web service en C++ avec WebContentC++Framework

Joomla! Création et administration d'un site web - Version numérique

Hébergement de sites Web

W4 CONNECTORS FOR JAVA MANUEL D UTILISATION

Network Shutdown Module V3 Extension du Manuel Utilisateur pour architecture Virtualisée VMWare ESX Server

AssetCenter Web 4.3 Installation et utilisation

Messagerie asynchrone et Services Web

SCENARIserver4.1 : manuel d'installation et. d'administration technique (Windows) d'administration technique. Juillet 2014 Version : 1.

Configuration des grappes de serveurs d applications ADOBE LIVECYCLE ES3 à l aide de WEBLOGIC

Service FTP. Stéphane Gill. Introduction 2

INSTALLATION APACHE POUR WINDOWS (XP OU 2000)

But de cette présentation. Proxy filtrant avec Squid et SquidGuard. Serveur proxy. Serveur proxy. Hainaut P

Vulgarisation Java EE Java EE, c est quoi?

Ubuntu Linux Création, configuration et gestion d'un réseau local d'entreprise (3ième édition)

Catalogue des Formations Techniques

JavaServer Pages (JSP)

FileMaker Server 14. Guide de démarrage

Construction et sécurisation d'un système Linux embarqué. Frédéric AIME

Guide d installation JMap 5.0

EXA1415 : Annotations

Serveur Subversion Debian GNU/Linux

Installation de la plate-forme Liberacces 2.0 «Intégrale» avec LiberInstall

Transcription:

Serveur d'applications Apache Tomcat

Tomcat Serveur d'applications Web Tout en un Serveur Web Conteneur de Servlets (Servlet container ou Servlet engine) Services Web Par l'intermédiaire de cadriciels (CXF, AXIS) Serveur EJB3 avec le projet Lightweight conteneur Projet de la fondation Apache Apache Software Foundation (ASF)

Historique de Apache Projet NCSA (1995) National Center for Supercomputer Applications Université de l'illinois Communauté Apache (1999) Reprise du projet NCSA Nombreux patchs correctifs D'où le nom de Apache ( A Patchy Web Server )

Historique de Tomcat Java Web Server SUN MICROSYSTEM Premier serveur de Servlets Servlet container, Servlet engine Donnation à la communauté Apache en 1999 Projet Tomcat Utilisé par SUN pour les implémentations de référence (RI) des technologies Servlet et JSP JSR 154, JSR 245

Versions Versions 3.x 1999 RI : Servlet 2.2 et JSP 1.1 Versions 4.x 2001 RI : Servlet 2.3 et JSP 1.2 Versions 6.x 2007 RI : Servlet 2.5 (JSR 154) et JSP 2.1 (JSR 245)

Licence Apache License La licence doit être inclue dans toute redistribution Tout ajout de documentation doit être déclaré Tout produit dérivé de Tomcat ne peut utiliser les termes de Tomcat, Jakarta ou Apache Tomcat n'a aucune garantie Tomcat peut être utilisé dans des projets libres et commerciaux Les modifications ne nécessitent pas de libérer le code source ou de rétrocession

Tomcat et serveurs Web Tomcat peut être utilisé comme serveur de Servlet uniquement Partie dynamique de l'application Couplé à un serveur Web Partie statique Images, CSS, HTML, XML Apache (ASF) IIS (Microsoft)

Tomcat tout en un Serveur dynamique et statique Connecteur HTTP HTTP connector Choix entre couplage et tout en un? Contexte de production ou d'étude Performance Équilibrage de charge, résistance aux pannes Sécurité Expérience

Installation simple Variable d'environnement Tomcat CATALINA_HOME Nécessite l'installation d'un JRE Distributions SUN MICROSYSTEM, BEA, IBM Variables d'environnement Java JAVA_HOME, JRE_HOME Variable d'environnement OS PATH

Installation simple Distributions pour toutes les plateformes Sources et compilation avec Ant Binaires Distributions Tomcat apache-tomcat-vesion.zip ou tar.gz Assistant d'installation pour Windows Windows installer

Installation simple Vérification de la distribution MD5 md5sum apache-tomcat-version.tar.gz PGP pgp -ka KEYS pgp apache-version.zip Tester le serveur Exporter la variable CATALINA_HOME Lancer : <TOMCAT_HOME>/bin/startup.sh ou bat

Installation simple Modes de lancement Manuel Service Vérification de l'installation Navigateur URL : http://localhost:8080 Accès à la page d'accueil de Tomcat

Processus de démarrage bin/ startup.(sh bat) shutdown.(sh bat) <start> <stop> catalina.(sh bat)

Structure après installation Structure du répertoire principal - Apache-tomcat/ + bin/ + conf/ + lib/ + logs/ + temp/ + webapps/ + work/

Déploiement des aplications Structure du répertoire webapps - webapps/ + docs/ + examples/ + host-manager/ - manager/ + images/ + META-INF/ + WEB-INF/ + ROOT/

Apache Portable Runtime (APR) Librairie développée avec Apache 2 Utilisée avec Tomcat Pour coupler Tomcat et un serveur Web natif Apache, IIS Amélioration des performances et de la stabilité Nécessite une compilation CATALINA_HOME/bin/tomcat-native.tar.gz

Architecture générale Répertoire bin/ Ensemble de scripts Démarrage et arrêt du serveur Jamais utilisé au cours de l'exécution Tous les autres répertoires sont configurables Permet d'avoir plusieurs versions de Tomcat Permet d'avoir plusieurs versions de JVM

Architecture générale Répertoire conf/ Configuration et paramètres de Tomcat Fichiers catalina.policy, catalina.properties logging.properties [ logs/ ] context.xml server.xml [ webapps/ work/ ] tomcat-users.xml web.xml

Architecture générale Répertoire lib/ Toutes les librairies nécessaires à Tomcat Toutes les librairies partagées par les applications Répertoire logs/ Journalisation des événements générés lors de l'exécution de Tomcat Répertoire temp/ Emplacement utilisé de façon temporaire

Architecture générale Répertoire webapps/ Emplacement des applications Archives WAR Web Application ressource (WAR) Tomcat déploie automatiquement toute archive WAR copiée dans webapps/ Répertoire work/ Utilisé pour la compilation des pages JSP Jasper regroupe les fonctionnalités de compilation Utilise la brique logicielle Eclipse jdt

Variables d'environnement Relation entre variables et répertoires CATALINA_BASE conf/ CATALINA_HOME lib/ CATALINA-TMPDIR temp/

Processus de démarrage catalina.(sh bat) <invocation> <invocation> setclasspath.(sh bat) setenv.(sh bat) Lancement JVM

Options d'environnement Possibilité de créer un script setenv.sh JAVA_HOME JAVA_OPTS CATALINA_OPTS CATALINA_HOME CATALINA_BASE CATALINA_TMPDIR CATALINA_PID Sinon options par défaut

Tomcat et ses composants Structure imbriquée de composants (1) x Server (1,n) x Service [ (1,n) x Connector ] (1) x Engine [ (1,n) x Logger] [(1,n) x Valve] [(1) x Realm] (1,n) x Host [ (1,n) x Logger] [(1,n) x Valve] [(1) x Realm] (1,1) x Context [ (1,n) x Valve] [(1) x Realm] [(1,n) x Wrapper]

Architecture globale Server Service Engine Logger Valve Realm Connector Host Logger Valve Realm Context Wrapper Valve Realm

Architecture des composants Server Représente une instance du serveur d'application Tomcat Une seule instance par JVM Séparation des instances Permet la tolérance aux pannes Interface Server Classe d'implémentation StandardServer

Architecture des composants Service Un service regroupe un conteneur de type Engine et un ensemble de connecteurs Un service accepte les requêtes soumises par les connecteurs et les route vers les Host Un service possède un nom

Architecture des composants Engine Conteneur de plus haut niveau Ne peut avoir de parent conteneur Agrège des composants enfant Représente le serveur de Servlets Examine les entêtes HTTP pour déterminer le serveur virtuel ou le contexte auquel adresser la requête

Architecture des composants Host Enfant de Engine Ressemble à la fonctionnalité Apache appelée serveur virtuel (virtual host) Plusieurs serveurs sur une même machine Différenciés par leur adresse IP ou par leur nom Avec Tomcat les multiples serveurs (host) sont différenciés par leur nom Ainsi www.exemple.com et www.exemple.net peuvent résider sur une même instance de Tomcat

Architecture des composants Context Représente une seule application Parent des Servlets et des Filters (StandardWrapper) L'interface Context est implémentée par la classe StandardContext Configuration Répertoire racine de l'application Rechargement dynamique des classes modifiées de l'application, pages d'erreur génériques Paramètres d'initialisation, authentification

Architecture des composants Connectors Les connecteurs connectent les applications aux clients Ils représentent le point d'accès où les requêtes des clients arrivent et où elles sont affectées à un port sur le serveur Le port HTTP par défaut est 8080 Le connecteur par défaut est Coyote qui implémente HTTP 1.1 D'autres connecteurs sont disponibles AJP (SSL), JServ, JK2

Architecture des composants Realm Gestion des authentifications et autorisations Assisté par Fichiers, annuaires LDAP, bases de données Différentes portées Engine, Host, Context Chaque application peut écraser le comportement général défini au niveau Engine ou Host

Architecture des composants Valve Composant qui permet à Tomcat d'intercepter une requête et de la pré-traiter Similaire au mécanisme de filtre des Filters mais à un niveau plus élevé spécifique à Tomcat Composants pouvant posséder des Valves Engine, Host et Context Fonctionnalités Single Sign-on, journalisation, adresse IP des clients, pic du trafic, bande passante, temps moyen d'une requête, etc.

Architecture des composants Loggers Fournissent des rapports sur les composants Niveaux Engine et Host Avec un mécanisme d'héritage quand déclaré au niveau Engine

Composant Connector Tous les connecteurs fonctionnent sur le même principe Ils correspondent à un module côté Apache mod_jk, mod_jk2, mod_proxy Écrit en langage C Côté tomcat Module écrit en Java Classe org.apache.catalina.connector

Composant Connector Les arguments du constructeur de Connector HTTP/1.1 (HTTP et HTTPS) AJP/1.3 (AJP) Argument passé via le fichier server.xml Balise <Connector> Attribut protocol Mapping différent selon le support de APR

Navigateur Web APACHE Serveur Web Apache Module Connecteur (mod_jk ou mod_proxy) Connecteur Tomcat TOMCAT Tomcat Servlet conteneur

Cycle de vie des composants Démarrage des composants Arrêt des composants Composants dans une relation parent/enfant Chaîne de réactions Grâce aux interfaces LifecycleEvent LifecycleListener Peut être ajoutée au niveau Server, Engine, Host ou Context Déclaré dans server.xml ou context.xml Balise <Listener>

Exemple de server.xml <Server port=''8005'' shutdown=''shutdown''> <Listener classname=''org.apache.catalina.core.aprlifecylelistener'' SSLEngine=''on'' /> <Service name=''catalina''> <Connector port=''8080'' protocol=''http/1.1'' maxthreads=''150'' connectiontimeout=''20000'' redirectport=''8443'' /> </Egine> </Service> </Server> <Engine name=''catalina'' defaulthost=''localhost''> <Realm classname=''org.apache.catalina.realm.userdatabaserealm'' resourcename=''userdatabase'' /> <Host name=''localhost'' appbase=''webapps'' unpackwars=''true'' autodeploy=''true'' />

Exemple de Listener public MonEcouteur implements LifecycleListener { public void lifecycleevent(lifecycleevent event) { if(lifecycle.start_event.equals(event.gettype())) { // démarrage du composant et action(s) dépendantes } } } if(lifecycle.stop_event.equals(event.gettype())) { // arrêt du composant et action(s) dépendantes }

Tomcat Configuration

Les fichiers de configuration Une instance de Tomcat lit à son démarrage un ensemble de fichiers XML de configuration server.xml Fichier principal de configuration des composants. context.xml Configuration par défaut des applications Peut être écrasée en définissant un fichier context.xml placé dans le META-INF/ de chaque application web.xml Descripteur de déploiement par défaut des applications

Variables d'environnement Le répertoire qui possède la configuration de Tomcat est spécifié dans la variable CATALINA_BASE Le sous-répertoire conf/ possède les fichiers XML $CATALINA_BASE/conf/ server.xml, context.xml, web.xml En l'absence de cette variable c'est la variable CATALINA_HOME qui est utilisée

Instances multiples La variable CATALINA_BASE permet d'avoir plusieurs instances de Tomcat Sans dupliquer entièrement l'installation de Tomcat En définissant différentes valeurs de cette variable Une valeur par instance de Tomcat Valeurs décrites dans un shell script

Configuration avec server.xml Par défaut Un unique service dans une unique instance de serveur Imbrication de définitions de composants Server port=8085 Service name=''catalina Connector port=8080 Connector port=8009 Engine name=catalina Realm classname=org.apache.catalina.realm... Host name=localhost

Éléments de server.xml Attributs de l'élément <Server> classname Classe du serveur à utiliser (défaut: StandardServer) port Port TCP d'écoute pour la commande shutdown shutdown La commande de shutdown exécutée par le serveur

Shutdown via telnet $>ps aux grep tomcat root 11496 14.1 2.4 217032 25752 pts/0... $>sudo telnet -E $>telnet>open -a localhost 8005 $>telnet>shutdown $>ps aux grep tomcat $>

Sous-éléments de <Server> <Service> Représente un ensemble de connecteurs <Listener> Un écouteur du cycle de vie du serveur Événements: start, stop, after start, after stop <GlobalNamingResources> Définition des ressources JNDI globales

Éléments de <Service> Attributs classname La classe Java utilisée name Le nom du service utilisé par La journalisation, l'administration et la gestion Le nom du service doit être différent de celui du serveur

Sous-éléments de <Service> Connector Composant extérieur qui gère les connexions des clients et les route vers Engine Un connecteur gère le nombre de threads allouées à chaque traitement de requête Engine Le composant qui traite les requêtes

Élément <Engine> Attributs classname La classe Java pour Engine backgroundprocessdelay Délai en seconde avant le processus background Exemle Le test pour les changements dans les applications Web Redéploiement à chaud

Élément <Engine> Attributs defaulthost Permet de désigner un <Host> virtuel par défaut. Utilisé seulement si le <Host> ne peut être trouvé jvmroute Un identifiant pour l'équilibrage de charge name Le nom de <Engine>

Sous-élément de <Engine> Host Pour définir un host virtuel Context Représente une collection de propriétés Leur portée est globale pour toutes les applications Realm Permet de définir un mode d'authentification basé sur des utilisateurs et leurs rôles

Sous-élément de <Engine> Valve Filtre propre à Tomcat définit au niveau Engine Listener Pour associé un écouteur d'événements à Engine

Élément <Host> Attributs classname appbase Définition du répertoire de déploiement des applications autodeploy À la valeur true, les applications sont automatiquement déployées name Le nom du <Host> BackgroundProcessDelay

Élément <Host> Attributs deployonstartup Si valeur à true alors déploie les applications au démarrage du <Host> deployxml Si valeur à false alors le contexte de chaque application doit être placé sous $CATALINA_HOME/conf/<engine>/<host>/<app>.xml Sinon le fichier META-INF/context.xml de chaque application est accepté

Élément <Host> Attributs errorreportvalveclass Déclare la classe Java qui implémente l'erreur Par défaut org.apache.catalina.valves.errorreportvalve unpackwars Si la valeur est à false alors Tomcat ne défait pas l'archive WAR pour exécuter l'application workdir Définition d'un répertoire de travail pour les JSP et Servlets Par défaut le répertoire work/

Sous-éléments de <Host> Context Permet de configurer un ensemble de propriétés pour une application déployée dans le <Host> DefaultContext Configure un ensemble de propriétés pour une application qui n'a pas son propre <Context> de défini Realm

Le fichier context.xml Par défaut dans le répertoire conf/ Dans une application Sous le répertoire META-INF/ Découplé de l'application Sous le répertoire $CATALINA_HOME/conf/<engine name>/<host name>

Élément <Context> Attributs classname allowlinking Permet le support des liens symboliques (Unix) Par défaut à false antijarlocking antiresourcelocking backgroundprocessdelay

Élément <Context> Attributs cachemaxsize Permet de dimensionner la taille du cache en KB Par défaut à 10240 cachettl Temps de re-validation des objets dans le cache Par déaut 5000 milli-secondes

Élément <Context> Attributs cachingallowed Détermine si les ressources statiques (images, pages) peuvent être mises en cache casesensitive cookies Par défaut à true crosscontext Par défaut à false. Positionner à true permet le partage d'informations entre applications du même host virtuel

Élément <Context> Attributs docbase Par défaut le nom de base de l'application est: webapps/le nom de l'archive WAR override Permet d'indiquer si les arguments locaux écrasent les arguments du contexte par défaut path Le chemin du contexte de base de l'application

Élément <Context> Attributs privileged Par défaut à false, valeur true pour les applications de type système (exemple: manager) processtlds Par défaut à true reloadable Par défaut à false. Détermine si Tomcat doit prendre en compte les changements dans WEB-INF/classes et WEB-INF/lib

Élément <Context> Attributs swallowoutput Par défaut à false. Détermine si les sorties System.out et System.err doivent être affichées dans les journaux tldnamespaceawaretldvalidation unloaddelay Nombre de milli-secondes d'attente avant un unload unpackwar

Élément <Context> Attributs usenaming Par défaut (true) crée et affecte un InitialContext à l'application workdir wrapperclass Déclare une classe Wrapper si nécessaire

Sous-éléments de <Context> Loader Configuration du class loader Manager Configure le gérant de session Realm Ressources Le gérant de ressources WatchedResource Redéploiement si les ressources changent

Le fichier web.xml Chaque application Web peut inclure un fichier web.xml Descripteur de déploiement Il doit être placé dans le répertoire WEB-INF/ Il y a un web.xml global dans Tomcat $CATALINA_HOME/conf Sa portée est globale

Entête web.xml <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">

Rôle du web.xml Indications données au serveur pour la prise en charge des applications Déploiement et chargement Accès Sécurité Accueil Ressources de contexte et de Servlet Filtrage des Servlets Types MIME

Servlet par défaut La première configuration du fichier central web.xml concerne la servlet par défaut $CATALINA_HOME/conf/web.xml Concerne les ressources statiques Pages HTML, images, CSS, etc

Exemple: Servlet par défaut <servlet> <servlet-name>default</servlet-name> <servlet-class>org.apache.catalina.servlets.defaultservlet</servlet-class> <init-param> <param-name>debug</param-name> <param-value>0</param-value> </init-param> <init-param> <param-name>listings</param-name> <param-value>false</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet>

Servlet Invoker Utilisée pour charger et exécuter une Servlet directement par une UR Http://<host name>/<context path>/servlet/<servlet name> Risque de sécurité en mode production Le code est donc commenté dans le web.xml

Exemple de Servlet Invoker <!-- <servlet> <servlet-name>invoker</servlet-name> <servlet-class> org.apache.catalina.servlets.invokerservlet </servlet-class> <init-param> <param-name>debug</param-name> <param-value>0</param-value> </init-param> <load-on-startup>2</load-on-startup> </servlet> -->

Servlet JspServlet Elle convertie les pages JSP en Servlets Génération de code source.java Compilation de la Servlet Exécution de la Servlet Cette Servlet a pour nom Jasper Nombre important de paramètres

Exemple de JspServlet <servlet> <servlet-name>jsp</servlet-name> <servlet-class>org.apache.jasper.servlet.jspservlet</servlet-class> <init-param> <param-name>fork</param-name> <param-value>false</param-value> </init-param> <init-param> <param-name>xpoweredby</param-name> <param-value>false</param-value> </init-param> <load-on-startup>3</load-on-startup> </servlet>

Invocation des Servlets Le rôle principal du web.xml Associé à un nom symbolique Le.class d'une Servlet (paquetage compris) Associé au même nom symbolique Une URL logique Par laquelle la Servlet sera invoquée Par défaut http://<host name>:<port>/<war name>/<url logique>

Exemple de mapping <servlet> <servlet-name>default</servlet-name> <servlet-class>org.apache.catalina.servlets.defaultservlet</servlet-class>... </servlet> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>

Passage de paramètres Deux types de paramètres Portée au niveau d'une SERVLET Section <init-param> de la section <servlet> Portée au niveau de l'application (Context) Section <context-param> Définition d'un paramètre Deux sous-sections <param-name> et <param-value>

Welcome file Le fichier web.xml global contient une section XML qui indique les noms par défaut des pages d'accueil Exemple <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> </welcome-file-list>

Collaboration server.xml, context.xml et web.xml Exemple https://www.lecoz.com/cours/javaee/tomact6 https: Connecteur Coyote avec support SSL (server.xml) Analysé par Service qui passe la requête à Engine www.lecoz.com: nom de host virtuel (server.xml) Analysé par Engine et par un de ses Host cours: path de Context (context.xml) javaee: servlet mapping avec URL pattern /javaee/* Fichier web.xml de l'application tomcat6: exécuté par la servlet

TOMCAT Applications

Application Web JAVA EE Représentée par une archive WAR Web Application Archive Structure / Pages JSP et ressources statiques: HTML, XML, images, CSS META-INF/ context.xml WEB-INF/ web.xml classes/ lib/

Déploiement Local à une machine Par simple copie dans le répertoire webapps À l'aide de l'application manager de TOMCAT De façon distante Avec ANT Avec un navigateur et l'application manager

Exemple de script ANT... <taskdef name=''deploy'' classname=''org.apache.catalina.ant.deploytask''/> <target name=''deploy'' depends=... <deploy url=''${tomcat.manager.url}'' username=''tomcat'' password=''tomcat'' path=''nom application'' war=''nom archive war'' update=''true'' />...

Architecture d'une application Modèle MVC adapté aux applications Web MVC2 Vue Pages HTML et pages JSP HTML, XHTML JSF Contrôleur SERVLET FILTRES

Architecture d'une application Modèle MVC adapté aux applications Web MVC2 Action Classes POJO Interfaces POJI Modèle Classes POJO persistantes Avec JPA (Java Persistence API) EJB3 Entity

Architecture d'une application MVC2 = mapping HTML/OBJET Reviens à faire correspondre une page JSP et une instance de classe Action get post JSP HTML SERVLET ACTION JSP HTML invocation forward FILTER set get POJO METIER SESSION

Que des SERVLETS TOMCAT n'exécute que des Servlets Les pages JSP sont traduites en Servlets et exécutées Une Servlet est une instance d'une classe qui spécialise la classe HttpServlet Service non orthogonal Les Servlets peuvent être filtrées Classe Filter

TOMCAT Sécurité

Sécurité d'une application Avec la section <security-constraint> du fichier web.xml Les ressources protégées de l'application Section <web-resource-collection> Sous-sections <web-resource-name> <url-pattern> <http-method> Section <auth-constraint> Sous-section <role-name> Doit correspondre à un rôle géré par Realm

Sécurité d'une application Section <auth-constraint> Type de transmission des données entre client et serveur Sous-section <user-data-constraint> Valeurs NONE, INTEGRAL, CONFIDENTIAL Procédure d'authentification associée à la section <security-constraint> Section <login-config> Sous-section <auth-method> BASIC si page d'authentification fournie par TOMCAT

Exemple de web.xml... <security-constraint> <web-resource-collection> <web-resource-name>professors</web-resource-name> <url-pattern>/professors/*</url-pattern> </web-resource-collection> <auth-constraint> <role-name>professor</role-name> </auth-constraint> </security-constraint> <login-config> <auth-method>basic</auth-method> <form-login-config> </form-login-config> </login-config> <security-role> <role-name>professor</role-name> </security-role>...

TOMCAT En phase de test et d'évaluation

TOMCAT en phase de test Règle principale Séparation des fichiers d'installation et des fichiers applicatifs Grâce à CATALINA_HOME et CATALINA_BASE Avantages Mise à jour de TOMCAT sans impacter les applications Mise à jour de la JVM Évaluation aisée des versions de TOMCAT et de JVM

Plusieurs versions de TOMCAT Création d'un script setenv.sh Exécuter par le script catalina.sh Le script setenv.sh permet de configurer Les variables CATALINA_HOME CATALINA_BASE CATALINA_PID

Plusieurs versions de JVM Création d'un script setenv.sh Exécuter par le script catalina.sh Le script setenv.sh permet de configurer JAVA_HOME JRE_HOME

Exemple de setenv.sh CATALINA_HOME=/usr/local/apache-tomcat-6.0.18 CATALINA_BASE=/usr/local/tomcat-instance-01 JAVA_HOME=/usr/local/jdk1.6.0_10 JRE_HOME=$JAVA_HOME/jre CATALINA_PID=$CATALINA_BASE/logs/tomcat.pid

TOMCAT Environnement de production

TOMCAT en production Règle principale Séparation des fichiers d'installation et des fichiers applicatifs Grâce à CATALINA_HOME et CATALINA_BASE Avantages Mise à jour de TOMCAT sans impacter les applications Retour aisé à une version antérieure en cas d'instabilité Permet d'affecter des droits différents sur les répertoires Exemple Une équipe projet peut écrire dans webapps/ mais ne peut pas écrire dans les autres répertoires

TOMCAT en production Stratégie Découpler l'installation de TOMCAT des instances qui hébergent les applications. Avantages Chaque instance s'exécute dans sa propre JVM Chaque instance démarre plus rapidement car elle ne lance que les applications qui y sont déployées

Architecture de production /usr/javaee/production/ apache-tomcat-6.0.18/ bin/ conf/ lib/ logs/ temp/ webapps/ work/ instance_1 conf/ logs/ temp/ webapps/ work/ instance_2 idem instance_1 shared/ conf/ run.sh

Détail de l'architecture /usr/javaee/production/ apache-tomcat-6.0.18/ installation standard instance_1 bin/ setenv.sh // autre version de TOMCAT, autre JVM conf/ catalina.properties // propriétés de port (shutdown, http, jmx) web.xml // copie de l'installation standard logs/ temp/ webapps/ work/ instance_2 idem instance_1 shared/ conf/ logging.properties // copie de l'installation standard server.xml // minimal avec substitution des variables du fichier catalina.properties des instances tomcat-users.xml run.sh

Le script run.sh C'est le script run.sh qui gère le démarrage et l'arrêt des instances de TOMCAT Tâche principale Exécuter catalina.sh [start stop] -config [server.xml] Le script catalina.sh de $CATALINA_HOME/bin Le fichier server.xml de shared/conf Avec variables de substitution lues dans les fichiers catalina.properties de chaque instance

Bien démarrer son tigre Dans le répertoire bin, se trouvent les scripts startup.sh et shutdown.sh, qui délèguent le travail à catalina.sh. Après avoir détecté son environnement d'exécution (AS400, Cygwin, VMWare...), celui-ci recherche et exécute les scripts setclasspath.sh et setenv.sh dans CATALINA_BASE/bin s'ils existent, sinon dans CATALINA_HOME/bin. C'est là l'occasion de redéfinir, globalement ou par instance, des variables comme JAVA_HOME, JAVA_OPTS ou CATALINA_OPTS. Au démarrage, Tomcat lit sa configuration qui est lue depuis les fichiers server.xml, logging.properties, etc. Chaque instance possédant ses propres paramètres (port d'écoute, répertoire de log...), il pourrait être tentant de copier et modifier ces fichiers manuellement. Mais Tomcat propose une solution plus élégante : les placeholders, ou variables de substitution. Il est alors possible de créer un modèle universel de configuration possédant des portions dynamiques de la forme "${variable}", dont les valeurs spécifiques sont redéfinies au niveau de chaque instance. Dans notre exemple d'installation, les fichiers de configuration placés dans CATALINA_HOME/conf sont les modèles, et les valeur spécifiques sont définies dans les fichiers CATALINA_BASE/conf/catalina.properties des instances.

TOMCAT TOMCAT et APACHE

TOMCAT et serveurs HTTP Certains administrateurs préfèrent coupler TOMCAT et un serveur HTTP connu APACHE, IIS, NETSCAPE Parce qu'ils sont mieux connus Ont une réputation de robustesse Notamment dans des environnements de fermes de serveurs

Intégration TOMCAT APACHE Intégration de TOMCAT avec APACHE Connecteur JK Connector JK utilise le protocole Apache JServ Protocol (AJP)

TOMCAT Sécurité avec Linux

Sécuriser Linux Le problème du port HTTP 80 TOMCAT ne peut être accédé sur le port 80 que s'il a été démarré avec le droit root. Ce qui constitue un risque de sécurité majeur pour le serveur Linux. Solution : Utiliser un autre port que 80 ce qui permet de démarrer TOMCAT avec un autre compte que root TOMCAT est par défaut configuré sur le port 8080 Problèmes Pare-feux à configurer et URL avec le port 8080

La solution xinetd Daemon de service internet Capable de redirection Accepter les requêtes sur un port entrant Passer ces requêtes sur un autre port et/ou adresse Fichier de configuration /etc/xinetd.conf Attribut redirect Redémarrage /sbin/service xinetd restart

Exemple de xinetd.conf # Redirects any requests on port 80 # to port 8080 (where Tomcat is listening) service tomcat { socket_type = stream protocol = tcp user = root wait = no port = 80 redirect = localhost 8080 disable = no }

Solution iptables Les kernel Linux récents supportent iptables Versions > 2.4.x Tester iptables /sbin/service iptables status Redirection Avec la table NAT (Network Address Translation) Avec la chaîne PREROUTING /sbin/iptables -t nat \ -A PREROUTING -j REDIRECT -p tcp \ --destination-port 80:80 --to-ports 8080

Sécuriser Linux avec chroot La commande chroot Crée une racine virtuelle de système de fichiers Tomcat avec chroot Interdit aux applications qui s'exécutent sous TOMCAT d'accéder à l'extérieur du chroot Nécessite la copie des ressources nécessaires à la JVM et à TOMCAT au sein du chroot /bin, /lib, /usr/bin, /usr/lib, Java (JRE ou JDK) /etc/passwd, /etc/group, /etc/hosts Nécessite la création des répertoires /dev, /dev/null, /dev/zero

TOMCAT Taille des fichiers logs

Limites TOMCAT ne peut gérer de gros fichiers de journalisation dans son répertoire logs/ La taille maximum est 2GB Au delà de cette taille TOMCAT tombe en panne Le fichier de log le plus critique est catalina.out Beaucoup d'écritures car c'est le fichier de sortie par défaut de TOMCAT

Solution Mettre en place un système automatique de compression du fichier catalina.out Avec le système logrotate de Linux Détails : man logrotate Logrotate est pris en charge par le service cron Possibilité de compresser A une périodicité fixée (tous les jours) Quand la taille du fichier dépasse une valeur fixée

Mise en œuvre Création du fichier /etc/logrotate.d/tomcat Contenu du fichier pour une compression tout les jours quand le fichier atteint 5M /var/log/tomcat/catalina.out { copytruncate daily rotate 7 compress missingok size 5M }

Mise en œuvre Lancement manuel du test avec cron /usr/sbin/logrotate /etc/logrotate.conf Fonctionnement Chaque nuit cron exécute les tâches listées dans le répertoire /etc/cron.daily/ Ceci déclenche /etc/cron.daily/logrotate Qui exécute /usr/sbin/logrotate /etc/logrotate.conf /etc/logrotate.conf contient tous ses scripts dans le répertoire /etc/logrotate.d/ Dans lequel se trouve le script tomcat