Accueil🇫🇷Chercher

Apache Tomcat

Apache Tomcat ou simplement Tomcat est un serveur d'applications, plus précisément un conteneur web libre de servlets et JSP. Issu du projet Jakarta, c'est un des nombreux projets de l’Apache Software Foundation. Il implémente les spécifications des servlets et des JSP du Java Community Process[5], est paramétrable par des fichiers XML et des propriétés, et inclut des outils pour la configuration et la gestion. Il comporte également un serveur HTTP.

Environnement

Tomcat est un serveur HTTP à part entière[6]. De plus, il gère les servlets et les JSP (par un compilateur Jasper compilant les pages JSP pour en faire des servlets). Tomcat a été écrit en langage Java. Il peut donc s'exécuter via la machine virtuelle Java sur n'importe quel système d'exploitation la supportant.

Catalina est le conteneur de servlets utilisé par Tomcat. Il est conforme aux spécifications servlet de Oracle Corporation et les JavaServer Pages (JSP). Coyote est le connecteur HTTP de Tomcat, compatible avec le protocole HTTP 1.1 pour le serveur web ou conteneur d'application. Jasper est le moteur JSP d'Apache Tomcat. Tomcat 9.x utilise Jasper 2, qui est une implémentation de la spécification JavaServer Pages 2.3 de Oracle. Jasper parse les fichiers JSP afin de les compiler en code Java en tant que servlets (gérés par Catalina). Pendant son exécution, Jasper est capable de détecter et recompiler automatiquement les fichiers JSP modifiés.

État de développement

Architecture de Tomcat
Concepts architecturaux de Tomcat.

Les membres de la fondation Apache et des volontaires indépendants développent et maintiennent Tomcat. Les utilisateurs ont accès au code source et aux binaires sous la Apache Software License. La première version de Tomcat était la 3.0. En 2005, la version 5.x est sortie, implémentant les servlets 2.4 et les JSP 2.0. Depuis sa version 4.x, Tomcat utilise le serveur de conteneur Catalina.

L'architecture du logiciel se compose ainsi[7] :

  • Un serveur (server), soit tomcat en cours d'exĂ©cution ;
    • Des services, intermĂ©diaires collectant diffĂ©rents canaux de transmissions vers un traitement ;
      • Un moteur (engine), qui pour chaque service traite les requĂŞtes des collecteurs et renvoie les rĂ©ponses ;
    • Des hĂ´tes (host), qui relient une adresse rĂ©seau avec le serveur ;
    • Des connecteurs (connector), qui interprètent un canal et protocole de communication rĂ©seau Ă  disposition des clients. Le connecteur HTTP est le plus typique ;
    • Des contextes (context), qui sont les applications web.

Le contexte est le lieu privilégié pour situer un service informatique que l'on veut rendre sur un réseau. Les autres modules sont mis en œuvre par le logiciel Tomcat lui-même.

Principe de fonctionnement

Tomcat est souvent utilisé en association avec un autre serveur web plus généraliste[6], en général Apache, mais ce peut être aussi IIS :

  • Le serveur web s'occupe des pages web traditionnelles (.html, .php par exemple)
  • Il dĂ©lègue Ă  Tomcat les pages relevant spĂ©cifiquement d'une application web Java (Servlet, JSP...).

On peut utiliser le module mod jk pour réaliser la communication entre Apache et Tomcat. Techniquement, Apache communique alors avec Tomcat sur le port 8009 (via le protocole ajp13).

Pour l'administration Ă  distance, Tomcat inclut des applications accessibles par HTTP[8].

Arborescence de répertoires

L'installation par défaut de Tomcat comprend les répertoires suivants :

  • bin : scripts et exĂ©cutables pour diffĂ©rentes tâches comme le dĂ©marrage et l'arrĂŞt, notamment le fichier catalina.sh qui permet le lancement et l'arrĂŞt du serveur tomcat.
  • common : classes communes que Catalina et les applications Web utilisent.
  • conf : fichiers de configuration au format XML et les DTD que ces fichiers XML utilisent.
  • lib : le rĂ©pertoire contenant les bibliothèques logicielles (fichiers .jar).
  • logs : journaux des applications Web et de Catalina, notamment le fichier catalina.out.
  • server : classes utilisĂ©es seulement par Catalina.
  • shared : classes partagĂ©es par toutes les applications Web.
  • webapps : rĂ©pertoire contenant les applications web (fichiers .war).
  • work : fichiers et rĂ©pertoires temporaires (le cache).

