非同期要求ディスパッチャー
非同期要求ディスパッチャー (ARD) は、遅い操作を論理的に分離し、応答の完了に必要な他の操作と同時に実行できる場合に、 サーブレットの応答時間を改善することができます。ARD を使用すると、Java™ サーブレットのプログラマーは、別個のスレッドにある同じ要求に対して、標準の javax.servlet.RequestDispatcher インクルード呼び出しを同時に実行することができます。 これらの javax.servlet.RequestDispatcher インクルード呼び出しは、 同じスレッド上で順次実行されます。また、ARD は、 低速の CPU、つまりデータベース接続を待機する場合のように長時間待機する状況にも役に立ちます。
高い性能の CPU や大容量メモリーが要件である場合、 ARD のみではこれらの問題は改善されません。しかし、リモート要求ディスパッチャーと組み合わせると、 1 つのサーブレット要求によって駆動される操作は、複数のアプリケーション・サーバーで同時に実行できるため、 単一サーバーに対するリソース要求が軽減し、 システム・ダウンが引き起こされる可能性も低くなります。
サーブレット、ポートレット、および JavaServer Pages (JSP) ファイルはどれも、 ARD を使用することができます。この機能は、同期要求ディスパッチングのみを定めた Java™ サーブレット仕様の要件を超えて拡張したものです。ARD では 新規チャネル・チェーンを形成するために、HTTP コンテナー・チャネルと Web コンテナー・チャネルの間に ARD チャネルという新規チャネルが必要になります。これらの新規チェーンは、既存のデフォルト・ホスト・チェーンにのみ対応しており、 同じポートを再使用します。
各インクルードは、出力をクライアントに書き込むことができます。有効な結果を得るには順序付けは、 重要なため、書き込まれるデータをある程度 集約する必要があります。通常、データは、 サーブレットによってバッファーに書き込まれ、バッファーがいっぱいになると、 クライアントに対してフラッシュされます。 サーバー・サイド集約の場合、プレースホルダーを現行のバッファーに書き込んだインクルードが 終了するまで、ARD チャネルはフラッシュすることができません。
非同期インクルードのクライアント・サイド集約も サポートされています。Web 2.0 プログラマーは、多くの場合、リモート・リソースを動的に取得および集約 するために、クライアントの Web ブラウザーで Asynchronous JavaScriptand XML (Ajax) を使用します。 ただし、残念ながら、内容を集約し、新しい技術を身に付けるという負担がプログラマーに かかることになります。クライアント・サイド集約では、 必要な JavaScript が自動的に追加され、ページが動的に更新されます。JavaScript 以外のクライアントの場合、 ARD をサーバー・サイド集約に切り替えることによって、 同様の結果を得ることができます。クライアント・サイド集約を使用すると、 JavaScript 以外のクライアントを拒否できます。
ARD は Web コンテナー API を使用して、固有の要求ディスパッチング・ロジックを プラグインします。 これは WCCM と対話して、エンタープライズ・アプリケーションおよび グローバル・アプリケーション・サーバーの設定についての使用可能化状況に関する構成情報を 読み取ります。管理コンソールおよび wsadmin を使用すると、 ARD を使用可能または使用不可にすることができます。サーブレット、 ポートレット、および JSP ファイルはどれも ARD を使用することができます。