12.2. StateManager クラスを直接利用

本書の例は、LockManager クラスからユーザクラスを取得しています。以下のように理由は2つあります。
  • 最も重要な点ですが、アトミックアクションのシリアル化における制限で上記が必要になるため。
  • 次にプログラマの介入の必要性が軽減されるため。
しかし、JBoss Transaction Service の永続性やリカバリの仕組みだけを利用する必要がある場合は、StateManagerからユーザクラスを直接取得可能です。
StateManager から直接取得したクラスは、LockManagerに依存するのではなく、明示的に状況管理の仕組みを使う必要があります。StateManager のコンストラクタは事実上、LockManagerと同一となっているため、activatedeactivatemodified メソッドを適切に利用しなければなりません。

12.2.1. activate メソッド

boolean activate ()
boolean activate (String storeRoot)
activate メソッドは、オブジェクトストアからオブジェクトをロードします。オブジェクトのUIDは、コンストラクタ経由で事前に設定する必要があり、オブジェクトがストア内に存在していなければなりません。このオブジェクトが問題なく読み込まれると、restore_state メソッドが呼び出されメモリ内にオブジェクトを構築します。activate メソッドの動作方式は、オブジェクトが一旦有効になるとその後の呼出しは無視されるようになっています。パラメータはオブジェクトストアの root 名を指し、オブジェクトの検索を行います。値が null の場合、デフォルトのストアを利用します。