リモート要求ディスパッチャー
リモート要求ディスパッチャー (RRD) は、Web コンテナーに対するプラグ可能な拡張機能で、これによりアプリケーション・フレームワーク、サーブレット、および JavaServer Pages は、リソースの現行の Java™ 仮想マシン (JVM) の外部のコンテンツを、クライアントに送信する応答の一部として組み込むことができます。
リモート要求ディスパッチャーは、他のコンポーネントおよびスタック製品がジェネレーターやハンドラーのようなカスタム拡張機能を RRD 拡張機能に追加するための拡張可能なインフラストラクチャーです。 リモート要求ディスパッチャー拡張機能は標準的な Java Platform, Enterprise Edition (Java EE) javax.servlet.RequestDispatcher 実装を拡張して、Web サービスを使用するリモート・リソースの場所を知らせ、WebSphere® Application Server Network Deployment (ND) コア・グループ内のマシン間の通信を行います。リモート要求ディスパッチャー拡張子はリモート・サーバーで発生したすべてのエラーを発信元のサーバーに報告します。 また、サーバー間のセキュアな通信のために SSL および WS-Security セキュリティー・コンテキスト伝搬を使用できます。詳しくは、rrdSecurity.props ファイルのトピックを参照してください。
RRD ポートレット・サポートは、リモート要求ディスパッチャーの概念をポートレットに伝達し、現行の JVM リソースの外部にあるポートレットを呼び出すためにポートレット・コンテナーを拡張します。
RRD 拡張子を使用して、ユーザーはセル内にリモート・サーバーを含めることにより、複数のマシンおよび JVM 間で要求負荷をシェアすることができます。 RRD リソースがメモリーやプロセッサーを多く使用する場合、呼び出し側リソースは、同じ JVM 内で稼働している標準的な RequestDispatcher ほど影響を受けません。RRD はこの問題を、リソースを別の JVM に分離することにより、解決します。
機能
- リモート・サーバーでの要求はインクルード要求として処理されます。フィルターおよび要求リスナーは、ディスパッチ・タイプが INCLUDE である場合と同様に開始されます。
- シリアライズ可能な要求属性および照会パラメーターがリモート・サーバーに送信されます。
- セキュリティー・コンテキストが LTPA トークンを介してリモート・サーバーに送信されます。
- サーブレット・パラメーターと OutputStream
要求パラメーターがリモート・サーバーに渡されます。
- リモートで組み込まれたリソースにより設定された応答ヘッダーは、ローカル・サーバー上のインクルードと同じように無視されます。 Set-Cookie のような内部ヘッダーも設定し、再度伝搬できます。
- すべての元の要求ヘッダーはリモート・サーバーに渡されます。
- WebSphere Application Server のプラグインと類似しています。
- メソッドの呼び出しは、その呼び出しがローカル・サーバーであるように状態を戻します。例えば、 getServer はローカル・サーバー名を戻し、isSecure は「ローカル」サーバーへの要求が保護されているかどうかを戻します。
- Cookie およびセッション
- Cookie はヘッダーの一部としてリモート・サーバーに渡されます。
- ローカルおよびリモート・サーバーでのセッションでは同じ cookie または指定のクライアントのセッション ID (同じサーバーのインクルードに似ています) を使用します。 セッションがリモート・サーバーで終了すると、セッション Cookie は両方のサーバーの情報を含み、リモート・サーバーへのアフィニティーを維持します。
- 例外
- リモート・サーバーに例外があると、サーバーは RRD 固有の Web サービス障害 (アプリケーションによって作成された元の例外をラップする) を戻します。
- 例外クラスが両方のサーバーに存在する場合は、ローカル・サーバーで元の例外を再作成します。 元の例外が再作成できない場合は、代わりに RRD 固有の ServletException が作成され、使用されます。
- ローカル・サーバーにより例外が再作成され、エラー処理プロセスが行われます。
- 動的キャッシュ
動的キャッシュを使用可能にすると、ローカルおよびリモートのマシンでキャッシングが実行されます。
- セキュリティー
SSL を使用して、アプリケーション・サーバー間の RRD メッセージを暗号化できます。 SSL はデフォルトで使用可能になっていますが、セキュリティー状態がリモート・マシンで使用可能であることを保証するためには、RRD を介してセキュリティー・コンテキストのニーズを渡す必要もあります。 RRD は WS-Security を使用してこの情報を渡しますが、このセキュリティー・コンテキストの伝搬はデフォルトでは使用不可になっています。 追加情報については、rrdSecurity.props ファイルのトピックを参照してください。