Java & le web
x Le web dynamique
x Java & le web

Intro à Tomcat
x Serveur d'applications
x Présentation Tomcat
x Installation
x Arborescence

Configuration
x Introduction
x Server
x Service
x Engine
x Host
x Context
x DefaultContext
x Logger
x Loader
x Realm
x Valve

Connecteurs
x Balise Connector
x Coyote HTTP/1.1

Sécurisation accès
x La balise Realm
x Memory Based
x JDBC Database
x Protéger ressources
x Cryptage password

Les Valve
x La balise Valve
x Access Log
x Single Sign-On

Fonctionnalités
x Déploiement auto.
x Class loaders

Eclipse & Tomcat
x Plug-in pour Eclipse
x Projet Tomcat
x Debugger des JSP

Créer une appli web
x Présentation
x Architecture
x Fichier web.xml
x Déploiement

Tomcat 5
x Nouveautés

Tomcat's Corner
x Crédits
x Liens
 
             
Connecteur Coyote HTTP/1.1

 

 

Rôle

Le connecteur Coyote HTTP/1.1 est un Connector de Tomcat, utilisé pour les échanges suivant le protocole HTTP/1.1. Un connecteur est le composant "frontière" du serveur d'applications, puisqu'il reçoit les requêtes, et renvoie les réponses après traitement. Ce connecteur-ci est donc capable de communiquer en HTTP, et donc de recevoir directement les requêtes provenant d'un client. Il permet ainsi à Tomcat de fonctionner en stand-alone, c'est-à-dire d'être à la fois le serveur d'applications et le serveur web. Il est ainsi capable - outre sa fonction première d'exécution de servlets - de fournir des ressources statiques (images, pages HTML...).

Le connecteur crée, au démarrage du serveur, un certain nombre de threads (processus légers), destinés à attendre les requêtes. Lorsqu'une requête arrive, elle monopolise, pendant toute la durée du traitement, un thread. A un certain moment, il peut donc ne plus rester aucun thread libre. Si c'est le cas, le serveur créera de nouveaux threads, jusqu'à une limite fixée dans la configuration. Lorsque le serveur ne peut plus créer de threads, mais que les requêtes entrantes sont plus nombreuses que les threads disponibles, elles sont mises en attente de la libération d'un thread qui pourra les traiter. Encore une fois, on va définir une limite au nombre de requêtes mises en attente. Et les requêtes supplémentaires seront tout bonnement refusées... Toutes ces valeurs sont configurables, comme nous le verrons plus bas.

 

Balise ancêtre

Service. Chaque service peut recevoir des requêtes de plusieurs connecteurs.

 

Balises filles

Eventuellement une balise Factory, dans le cadre de la gestion du protocole SSL. Ce site ne contient pour l'instant pas d'informations à ce sujet.

 

Attributs obligatoires

Nom Description
className Permet de spécifier la classe (chemin complet, packages puis nom de la classe) à utiliser comme implémentation de l'interface Connector. Cet attribut est obligatoire, car c'est le moyen de définir le type de connecteur à utiliser. Dans notre cas, il faudra définir comme valeur "org.apache.coyote.tomcat4.CoyoteConnector" , la classe de ce connecteur.
port Numéro de port sur lequel le serveur créera une socket et "écoutera", en attente de connexions entrantes. La valeur par défaut est 8080. Le port HTTP standard étant 80, vous pouvez définir cette valeur ici (si vous n'avez pas d'autre serveur sur le port 80).

 

Attributs optionnels

En plus des attributs optionnels déjà énoncés (et communs à tous les connecteurs), le connecteur Coyote HTTP/1.1 comprend aussi les attributs optionnels suivants :

Nom Description
acceptCount Lorsque tous les threads traitant les requêtes sont occupés, et que le serveur ne peut en créer d'autres, les nouvelles requêtes entrantes peuvent être mise en attente (explications en haut de la page). Cet attribut définit le nombre de requêtes que l'on peut mettre en attente. La valeur par défaut est 10.
address Cet attribut est utile lorsque le serveur possède plusieurs adresses IP. On peut alors définir sur quelle adresse ce connecteur attend des requêtes. Par défaut, toutes les adresses IP du serveur sont écoutées par le connecteur.
bufferSize Taille (en octets) du buffer utilisé pour transmettre les flux de données de ce connecteur. La valeur par défaut est 2048. La pondération doit s'effectuer entre les performances (un buffer plus grand les augmente) et la charge mémoire (un buffer plus grand en consomme plus).
compression HTTP/1.1 permet de compresser les données échangées (format GZIP). Cet attribut permet de configurer l'éventuelle compression. La valeur "off" empêche l'utilisation de la compression par ce connecteur. La valeur "on" active la compression (le texte envoyé sera compressé). "force" a pour effet de forcer la compression pour toutes les données envoyées. Il est également possible de spécifier une taille (valeur numérique) correspondant à la taille minimale à partir de laquelle les données seront compressées. Par la suite, si la taille des données à envoyer n'est pas spécifiée, ce paramètre sera ignoré. Par défaut, la compression n'est pas utilisée.
connectionLinger La durée (en millisecondes) pendant laquelle les sockets de ce connecteur resteront actives après leur fermeture. Par défaut, la valeur est -1, ce qui désactive cette fonctionnalité.
connectionTimeout La durée (en millisecondes) pendant laquelle ce connecteur peut attendre qu'une URL lui soit demandée, après avoir accepté une connexion entrante. Par défaut, il peut attendre jusqu'à 60000 ms (60 secondes).
debug Le niveau de debug de ce composant.
disableUploadTimeout Si défini à true, cet attribut permet d'autoriser le serveur à allonger le connectionTimeout pendant qu'une servlet est exécutée. Cela permet donc de laisser plus de temps à la servlet pour être exécutée, ou plus de temps lors d'un gros upload (intéressant dans ce cas-là). Par défaut, cet attribut est à false.
maxProcessors Le nombre maximum de threads pouvant être créé par ce connecteur, en vue de traiter les connexions entrantes (explications en haut de page). Par défaut, 20 requêtes peuvent être traitées simultanément.
minProcessors Le nombre de threads crée au démarrage du serveur, en vue de traiter les connexions entrantes (explications en haut de page). La valeur par défaut est 5.
proxyName Détermine le nom de serveur à utiliser, si ce connecteur est utilisé dans une configuration de proxy.
proxyPort Détermine le numéro de port à utiliser, si ce connecteur est utilisé dans une configuration de proxy.
tcpNoDelay Active l'option TCP_NO_DELAY sur la socket, ce qui agit positivement sur les performances, en règle générale. Donc à true par défaut.

 

 

Exemple

La portion de configuration ci-dessous représente un bon exemple de configuration standard de ce connecteur. On constate qu'il écoute le port 8080. Il crée 5 threads au démarrage, pour traiter les requêtes entrantes. Jusqu'à 75 threads peuvent être créés si plus de 5 requêtes doivent être traitées simultanément. Au-delà de ces 75 requêtes simultanées, les nouvelles seront stockées en attente, dans la limite de 100 requêtes. Dans le cas d'upload conséquents, le timeout sera repoussé. Dans les autres cas, il est porté à 20 secondes.

<Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
port="8080" minProcessors="5" maxProcessors="75"
enableLookups="true" redirectPort="8443"
acceptCount="100" debug="0" connectionTimeout="20000"
useURIValidationHack="false" disableUploadTimeout="true" />