SpringフレームワークのHttpSessionMutexListener
リスナーが今日のアプリケーションサーバー/ Webコンテナでまだ関連しているかどうかを知りたいと思います(2.5+サーブレット仕様サーバーTomcat 6またはTomcat 7)を使用するか、または2.3(またはそれ以前の)サーブレット仕様コンテナのクラスタ化された環境でのみ並行性の問題を解決しますか?SpringのWebUtils.getSessionMutex(javax.servlet.http.HttpSession)とHttpSessionMutexListenerはまだまだ関連しています
SpringのWebUtils.getSessionMutex(javax.servlet.http.HttpSession)とHttpSessionMutexListenerはまだまだ関連しています
答えて
あなたは、Springのセッションミューテックスに、それ以上のパワーを与えると思います。これは、単純に、ステートメントの式で使用することを目的とした公開名WebUtils.SESSION_MUTEX_ATTRIBUTE
で保存されたセッション属性です。私はそれがどのように "クラスタ化された環境でセッションオブジェクトをロックする"ために使用できるのか分かりません。ここではSpringの独自のコードからの使用スニペットです:
HttpSession session = request.getSession(false);
if (session != null) {
Object mutex = WebUtils.getSessionMutex(session);
synchronized (mutex) {
return handleRequestInternal(request, response);
}
}
1 JVMでmutex
オブジェクトへの参照が別のJVMに使用することはできませんので、そのロックを取得すると、別のJVMで実行されているコードへの影響はありません。しかし、サーブレットの仕様は以下を含んでいます:
配布可能としてマークされたアプリケーション内では、セッションの 一部であるすべての要求は、一度に1つのJVMによって処理されなければなりません。
この要件は少なくとも2.3以降であり、Springのミューテックスが何かをしているかのように動作する可能性があります。実際には、リクエストが1つのJVMで処理されるコンテナです時間。余談として
、これは春のセッションミューテックスを意味し、私は数年前の同時実行・関心に作られたポストのことを思い出す:
仮定:コメントに基づいて
JTaP article on stateful web apps
更新JVM-1とJVM-2はクラスタ内で2つのノードを構成します。また、request-1とrequest-2が同じセッションに参加しているとします。 request-1がJVM-1で処理されている場合、request-1が完了するまでJVM-2でrequest-2を処理することはできません。ただし、request-2 はをJVM-1で同時に処理できます。
要求が異なるJVMで処理される場合は、最初の要求(JVM-1)によって発生したセッション変更が2番目の要求(JVM-2)で可視になることを意味します。
- 1. Fowlerの「エンタープライズアプリケーションアーキテクチャのパターン」はまだ関連していますか?
- 2. Docker Swarmの発見はまだ関連していますか?
- 3. Djangoの "apps"フォルダはまだ関連していますか?
- 4. Pro Djangoの本はまだ関連していますか?
- 5. wap/wmlはまだ2011年に関連していますか?
- 6. Meteor 0.6.0+がnpmパッケージをサポートしているので、Meteoriteはまだ関連していますか?
- 7. JPA EntityManager.detach()は遅延関係をまだロードしています
- 8. 修正の動きは、まだ私はまだ抽出していますmpeg2video
- 9. は「CREATED_BY」のフォームフィールドを作成し、まだ、私は次のエラーを持っていたその関連モデル「users.User」はまだロードされていないため
- 10. 私のアプローチは、現代のPHPプログラミングにはまだ関連していますか?
- 11. 私はまだpublish.stream関数についてはっきりしていません。助けてください
- 12. regexを使って、連続した(ただし必ずしも連続しているとは限りません)だけ一致させます
- 13. AngularJS更新関数はまだ動作していません
- 14. 習慣はナビゲーションメニューをul/liとして定義することから生まれますか?それはまだ関連していますか?
- 15. 認証にJASPICを使用する場合、web.xmlは認証の点でまだ関連していますか?
- 16. Chipmunkは連続衝突検出をまだサポートしていますか?
- 17. disable_functions php.ini eval関数がまだ動作しています
- 18. Iboutletが接続されていますまだヌルだと言います
- 19. iOSクラッシュ 'NSInternalInconsistencyException'、理由: 'ステートメントはまだアクティブです'コアデータキャッシュに関連していますか?
- 20. CakePHPのディスプレイフィールドとして、関連モデルのフィールドを使用してください
- 21. まだタイムゾーンとコンバージョンについて混乱しています
- 22. Jersey 2.26とSpring 4.3.10ただし、HK2はありません
- 23. 64ビットOSの場合、メモリリークはまだ関係していますか?
- 24. チェックインのログインはまだまだ難しい
- 25. まだラップされていないタグはまだあります
- 26. エンタープライズJava BeansはSpringと比較してもまだ有効ですか?
- 27. まだ私のページはまだ圧縮されていないのですか?
- 28. 関連するすべてのRPMが削除されても、プロセスはまだ実行されますか?
- 29. surfaceViewまたは関連SurfaceHolderに有効なSurfaceがあることを確認してください
- 30. デスクトップとdesktop.browseはサポートされていますが、ブラウザはまだハングします
「セッションの一部であるすべての要求は、一度に1つのJVMで処理する必要があります」とはどういう意味ですか?コンテナが同じセッションを保証するために使用しなければならないテクニックは、常に同じJVMによって処理されるので、仕様はスティッキセッションを規定していますか?それとも、コンテナが、同じセッションがアクセスされることを(何とか)保証する必要があることを意味しますか? –