Qu'est-ce que Tomcat? Le conteneur de servlet Java d'origine

Apache Tomcat est un conteneur de servlet Java open source de longue durée qui implémente plusieurs spécifications d'entreprise Java de base, à savoir le servlet Java, les pages JavaServer (JSP) et les API WebSockets.

Un projet Apache Software Foundation, Tomcat a été lancé pour la première fois en 1998, quatre ans seulement après Java lui-même. Tomcat a commencé comme une implémentation de référence pour la première API Java Servlet et la spécification JSP. Bien qu'il ne s'agisse plus de l'implémentation de référence pour l'une ou l'autre de ces technologies, Tomcat reste le serveur Java le plus largement utilisé, bénéficiant d'un moteur de base bien testé et éprouvé avec une bonne extensibilité.

Dans cette brève introduction, vous apprendrez pourquoi de nombreux magasins de logiciels choisissent Tomcat pour exécuter des applications Web Java. Vous obtiendrez un aperçu de Tomcat et de son utilisation, ainsi que des instructions d'installation pour la version la plus récente à ce jour.

Tomcat et l'API Java Servlet

Tomcat 9 prend en charge la spécification Servlet 4.0 et nécessite JDK 8 ou supérieur. Tomcat 8.5 prend en charge plusieurs fonctionnalités plus récentes telles que HTTP / 2, mais reste un conteneur Servlet 3.

Quel type de serveur est Tomcat?

L'écosystème Java prend en charge plusieurs types de serveurs d'applications, alors clarifions-les et voyons où Tomcat s'intègre:

  • Un conteneur de servlet est une implémentation de la spécification Java Servlet, utilisée principalement pour l'hébergement de servlets Java.
  • Un serveur Web est un serveur conçu pour servir des fichiers à partir du système local, comme Apache.
  • Un serveur d'applications d'entreprise Java est une implémentation complète de la spécification Java EE (maintenant Jakarta EE).

Au fond, Tomcat est un servlet et un conteneur JSP. Un servlet Java encapsule le code et la logique métier et définit la manière dont les demandes et les réponses doivent être traitées dans un serveur Java. JSP est une technologie de rendu de vue côté serveur. En tant que développeur, vous écrivez le servlet ou la page JSP, puis laissez Tomcat gérer le routage.

Tomcat contient également le moteur Coyote, qui est un serveur Web. Grâce à Coyote, il est possible d'étendre Tomcat pour inclure une variété de spécifications et de capacités d'entreprise Java, y compris l'API Java Persistence (JPA). Tomcat propose également une version étendue, appelée TomEE, qui comprend davantage de fonctionnalités d'entreprise. Je présenterai brièvement TomEE plus loin dans cet article.

Commençons par un regard sur l'utilisation de Tomcat pour héberger des servlets et des JSP.

Téléchargez et installez Tomcat

Étant un ancien du monde du logiciel, un certain nombre de versions de Tomcat sont disponibles. Des informations sur les différences de version sont disponibles sur la page d'accueil de Tomcat. Vous pouvez généralement simplement choisir la dernière version stable.

Pour nos besoins, téléchargez la dernière version de Tomcat, qui est actuellement Tomcat 9. Vous avez le choix de télécharger Tomcat en tant qu'archive ( .zipou tar.gz), ou en tant que service installé. Le meilleur choix dépend de vous - à moins bien sûr que vous ne soyez pas sous Windows, auquel cas vous opterez pour l'archive. Nous utiliserons l'archive pour cet article.

Installation de Windows pour Tomcat

Si vous utilisez Windows et que vous souhaitez utiliser le programme d'installation, téléchargez simplement le fichier .exe et exécutez-le. Tomcat s'installera en tant que service avec des valeurs par défaut raisonnables. Il vous informera alors de l'emplacement de l'installation et vous pourrez procéder comme si vous y aviez décompressé l'archive.

Étape 1. Installation en ligne de commande

Accédez à la ligne de commande et tapez gunzip apache-tomcat-9.0.19.tar.gzsuivi de tar -xf apache-tomcat-9.0.19.tar. Cela crée les répertoires suivants:

  • / bin contient les scripts pour exécuter Tomcat.
  • / webapps est l'emplacement où vous déploierez vos applications.
  • / logs est l'endroit où Tomcat produit ses journaux. Notez que les journaux de Tomcat entrent /logs/catalina.outpar défaut. Vous pouvez utiliser ce fichier pour déboguer des problèmes conjointement avec des fichiers journaux spécifiques à l'application.
  • / lib est l'endroit où Tomcat recherche les fichiers JAR. C'est ici que vous stockerez des packages supplémentaires non inclus avec Tomcat, tels que JPA.
  • / conf est le XML de configuration pour Tomcat, où vous pouvez faire des choses comme l'ajout d'utilisateurs et de rôles pour Tomcat.

Étape 2. Démarrez Tomcat

Si vous avez installé Tomcat en tant que service, il est déjà en cours d'exécution. Sinon, allez-y et démarrez-le en entrant ./catalina.sh startsur la ligne de commande. (Tapez ./catalina.shsans argument pour voir toutes les commandes disponibles). Vous devriez maintenant pouvoir accéder à l'écran d'accueil de Tomcat dans un navigateur.

