Distributeur de requêtes asynchrones
Un distributeur de requêtes asynchrones (ARD) peut accélérer le temps de réponse d'un servlet lorsque des opérations lentes peuvent être séparées de manière logique et exécutées en même temps que d'autres opérations nécessaires à l'établissement de la requête. ARD permet aux programmeurs de servlets Java™ d'exécuter des appels simultanés d'inclusion javax.servlet.RequestDispatcher standard pour la même requête, sur des unités d'exécution différentes. Ces appels d'inclusion javax.servlet.RequestDispatcher se terminent de manière séquentielle sur la même unité d'exécution. ARD est également utile en situation d'attente prolongée, lorsque l'unité centrale est peu sollicitée (par exemple lors de l'attente d'une connexion à une base de données).
Si les exigences en matière d'unité centrale ou de mémoire sont importantes, ARD ne suffit pas à les diminuer. Cependant, en combinaison avec le répartiteur de requêtes distantes, les opérations menées suite à une requête de servlet peuvent être exécutées simultanément sur plusieurs serveurs d'applications, ce qui allège la demande en ressources sur un seul serveur et diminue le risque que le système soit hors service.
Les servlets, portlets, et les fichiers JSP peuvent tous utiliser ARD. Cette fonctionnalité est une extension qui va au-delà des exigences de la spécification Java™ Servlet, qui ne décrit que la distribution de requêtes synchrones. ARD exige la présence d'un nouveau canal, le canal ARD, entre les canaux des conteneurs HTTP et Web afin de former une nouvelle chaîne de canaux. Ces nouvelles chaînes correspondent uniquement aux chaînes hôte et utilisent les même ports.
Chaque inclusion peut écrire une sortie au client et étant donné que l'ordre est important pour obtenir des résultats valides, les données écrites doivent être agrégées. Généralement, un servlet écrit des données dans une mémoire tampon, qui, une fois pleine, est vidée vers le client. Concernant l'agrégation côté serveur, le canal ARD ne peut être vidé avant que toutes les inclusions dont les marques de réservation ont été écrites dans la mémoire tampon actuelle ne soient terminées.
L'agrégation côté client de l'inclusion asynchrone est également prise en charge. Les programmeurs Web 2.0 utilisent souvent l'Ajax (Asynchronous JavaScript and XML) dans le navigateur Web du client pour extraire et agréger dynamiquement des ressources distantes. Malheureusement, c'est dans ce cas au programmeur d'agréger le contenu et d'apprendre de nouvelles technologies. L'agrégation côté client ajoute automatiquement le JavaScript nécessaire pour mettre à jour la page. Pour les clients non-JavaScript, vous pouvez basculer ARD vers une agrégation côté serveur, ce qui produit des résultats équivalents. Vous pouvez refuser les clients non-JavaScript lorsque vous utilisez l'agrégation côté client.
ARD utilise les API du conteneur Web pour insérer une logique de distribution de requêtes unique. Le système interagit avec WCCM afin de lire des informations de configuration pour l'activation par application d'entreprise ainsi que le paramètre appserver global. Vous pouvez activer ou désactiver ARD via la console d'administration et wsadmin. Les servlets, portlets, et les fichiers JSP peuvent tous utiliser ARD.