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.
Service. Chaque service peut recevoir des requêtes de plusieurs connecteurs.
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.
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). |
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. |
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" />
|
|