Matthew Tyson

Déployer des applications dans Tomcat

Le webappsrépertoire de Tomcat est l'endroit où vous déployez une application. Vous pouvez y déposer un .warfichier et Tomcat l'exécutera. Un fichier WAR est l'empaquetage standard d'une ressource d'application Web: un fichier JAR avec quelques fichiers supplémentaires indiquant au conteneur (dans ce cas Tomcat) comment l'exécuter.

Outre le packaging standard, il existe trois manières supplémentaires de déployer du contenu dans Tomcat.

Déploiement éclaté

Une application Web «éclatée» est une application qui n'est pas compressée dans un fichier WAR, ce qui signifie qu'elle contient toujours tous les éléments disposés dans des répertoires et des fichiers. L'archive Tomcat que vous avez décompressée est livrée avec plusieurs exemples déployés de cette manière, que vous trouverez dans le /webapps/examplesrépertoire. L'avantage d'un déploiement éclaté est que vous pouvez y consulter les fichiers sans vous soucier de la compression.

Si vous accédez à //localhost:8080/examples/, vous trouverez une liste de liens. Cette page est rendue par Tomcat à partir du /webapps/examples/index.htmlfichier. Tomcat sert un fichier HTML à partir du système de fichiers, qui est une instance du moteur Coyote de Tomcat agissant en tant que serveur Web.

Vous êtes libre d'explorer les exemples présentés - ils vous donnent un bon aperçu des capacités de Tomcat pour servir les servlets, les JSP et les WebSockets.

Tomcat inclut également une application de gestion par défaut, trouvée sous le /managerchemin. Entre autres choses, cette application vous permet de démarrer, d'arrêter et de redéployer des applications à partir d'une console Web.

Diffuser du contenu statique

Il est possible de servir des fichiers à partir du système de fichiers ou de les transférer de Tomcat vers un autre serveur HTTP comme Apache. Une autre configuration courante consiste à placer un serveur de fichiers comme Apache ou Nginx devant Tomcat, puis à transférer vos demandes d'API dans Tomcat. Dans ces cas, la bibliothèque mod_JK est utilisée pour configurer Tomcat et Apache (ou même un autre serveur Web comme IIS) pour communiquer.

Pour des performances améliorées, principalement dans la diffusion de contenu statique, Tomcat propose également des wrappers natifs pour Windows et Linux. Ceci est connu sous le nom de Tomcat APR et plus d'informations sont disponibles ici. Celles-ci ne sont pas nécessaires pour les cas d'utilisation typiques, mais il est bon de les connaître.

Tomcat intégré

Pendant longtemps, Jetty a été le seul serveur capable de fonctionner en tant que serveur embarqué. Cela a changé, et maintenant Tomcat peut également exécuter intégré. L'idée de l'utilisation d'un serveur intégré est qu'au lieu du serveur contenant les fichiers d'application, comme vous l'avez vu jusqu'à présent, vous avez une application avec une classe principale (c'est-à-dire une application Java autonome), qui invoque les capacités du serveur de à l'intérieur de sa base de code. Dans l'ensemble, cela offre un modèle de développement plus simple et portable, et est rapidement devenu la norme. Spring Boot, par exemple, utilise une instance Tomcat intégrée s'exécutant en mode développement.

L'exécution d'un serveur intégré peut être simplifiée en termes d'opérations, car vous avez maintenant affaire à un seul composant (l'application) au lieu de vous occuper à la fois de l'application et d'un déploiement de serveur. En revanche, la configuration dans laquelle Tomcat s'exécute en tant qu'hôte indépendant est toujours très courante.

TomEE

Il est possible d'utiliser davantage les fonctionnalités standard de Java EE (ou Jakarta EE) avec Tomcat en ajoutant ces bibliothèques à Tomcat lui-même ou à vos dépendances d'application. Une autre option est le serveur TomEE. TomEE est le même moteur Tomcat avec une prise en charge d'entreprise Java supplémentaire, y compris les API populaires JPA et CDI (Contexts and Dependency Injection). Les spécifications de TomEE sont basées sur le profil Web Java EE, ce qui vous donne plus que Tomcat, mais ce n'est pas un serveur d'applications Java EE à part entière comme WildFly ou Glassfish.

Haute disponibilité et clustering

Tomcat prend en charge la haute disponibilité et le clustering. La haute disponibilité est essentiellement la possibilité de basculer vers une autre instance du serveur et de recréer la session comme si rien ne s'était passé. Le clustering est la possibilité de créer plusieurs versions du même serveur pour gérer le trafic à volume élevé.

Conclusion

Tomcat reste activement développé, suit le rythme du changement et fournit une plate-forme solide et fiable pour le déploiement d'applications Web. Sa popularité continue et son choix en tant que plate-forme Java par défaut pour de nombreux systèmes PaaS témoignent de son succès continu.

Cette histoire, "Qu'est-ce que Tomcat? Le conteneur de servlet Java original" a été publiée à l'origine par JavaWorld.