TX その22 TxConnectionManager
以前「大量のクラスコメントがある」と日記に書いた際についでに作ったTxConnectionManagerのクラスコメントの乱雑和訳
- LocalTxConnectionManagerは,LocalTransactionをサポートするJCAアダプタを管理するためのConnectionManager実装である.
- LocalTxConnectionManagerはTransactionManagerを通じてトランザクションを管理するため,XAResourceを実装したConnectionEventListenerを実装している.
- 全てのローカルなトランザクションが同じManagedConnectionの中で行われることを保証するため,XIDとManagedConnectionの対応表を持っている.
- Connectionが要求された時,あるいはトランザクションが開始されたときに,既に存在するManagedConnectionがグローバルトランザクションへ登録されているかどうかを確認する(この訳自信なし).
- そうでなければフリーのManagedConnectionはローカルトランザクションを開始する.
- BaseConnectionManager2から,ManagedConnectionPool MBeanから取得したConnectionを管理する機能,SubjectSecurityDomainからSubjectを検索する機能,トランザクションとメソッド呼び出しの境界をまたいだConnectionを保持するためにCachedConnectionManagerと協調する機能を含んでいる(訳自信なし).
- MBeanへの参照で重要なものは,ManagedConnectionPoolの提供元(通常はJBossManagedConnectionPool)とManagedConnectionFactoryの代表であるRARDeployment(この訳もあやしい).
- このConnectionManagerは以下の処理を行わなければならない.
- 1. アプリケーションコンポーネントが新しいConnectionHandleを要求した場合には,ManagedConnectionを探してConnectionEventListenerが登録されているかどうかを確認しなければならない.CachedConnectionManagerにConnectionHandleが与えられたことを知らせなければならない.各ManagedConnectionの扱っている数をカウントしなければならない.もし現在トランザクションが存在していればManagedConnectionのローカルトランザクションにConnectionEventListenerのXAResource実装を使ったトランザクションの中でenlistしなければならない.エントリポイント:ConnectionManager.allocateConnection
- 2. ConnectionEventListenerからConnectionClosedイベントを受け取った場合には,ハンドルのカウント数を減らさなければならない.もしハンドルのカウント数が0だった場合には,XAResouceはトランザクションからdelistされるべきだ.CachedConnectionManagerはConnectionがクローズされたのことの知らせを受けなければならない.エントリポイント:ConnectionEventListener.ConnectionClosed.w
- 3. CachedConnectionManagerを通じてUserTransactionからトランザクションが開始されたことの通知を受け取った場合には,現在のオブジェクトと関連する全てのManagedConnectionはトランザクションの中にenlistされなければならない.エントリポイント:CachedConnectiomManagerからConnectionCacheListener.transactionStarted(Transaction, Collection) このCollectionオブジェクトはConnectionRecord objects.written
- 5. CachedConnectionInterceptorから"entering object"の通知を受け取った場合には,現在のオブジェクトのための全てのConnectionはManagedConnectionと協調しなければならない.トランザクションが存在する場合には,XAResourceはそのトランザクションとともにenlistされなければならない.エントリポイント:ConnectionCacheListener.reconnect(Collection conns) このCollectionオブジェクトはConnectionRecordオブジェクト.
- 6. CachedConnectionInterceptorから"leaving object"の通知を受け取った場合には,現在のオブジェクトのための全てのmanagedConnectionは現在のトランザクションからXAResourceをdelistし,各ManagedConnectionをクリーンアップしなければならない.エントリポイント:ConnectionCacheListener.disconnect(Collection conns)
これ書いたのってAdrian博士なのかな.4番が抜けてますよ〜(笑 さておき,この間は読んでも理解できない個所が多かったんだが,今回は少しは・・・
このコメントで"LocalTxConnectionManager"と書いてあるものは多分TxConnectionManagerのことなのかと."LocalTxConnectionManager"でソースフォルダ検索してもこのクラスしかヒットしない.