3.4. Thread of Control (スレッド)

X/Open XA インターフェースは、トランザクションの紐付けに関連するXA を同じスレッドのコンテキストから呼び出す必要があると指定します。この thread-of-control の要件は、アプリケーションのスレッドがメソッドの呼出時に動的にディスパッチされるという、オブジェクト指向でコンポーネントベースのアプリケーションランタイム環境には適用できません。接続が複数のメソッド呼出しにわたる場合、別のスレッドが同じ接続リソースを使いリソースマネージャにアクセスする場合もあります。アプリケーションサーバーの実装によっては、異なるスレッドが同じXAResourceオブジェクトに関与する場合があります。リソースコンテキストやトランザクションコンテキストは、スレッドコンテキストから独立して機能する場合もあるため、異なるスレッドによりstartend メソッドを呼び出すことができます。
アプリケーションサーバーが、複数スレッドによる単一の XAResource オブジェクトの使用やリソースマネージャへ関連付けられた接続の使用を許可する場合、アプリケーションサーバーは常時、トランザクションコンテキスト1つのみがそのリソースに紐付けられているようにしなければなりません。そのため、XAResource インターフェースでは、リソースマネージャがいずれのスレッドコンテキストからの2相コミットプロトコルにも対応できるようにする必要があります。