私は単一ページのjQuery&Backbone.jsWebアプリを開発しています。バックエンドはJBoss6アプリケーションサーバーです。
これまで、次の構造がありました。
- サーブレット(フロントコントローラー)は1つだけです。JavaScriptクライアントからのすべてのリクエストはここを通過します。
- サーブレットでは、特定のJSクライアントの最初の要求で、ステートフルセッションBeanを調べます。このクライアントの次のリクエストのために、ルックアップの結果をHTTPセッションコンテナに保存します。したがって、すべてのJSクライアントにはステートフルセッションBeanが1つだけあります。この接続は、セッションCookieによって保持されます。
今、私は追加の要件があります:
ユーザーが(1つのブラウザーに)2つのブラウザータブを持っている場合、すべてのブラウザータブにWebアプリの2つの分離されたインスタンスが必要です。このセッションCookieはすべてのブラウザタブ用であるため、セッションCookieに問題があります。
次のように構造を変更する必要があります。
- サーブレットは、特定のJSクライアントの最初のリクエストに対して新しいセッションIDを生成する必要があります。このセッションIDはクライアントに伝達されます。
- バックエンドへのPOSTごとに、JSクライアントはこのセッションIDを送信する必要があります。
私の質問は:
これまで、ルックアップの結果をHTTPセッションオブジェクトに保存し、セッションIDの生成について考える必要はありませんでした。しかし今、私はこれをどこかに保管しなければなりません、どこに?
誰かがこの種の設定を経験し、私を助けることができますか?
更新:
この非常に興味深いアプローチをありがとうBalusC。
私があなたをよく理解したとき、これは次のことを意味します:
1つのブラウザのタブのすべての個々のJSクライアントは、1つのHTTPセッションオブジェクトを共有します。また、このHTTPセッションオブジェクトでは、すべてのタブに独自のエントリポイントがあります。それは本当にいいですね。したがって、HTTPセッションインフラストラクチャ全体を引き続き使用でき、車輪の再発明を行う必要はありません。