Qu’est-ce que Tomcat ?
C’est un serveur d’applications (ou plus précisément un “conteneur de servlets”).
-
Son job : Exécuter des applications web écrites en Java.
-
Sa spécialité : Il gère les technologies Java Servlet et JavaServer Pages (JSP).
-
Le petit plus : Il est gratuit, open-source et c’est le standard utilisé par des millions de développeurs.
Les points clés à retenir :
-
Serveur Web : Il écoute sur un port spécifique (généralement le 8080) pour intercepter les demandes des utilisateurs.
-
Environnement d’exécution : Il fournit l’infrastructure nécessaire pour faire tourner des servlets Java et des pages JSP.
-
Format de fichier : Pour déployer une application sur Tomcat, on utilise généralement un fichier .war (Web Application Archive), généré au préalable par un outil comme Gradle.
Comment ça marche ? (Le flux simple)
-
Le Client : Tu tapes une adresse dans ton navigateur.
-
Tomcat : Il reçoit la requête, cherche l’application Java correspondante.
-
Le Code : Le code Java fait ses calculs (va chercher des infos en base de données, etc.).
-
Le Résultat : Tomcat renvoie une page HTML toute propre à ton navigateur.
Initialisation d’un serveur Tomcat 10+ (API Jakarta Servlet)
⚠️ Cet exemple utilise l’API Jakarta Servlet (
jakarta.servlet.*) et nécessite Tomcat 10 ou supérieur ainsi que les dépendancestomcat-embed-coreettomcat-embed-jasper(Jakarta EE).
import java.io.File;
import org.apache.catalina.Context;
import org.apache.catalina.LifecycleException;
import org.apache.catalina.startup.Tomcat;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws LifecycleException {
// 1. Création de l'instance Tomcat
Tomcat tomcat = new Tomcat();
// 2. Configuration du port
tomcat.setPort(8080);
// Nécessaire pour activer le connecteur en Tomcat 10+ (API Jakarta Servlet)
tomcat.getConnector();
// 3. Définition du répertoire de base (temp)
String baseDir = new File(".").getAbsolutePath();
Context ctx = tomcat.addContext("", baseDir);
// 4. Ajout d'une Servlet personnalisée pour tester
String servletName = "HelloServlet";
Tomcat.addServlet(ctx, servletName, new HttpServlet() {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException {
resp.setContentType("text/html");
resp.getWriter().println("<h1>Tomcat Embedded en Java pur !</h1>");
}
});
// Mappage de la servlet sur toutes les URL ("/*") pour un exemple de type catch-all
ctx.addServletMappingDecoded("/*", servletName);
// 5. Démarrage du serveur
System.out.println("Démarrage de Tomcat sur le port 8080...");
tomcat.start();
// Maintient le serveur en vie
tomcat.getServer().await();
}
}Points clés à retenir :
-
tomcat.setPort(8080): Définit le port d’écoute. -
tomcat.addContext: Crée un contexte d’application. Même pour une application simple, Tomcat a besoin d’un contexte (souvent la racine/). -
tomcat.getConnector(): Dans les versions récentes, si tu n’appelles pas explicitement cette méthode, le connecteur HTTP ne s’initialise pas par défaut. -
tomcat.getServer().await(): Empêche le programme Java de s’arrêter immédiatement après lestart().