Asynchronous Request Dispatcher (ARD)
Asynchronous Request Dispatcher (ARD) kann die Servletantwortzeit verbessern, wenn langsame Operationen logisch getrennt und gleichzeitig mit anderen Operationen ausgeführt werden, die zur Vervollständigung der Antwort erforderlich sind. ARD ermöglicht Java-Servlet-Programmierern, Standard-Include-Aufrufe vom Typ "javax.servlet.RequestDispatcher" für dieselbe Anforderung gleichzeitig in mehreren separaten Threads auszuführen. Diese Include-Aufrufe vom Typ "javax.servlet.RequestDispatcher" werden nacheinander im selben Thread ausgeführt. ARD ist auch in Situationen mit wenig CPU und langen Wartezeiten hilfreich, z. B., beim Warten auf eine Datenbankverbindung.
Bei hohem CPU- und Speicherbedarf können solche Probleme mit ARD allein nicht gelöst werden. Wenn ARD jedoch mit Remote Request Dispatcher (RRD) kombiniert wird, können Operationen, die über eine einzige Servletanforderung gesteuert und in mehreren Anwendungsservern gleichzeitig ausgeführt werden können, den Ressourcenbedarf in einem einzelnen Server jedoch verringern und das Risiko eines Systemausfalls mindern.
Servlets, Portlets und JSP-Dateien (JavaServer Pages) können ARD nutzen. Diese Funktionalität ist eine Erweiterung, die über die Anforderungen der Java™-Servlet-Spezifikation hinausgeht, in der nur die synchrone Verteilung von Anforderungen beschrieben wird. ARD erfordert einen neuen Kanal, den so genannten ARD-Kanal, zwischen den HTTP- und Web-Container-Kanälen, um eine neue Kanalkette zu bilden. Diese neuen Ketten entsprechen nur den vorhandenen Standardhostketten und verwenden dieselben Ports wieder.
Jeder Include-Aufruf kann Ausgaben in den Client schreiben, und weil die Reihenfolge entscheidend ist, damit gültige Ergebnisse zurückgeliefert werden, muss es eine Form der Zusammenfassung (oder Aggregation) der geschriebenen Daten geben. Gewöhnlich schreibt ein Servlet Daten in einen Puffer. Wenn dieser Puffer voll ist, werden die Daten in einer Flush-Operation in den Client geschrieben. Bei der serverseitigen Aggregation kann der ARD-Kanal eine solche Flush-Operation erst durchführen, wenn alle Include-Aufrufe, für die Platzhalter in den aktuellen Puffer geschrieben wurden, abgeschlossen sind.
Die clientseitige Aggregation der asynchronen Include-Aufrufe wird auch unterstützt. Programmierer für Web 2.0 verwenden häufig Asynchronous JavaScript and XML (Ajax) im Web-Browser des Clients, um ferne Ressourcen dynamisch abzurufen und zusammenzufassen. Dies hat leider den Nachteil, dass sich der Programmierer um die Aggregation des Inhalts kümmern und neue Technologien lernen muss. Bei der clientseitigen Aggregation wird das erforderliche JavaScript automatisch hinzugefügt, um die Seite dynamisch zu aktualisieren. Für Clients, die keine JavaScript-Clients sind, können Sie ARD auf die serverseitige Aggregation umstellen, was entsprechende Ergebnisse liefert. Clients, die keine JavaScript-Clients sind, können bei der Verwendung der clientseitigen Aggregation auch zurückgewiesen werden.
ARD verwendet die Anwendungsprogrammierschnittstellen des Web-Containers, um Logik für die eindeutige Anforderungszuteilung als Plug-in einzufügen. ARD interagiert mit WCCM, um die Konfigurationsdaten für den Aktivierungsstatus in jeder Unternehmensanwendung und als globale Anwendungsservereinstellung einzulegen. Sie können die Administrationskonsole oder das Tool "wsadmin" verwenden, um ARD zu aktivieren bzw. zu inaktivieren. Servlets, Portlets und JSP-Dateien können ARD verwenden.