このトピックでは、サーブレット・プーリングを使用不可にする場合の使用例を示します。 アプリケーションがそのアプリケーション内部でスレッドを作成する場合、 あるいは要求および応答オブジェクトを再利用する Web コンテナーに懸念がある場合には、 要求および応答プーリングを使用不可にすることができます。
SRV.4.10 要求オブジェクトの 存続時間 各要求オブジェクトは、サーブレットのサービス・メソッドの範囲内、 またはフィルターの doFilter メソッドの範囲内でのみ有効です。 コンテナーは通常、 要求オブジェクトをリサイクルすることにより、要求オブジェクト作成のパフォーマンス・オーバーヘッドを回避します。 開発者は、上記の範囲外の要求オブジェクトへの参照を維持することは、 予期しない結果を招くことがあるため推奨されないことに注意してください。
SRV.5.6 応答オブジェクトの 存続時間 各応答オブジェクトは、サーブレットのサービス・メソッドの範囲内、 またはフィルターの doFilter メソッドの範囲内でのみ有効です。 コンテナーは通常、 応答オブジェクトをリサイクルすることにより、応答オブジェクト作成のパフォーマンス・オーバーヘッドを回避します。 開発者は、上記の範囲外の応答オブジェクトへの参照を維持することは、 予期しない動作を招くことがあることに注意してください。
SRV.2.3.3.3 スレッド・セーフティー要求および応答オブジェクトの実装では、 スレッド・セーフが保証されていません。 つまり、これらのオブジェクトは、要求処理スレッドの有効範囲内でのみ使用できます。要求および応答オブジェクトへの参照を、 別のスレッドで実行されるオブジェクトに与えないでください。その結果の動作が予想できないためです。 アプリケーションが作成する スレッドがコンテナー管理オブジェクト (要求オブジェクト、応答オブジェクトなど) を使用する場合、 それらのオブジェクトにはサーブレットのサービス・ライフ・サイクル内でのみアクセスする 必要があります。また、このようなスレッド自体がサーブレットのサービス・メソッドの ライフ・サイクル内にライフ・サイクルを持っている必要があります。サービス・メソッドの終了後に これらのオブジェクトにアクセスすると、予期しない問題が発生することがあるためです。 要求および応答オブジェクトはスレッド・セーフではないことに注意してください。 複数のスレッドでこれらのオブジェクトにアクセスした場合は、アクセスを同期するか、ラッパー経由で アクセスすることで、スレッド・セーフティー (例えば、要求属性にアクセスするメソッドの 呼び出しの同期化や、スレッド内での応答オブジェクト用出力ストリームの使用) を追加する必要があります。