このトピックでは、リモート要求ディスパッチャーを使用する際に注意しなければならないいくつかの考慮事項について述べます。
- アプリケーションが特定のエンコードでのパラメーターを予期している場合は、通常の組み込みの場合と同様、
リモート要求ディスパッチ (RRD) が発生する前にそのアプリケーションで文字エンコードを設定する必要があります。
- ローカル・サーバーの ServletInputStream データは、リモート・サーバーでは使用できません。
ローカル・サーバーは、RRD 要求をリモート・サーバーに送信する前に POST データを解析し、
パラメーターを要求パラメーターとして組み込みます。
リモート・サーバーは、multipart form データにアクセスできません。
リモート・サーバーが要求から入力ストリームを取得しようとすると、UnsupportedOperationException が作成されます。
- リモート・サーバーでは、元の要求参照にはアクセスできません。
- ローカル・サーバーで作成される要求および応答ラッパーは、リモート・サーバーでは使用できません。
これは、ServletRequestWrappers オブジェクトと WebSphere 内部の ServletRequest オブジェクトが、Serializable を実装していないためです。
- 要求属性はシリアライズ可能でなければなりません。
- 属性のクラス定義は、ローカル・サーバーとリモート・サーバーの両方で使用できる必要があります。
- 要求属性は、リモート・サーバーに伝搬され、ローカル・サーバーに戻されます。
- HTTP セッション
- Web アプリケーションがリモートである場合は、異なる Web アプリケーション間で相互に
セッション・アクセスを行うことはできません。
- すべての Web アプリケーションがローカル・サーバーにある場合は、
複数の Web アプリケーションからアクセスできるテーブルにセッションを保管することにより、
そのセッションを Web アプリケーション間で共用することができます。
これは RRD では不可能であり、ローカルの場合でもお勧めはできません。
- サーブレット・プログラミング・モデル: 異なる Web アプリケーション内のセッションにはアクセスできません。
- ローカルでもリモートの場合と同様、標準のプログラミング・モデルを使用します。
- ローカル・モードでは、アプリケーションは、Web アプリケーション間で参照をキャッシュに入れ、
セッションを共用することができますが、RRD の場合はできません。
- 要求属性として保管されているセッション・オブジェクトは、リモート・サーバーでは使用できません。
Session クラスが Serializable を実装していないためです。