HttpServletResponse#encodeRedirectURLは、リダイレクト リクエストのJSESSIONID
(url 書き換え) を追加します。
これは、Web アプリケーション内の別のサーブレットにリダイレクトする場合にのみ意味があります。
それ以外の場合、別のサーバーにリダイレクトする場合、JSESSIONID
サーバーで作成した は、他のサーバーにとってどのように(意味的に)使用できるのでしょうか?
3 に答える
あなたが正しい。セッション ID は、特定の Web アプリケーションに対してのみ意味があります。そのため、javadoc には次のように記載されています。
sendRedirect メソッドで使用するために指定された URL をエンコードします。エンコードが必要ない場合は、URL を変更せずに返します。このメソッドの実装には、セッション ID を URL にエンコードする必要があるかどうかを判断するロジックが含まれています。
(私のものを強調)
クラスターがあるとします。同じアプリケーションのセットが一貫してデプロイされた複数のサーバー (単一のアプリケーションであっても)。
セッション クラスタリングが有効になっている場合、あるサーバーによって設定された JSESSIONID (Cookie 内または URL 内でエンコードされたもの) は、そのクラスター内の別のサーバーにとって役立つ可能性があるため、別のサーバー上の同じアプリケーションは、セッション データを使用してユーザーの要求に応答できます。最初に最初のサーバーに保存されるか、同じセッション データを補完することさえあります。
通常は、データの局所性のために、クラスター内の雑談を制限するために、稼働している限り同じサーバーにリダイレクトすることをお勧めします。
見る
Java EE では、アプリケーション コンテナがセッション管理を担当し、デフォルトで Cookie を使用します。
このリンクJSESSIONID はどのような条件で作成されますか? JSESSIONIDとその作成方法について詳しく説明しています。
この投稿も参照してくださいhttp://javarevisited.blogspot.in/2012/08/what-is-jsessionid-in-j2ee-web.html