JBoss は複数のリクエストに対してエンティティ マネージャとその下にある休止状態のセッションを再利用しているように思えます。を使用して取得しただけであっても、場合によってはエンティティの状態が古くなっている可能性があることを証明するテストを実行しましたem.find()
。
この動作を無効にして、使用済みのセッションを強制的にクリアまたは破棄して、各リクエストがクリア キャッシュで処理されるようにするにはどうすればよいですか?
更新:
以下は事例です。
HTTP リクエスト 1. セッション Bean がエンティティ インスタンスを作成し、フィールド「A」を値 1 に設定して格納します。永続エンティティは ID = 4 を取得します。
HTTP リクエスト 2. セッション Bean は ID = 4 のエンティティを検索し、そのフィールド「A」を値 2 に設定して保存します。
HTTP リクエスト 3. セッション Bean は、ID = 4 のエンティティを検索し、そのフィールド「A」をチェックします。値が 1 の場合は 1 つのことを行い、2 の場合は別のことを行います。
リクエスト 3 の EM がリクエスト 1 と同じである場合、望ましくない動作が発生します。私はこれをテストし、約を得ました。10%の失敗例。