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. Pro Djangoの本はまだ関連していますか?
- 3. wap/wmlはまだ2011年に関連していますか?
- 4. Meteor 0.6.0+がnpmパッケージをサポートしているので、Meteoriteはまだ関連していますか?
- 5. 私はまだpublish.stream関数についてはっきりしていません。助けてください
- 6. は「CREATED_BY」のフォームフィールドを作成し、まだ、私は次のエラーを持っていたその関連モデル「users.User」はまだロードされていないため
- 7. 私のアプローチは、現代のPHPプログラミングにはまだ関連していますか?
- 8. disable_functions php.ini eval関数がまだ動作しています
- 9. Iboutletが接続されていますまだヌルだと言います
- 10. iOSクラッシュ 'NSInternalInconsistencyException'、理由: 'ステートメントはまだアクティブです'コアデータキャッシュに関連していますか?
- 11. CakePHPのディスプレイフィールドとして、関連モデルのフィールドを使用してください
- 12. まだタイムゾーンとコンバージョンについて混乱しています
- 13. チェックインのログインはまだまだ難しい
- 14. 64ビットOSの場合、メモリリークはまだ関係していますか?
- 15. エンタープライズJava BeansはSpringと比較してもまだ有効ですか?
- 16. まだ私のページはまだ圧縮されていないのですか?
- 17. はいただきまし
- 18. surfaceViewまたは関連SurfaceHolderに有効なSurfaceがあることを確認してください
- 19. まだwebserviceを呼び出していますがまだデータ転送が完了しています
- 20. 新しいスレッドはまだUIスレッドをブロックしています
- 21. アマゾンブラウザーはまだまだ一般的に使用されていますか?
- 22. Java:int []メソッドのヘルプは、ハフマンツリーと関連しています。
- 23. divの位置はコンテナとウィンドウに関連しています
- 24. IsolationLevel.Snapshotを使用していますが、DBはまだロックしています
- 25. JPQL Join SpringデータのManyToOne関連では機能しません。
- 26. 私のpostgresプロセスはまだ動作していますか?
- 27. Eclipse RCP:Display.getDefault()。asyncExecはまだ私のGUIをブロックしています
- 28. 私のラックサーバはまだ稼動していますか?
- 29. MAPIを使用してOutlookの連絡先を取得しようとしています。ただし、電子メールアドレスの連絡先だけが返されます。誰でも私が間違っていることを知っていますか?
- 30. これはJavafxまたはfxmlに関連しています
「セッションの一部であるすべての要求は、一度に1つのJVMで処理する必要があります」とはどういう意味ですか?コンテナが同じセッションを保証するために使用しなければならないテクニックは、常に同じJVMによって処理されるので、仕様はスティッキセッションを規定していますか?それとも、コンテナが、同じセッションがアクセスされることを(何とか)保証する必要があることを意味しますか? –