Historique

Le projet Tomcat a été lancé comme implémentation de référence des servlets par James Duncan Davidson, architecte logiciel chez Sun. Il a contribué à rendre le projet libre et a joué un rôle majeur dans sa donation par Sun à la fondation Apache.

Davidson aspirait dès le départ à rendre le projet libre. Comme la plupart des projets libres sont associés à un livre O'Reilly avec un animal en couverture, il a souhaité donner un nom d'animal au projet. Il a choisi le nom Tomcat (« matou ») car cet animal représentait quelque chose qui peut prendre soin de lui-même [9]. Son souhait de voir une couverture d'animal s'est finalement concrétisé lorsque O'Reilly a publié un livre sur Tomcat avec un félin en couverture[10].

Bien qu'étant une implémentation de JEE moins complète que la plupart de ses concurrents, et même grâce à cette légèreté, Tomcat domine rapidement le marché des serveurs Java[11]. Il représentait en 2014 la moitié des utilisations de tels serveurs, plus précisément 59 % des sondés[12], loin devant JBoss et Jetty. En 2016, son utilisation baisse à 42 %, ce qui s'explique par la baisse du nombre de serveur d'application en production[13].

Tomcat 3.x (version initiale)

  • implĂ©mente les spĂ©cifications Servlet 2.2 et JSP 1.1 ;
  • rechargement des servlets ;
  • fonctionnalitĂ©s HTTP de base.

Tomcat 4.x

  • implĂ©mente les spĂ©cifications Servlet 2.3 et JSP 1.2 ;
  • nouveau conteneur de servlets Catalina ;
  • nouveau moteur JSP Jasper ;
  • connecteur Coyote ;
  • Java Management Extensions (JMX), JSP et administration Struts.

Tomcat 5.x

Tomcat 6.x

  • implĂ©mente les spĂ©cifications Servlet 2.5 et JSP 2.1 ;
  • support de Java 5 ;
  • amĂ©lioration de l'utilisation mĂ©moire.

Tomcat 7.x

  • implĂ©mente les spĂ©cifications Servlet 3.0, JSP 2.2 et EL 2.2;
  • support de Java 6 ;
  • amĂ©lioration de la dĂ©tection et de la prĂ©vention des fuites de mĂ©moire
  • mode hĂ©bergĂ© simplifiĂ©

Tomcat 8.x

  • implĂ©mente les spĂ©cifications Servlet 3.1, JSP 2.3, EL 3.0 et WebSocket 1.0;
  • support de Java 7 ;
  • amĂ©lioration des performances: la version par dĂ©faut des connecteurs est dĂ©sormais basĂ©e sur des entrĂ©es/sorties Java non bloquantes (Asynchronous I/O) Ă  la place des versions bloquantes (Blocking I/O)
  • amĂ©lioration de la sĂ©curitĂ©

Tomcat 9.x

Sont annoncés par la fondation Apache :

  • implĂ©mente Servlet 4.0 et WebSocket 1.1
  • support de Java SE 8 et + WebSocket 1.1
  • AmĂ©liorations de la stabilitĂ© de nombreuses API (javax, EL 3.0, Jasper 2, JSP 2.3...)

Voir aussi

Articles connexes

Liens externes

Notes et références

  1. (en) « Heritage » (consulté le )
  2. « https://projects.apache.org/json/projects/tomcat.json » (consulté le )
  3. « Tomcat 10.1.10 (schultz) », (consulté le )
  4. « Tomcat 11.0.0-M7 (markt) », (consulté le )
  5. Site officiel, « Apache Tomcat ».
  6. (en) « Tomcat in the enterprise », sur javaworld.com, (consulté le )
  7. Site officiel, « Apache Tomcat Architecture ».
  8. « Utilisez le Tomcat Manager pour déployer vos projets web sur serveur Tomcat », sur java-hoster.com, (consulté le )
  9. Wiki Tomcat, « How did Tomcat get its name? ».
  10. livre sur Tomcat (en)
  11. (en) « Research Report Confirms Shift to Apache Tomcat », sur mulesoft.org, (consulté le )
  12. (en) « Java Tools and Technologies Landscape for 2014 », sur zeroturnaround.com, (consulté le )
  13. Java Tools and Technologies Landscape Report 2016
Cet article est issu de wikipedia. Text licence: CC BY-SA 4.0, Des conditions supplémentaires peuvent s’appliquer aux fichiers multimédias.