Cours Service web Comprendre la difference serveur web et conteneur web Tomcat Apache Web Services
Télécharger PDFDifférence entre un serveur web et un serveur d’application
Avant d’aborder les concepts des services web, il est essentiel de comprendre la distinction fondamentale entre un serveur web et un serveur d’application.
1. Le serveur web HTTP
Un serveur HTTP est conçu pour gérer exclusivement les requêtes HTTP. Son rôle principal est d’intercepter ces requêtes, généralement sur le port 80 par défaut, de les traiter et de générer des réponses HTTP correspondantes. Tous les serveurs web intègrent un démon HTTP (httpd) ou un équivalent pour assurer cette fonctionnalité.
Exemples de serveurs web : Apache, Nginx, Lighttpd, IIS.
Au-delà de sa fonction basique d’interception et de réponse HTTP, un serveur web peut offrir des fonctionnalités avancées :
- Gestion de la sécurité : Restriction des accès par domaine, par utilisateur, par groupe ou par adresse IP.
- Gestion du contenu : Redirection des requêtes HTTP, personnalisation des messages d’erreur, gestion des délais d’attente (timeout).
Dans le serveur Apache, par exemple, ces fonctionnalités sont souvent implémentées sous forme de modules (tels que mod_alias, mod_authn_core, mod_proxy).
2. Le conteneur web
Le conteneur web représente une extension du serveur web, lui conférant la capacité d’exécuter des programmes développés avec divers langages de programmation (Java, PHP, C# ou autres) directement au sein du serveur.
Par exemple, le serveur Tomcat n’est autre qu’un serveur Apache couplé à un moteur web Java. De même, des environnements comme EasyPHP, WAMP ou XAMP sont des serveurs Apache associés à un moteur web PHP.
En se concentrant sur Tomcat, qui est un conteneur web Java (et non un serveur d’application Java EE complet), son architecture comprend un moteur JSP, un moteur de servlets et un descripteur de déploiement pour les modules web de type WAR (Web Archive). Ces moteurs sont des API implémentées dans Tomcat, permettant le déploiement d’applications web Java de type WAR.
Cependant, les applications Java de type EAR (Enterprise Archive) ne peuvent pas être déployées directement sur Tomcat sans modifications ou l'ajout de bibliothèques externes, car il lui manque les API nécessaires et conformes aux spécifications pour l’implémentation complète des serveurs d’application Java EE. Par exemple, si une application web utilise la bibliothèque JPA (Java Persistence API) et est déployée sur Tomcat, il sera nécessaire d’embarquer les fichiers JAR de JPA dans le répertoire lib de l’application. En revanche, un déploiement sur un serveur d’application complet comme JBoss ne requiert aucun JAR additionnel, car ces API sont déjà fournies par le serveur.
3. Le serveur d’application Java EE
Pour qu’un conteneur web tel que Tomcat devienne un véritable serveur d’application Java EE, des extensions supplémentaires sont requises. Ces extensions se composent de deux parties essentielles :
Composants clés d'un serveur d'application Java EE :
Un conteneur EJB (Enterprise JavaBeans) qui gère l’encapsulation et l’exécution des traitements des JavaBeans d’entreprise.
Un ensemble de services répartis comme suit :
Services d’infrastructure :
- JDBC (Java DataBase Connectivity) : API d’accès aux bases de données relationnelles.
- JNDI (Java Naming and Directory Interface) : API d’accès aux services de nommage et aux annuaires d’entreprises.
- JTA/JTS (Java Transaction API/Java Transaction Services) : API pour la gestion des transactions distribuées.
- JCA (Java EE Connector Architecture) : API de connexion aux systèmes d’information de l’entreprise (SIE) comme les ERP.
- JMX (Java Management Extension) : API permettant de développer des applications de supervision pour d’autres applications.
Services de communication :
- JAAS (Java Authentication and Authorization Service) : API de gestion de l’authentification et de l’autorisation.
- JavaMail : API pour la gestion de courrier électronique.
- JMS (Java Message Service) : API de communication asynchrone entre applications.
Questions Fréquentes (FAQ)
Qu'est-ce qu'un serveur web ?
Un serveur web est un programme informatique qui gère les requêtes HTTP des clients (navigateurs web) en recevant, traitant et renvoyant des réponses HTTP. Il est capable de servir des pages statiques et de gérer la sécurité et les redirections, mais n'exécute pas directement des logiques métier complexes sans extension.
Quelle est la différence principale entre un conteneur web et un serveur d'application Java EE ?
Un conteneur web, comme Tomcat, permet l'exécution d'applications web (WAR) basées sur les servlets et JSP. Un serveur d'application Java EE est une plateforme plus complète qui inclut un conteneur web, un conteneur EJB et une gamme étendue de services (transactions, messagerie, sécurité, accès aux annuaires) pour supporter des applications d'entreprise distribuées (EAR).
Pourquoi les applications Java EE de type EAR ne peuvent-elles pas être déployées nativement sur un conteneur web comme Tomcat ?
Les applications EAR contiennent souvent des composants d'entreprise comme des EJB et utilisent des services avancés (JTA, JMS, JCA) qui nécessitent des API spécifiques et des conteneurs supplémentaires non fournis par défaut dans un simple conteneur web. Tomcat est un conteneur web axé sur les applications web légères, tandis qu'un serveur d'application Java EE est conçu pour les applications d'entreprise plus complexes et distribuées.