29.4.3. デフォルトのロッキング動作

エンティティ bean ロック機能はエンティティ bean インスタンスから完全に分離されます。ロック機能の論理は別のロックオブジェクト内で完全に隔離され、管理されます。 一度に許可されるアクティブな特定エンティティ bean のインスタンスはひとつだけのため、 JBoss はデータの整合性確保および EJB 仕様に対する準拠の目的で 2 種のロックを採用しています。
  • Method Lock: メソッドロックによって特定の Entity Bean 上で呼び出し可能なのは必ず一度に 1 つのスレッド実行のみであるようにします。 これは EJB 仕様では必須となっています。
  • Transaction Lock:トランザクションロックを使うと、特定の Entity Bean へのアクセスできるのは必ず一度に 1 トランザクションのみにします。これによりアプリケーションサーバーレベルでのトランザクションの ACID プロパティを確保します。デフォルトでは特定の Entity Bean のアクティブなインスタンスは一度に 1 つとなるため、JBoss はこのインスタンスをダーティな読み込みおよび書き込みから保護しなければなりません。このため、 デフォルトのエンティティ bean ロック機能の動作はそれが完了するまで 1 トランザクション内のエンティティ bean をロックします。 これはトランザクション内のエンティティ bean でなんらかのメソッドが呼び出されると、保持しているトランザクションがコミットを行うまたはロールバックされるまでは他のトランザクションはこの bean へのアクセスできないということになります。