10.3.3. ロックポリシー

JBoss Transaction Service のロックは、特別なシステムタイプではなく、別のJBoss Transaction Service のオブジェクトインスタンスとなっています。ロックを永続化し、単純な形式にて命名できるようにLock クラスはStateManager から派生してます。さらに、LockManagerクラスは実際のロックリクエスト許可ポリシーに関するセマンティクスを把握していません。Lock クラスのインスタンスでこの情報を保持し、conflictsWith メソッドを提供しています。LockManagerがこれを使い2つのロックが矛盾しているかを判断します。このように分けることにより、基本的なLock クラスから新たなロックタイプを取得することができ、矛盾した操作に関する適切な定義を提供し同時実行レベルを改善することができます。
public class LockMode
{
    public static final int READ;
    public static final int WRITE;
};

public class LockStatus
{
    public static final int LOCKFREE;
    public static final int LOCKHELD;
    public static final int LOCKRETAINED;
};

public class Lock extends StateManager
{
    public Lock (int lockMode);
      
    public boolean conflictsWith  (Lock otherLock);
    public boolean modifiesObject ();
      
    public boolean restore_state (InputObjectState os, int ObjectType);
    public boolean save_state (OutputObjectState os, int ObjectType);
    public String type ();
    . . .
};
Lock クラスによりmodifiesObject メソッドが提供され、LockManager がそれを使いロッキングリクエストを許可するのに呼出しあるいはメソッドが必要かを判断します。こうすることで、単純な読み込みや書き込み以外のロッキングモードにも対応できるようになります。提供されたLock クラスは従来の multiple reader/single writer ポリシーに対応しています。