10.3.4. オブジェクトの構築と破棄

JBoss Transaction Serviceオブジェクトは、1)回復可能、2)永続的、3)回復可能かつ永続的、あるいは4)回復可能でも永続的でもないの内のいずれかとなっています。これらの属性はオブジェクト構築時にのみ設定可能です。そのため、LockManagerは取得したクラスが利用できるように、保護コンストラクタを2つ提供し、以下のような明確な目的を果たします。
LockManager ()
以前のステートを持たない新規オブジェクトの作成ができます。
LockManager(int ObjectType, ObjectName attr)
以前のステートを持たない新規オブジェクトを作成できます。ObjectTypeパラメータはオブジェクトは回復可能 (recoverable)、回復可能かつ永続的 (ANDPERSISTENTで示される)、いずれでもない (NEITHER) で表します。オブジェクトが永続的と登録されると、その状態がオブジェクトストアの1つに格納されます。shared パラメータは、オブジェクトがRECOVERABLEの場合のみ意味を持ちます。attrがnull でなく、オブジェクトモデルがSINGLE (デフォルトの動作) であれば、オブジェクトの回復可能な状態がそのオブジェクト自体に保持されます。そうでない場合は、オブジェクトのステートは、各アトミックアクションの間にインメモリオブジェクトストアの中に格納されます。
新規永続オブジェクトのコンストラクタは、そのコンストラクタ内でアトミックアクションを使うはずです。こうすることで、コンストラクタ内のアクションがコミットされるとオブジェクトのステートがオブジェクトストアに自動的に書き込まれるようにします。あるいは、コンストラクタ内にアクションが存在する場合は、適切なトップレベルアクションのコミット時にオブジェクトストアに自動書き込みされます。
LockManager(Uid objUid)
objUid パラメータにて指定された既存の永続オブジェクトへアクセスができるようになります。オブジェクトの以前のステート(objUid パラメータの値により特定) は、オブジェクトストアから自動的にロードされます。
LockManager(Uid objUid, ObjectName attr)
objUid パラメータで指定した既存の永続オブジェクトへアクセスできます。オブジェクトの以前のステートは、objUidの値により特定しますが、この状態は自動的のオブジェクトストアからロードされます。attrパラメータが nullではなく、かつオブジェクトモデルがSINGLE (デフォルト動作) の場合、オブジェクトは各トップレベルトランザクションの開始時に再アクティベートされません。
プログラマ定義クラスのデストラクタは、継承した操作であるterminateを呼び出し、オブジェクトが破棄予定であることをステート管理メカニズムに通知する必要があります。そうでない場合は、予期せぬ結果が発生してしまう可能性があります。
LockManager クラスは StateManagerから継承するため、提供されたObjectName インスタンスをStateManager クラスに渡します。同様に、StateManagerオブジェクトモデルを前述したように設定することができます。