0

クラス レベルで LockType READ であるシングルトン コンテナ管理セッション Bean の LockType WRITE メソッドが、LockType READ である同じ Bean 内の別のメソッドを呼び出すとどうなりますか。

@Singleton
@ConcurrencyManagement(ConcurrencyManagementType.CONTAINER)
@Lock(LockType.READ)
public class EmployeBean implements Employee {

  @Lock(LockType.WRITE)
  public Employee update() {
   //update 
  }

  public void calculate () {
    //calculate and set 
  }
}

上記の Bean で、このような実装を行うのは正しいですか? この update() が実行され、同時に他のサービスが calculate() を呼び出すとどうなりますか? サービスは update() が終了するまで待機しますか、それとも並行して calculate() も実行しますか? 並行して実行すると、データが破損したり、データの不一致が発生したりする可能性が高くなると思います。

calculate メソッドはプライベートにすることができ、WRITE 保護メソッドの下でのみ使用できます。こうすることで、同時リクエストによる不一致が発生しないことが保証されます。

上記のような場合に同時リクエストを処理する際の影響を知り、正しいアプローチに従ってください。

4

0 に答える 0