3.1.6 プロパゲーション
クライアントアプリケーションがサーバオブジェクトに対してオペレーション実行時に,クライアント側のトランザクションコンテキストをサーバに伝達できます。これをプロパゲーションといいます。プロパゲーションには,暗黙的プロパゲーションと明示的プロパゲーションの2種類があります。一般的なアプリケーションプログラムでは,暗黙的プロパゲーションを使用します。直接コンテキスト管理を使用している場合や,特別なプロパゲーションルールを設けたい場合だけ,明示的プロパゲーションを使用してください。
- 〈この項の構成〉
(1) 暗黙的プロパゲーション
サーバオブジェクトへのリクエスト発行時に,間接コンテキスト管理によってクライアント側のCurrent擬似オブジェクトと関連づけられているトランザクションコンテキストを,トランザクションサービスがリクエストとともに暗黙的にプロパゲーションします。このため,クライアントがトランザクションコンテキストに直接干渉することなくプロパゲーションが行われます。暗黙的プロパゲーションを使用する場合は,サーバ側POAポリシーのOTSPolicyにADAPTS,またはREQUIRESを設定していなければなりません。直接コンテキスト管理を行っている場合,またはサーバ側POAポリシーのOTSPolicyにFORBIDSを設定している場合は,リクエスト時にトランザクションサービスによる暗黙的プロパゲーションは行われません。
(a) OTS 1.1準拠のアプリケーションプログラムとの相互接続
暗黙的プロパゲーションでは,OTS 1.1準拠のアプリケーションプログラム(TPBroker Version 3のアプリケーションプログラムなど)と相互接続できる場合があります。暗黙的プロパゲーションでの,OTS 1.1準拠のアプリケーションプログラムとの相互接続性を次の表に示します。
クライアント |
サーバ |
||||
---|---|---|---|---|---|
TPBroker Version 3 |
TPBroker Version 5 |
||||
C++ |
Java |
C++ |
Java |
||
TPBroker Version 3 |
C++ |
○ |
○ |
× |
× |
Java |
○ |
○ |
× |
× |
|
TPBroker Version 5 |
C++ |
○※ |
○ |
○ |
○ |
Java |
○※ |
○ |
○ |
○ |
- (凡例)
-
○:接続できる
×:接続できない
- 注※
-
TPBroker Version 5のクライアントアプリケーションは,TPBroker Version 3 C++のシングルスレッドのサーバとは接続できません。TPBroker Version 3 C++のサーバと接続するには,TPBroker Version 3 C++のサーバをマルチスレッドにしてください。
(2) 明示的プロパゲーション
トランザクションサービスによって定義されたControlやCoordinatorなどのオブジェクトのリファレンスをパラメタとして明示的にサーバオブジェクトに渡すことによって,アプリケーションプログラムがトランザクションコンテキストをプロパゲーションします。サーバ側POAポリシーのOTSPolicyには,通常はFORBIDSを設定します。明示的プロパゲーションを使用すると,チェックドトランザクション機能が無効となりますので注意してください。
(a) OTS 1.1準拠のアプリケーションプログラムとの相互接続性
明示的プロパゲーションでは,OTS 1.1準拠のアプリケーションプログラム(TPBroker Version 3のアプリケーションプログラムなど)と相互接続できます。明示的プロパゲーションでの,OTS 1.1準拠のアプリケーションプログラムとの相互接続性を次の表に示します。
クライアント |
サーバ |
||||
---|---|---|---|---|---|
TPBroker Version 3 |
TPBroker Version 5 |
||||
C++ |
Java |
C++ |
Java |
||
TPBroker Version 3 |
C++ |
○ |
○ |
○ |
○ |
Java |
○ |
○ |
○ |
○※ |
|
TPBroker Version 5 |
C++ |
○ |
○ |
○ |
○ |
Java |
○ |
○ |
○ |
○ |
- (凡例)
-
○:接続できる
- 注※
-
明示的プロパゲーションで呼び出されたTPBroker Version 3のクライアントアプリケーションが,TPBroker Version 5のサーバを呼び出すと,INVALID_TRANSACTION例外が返されることがあります。これを回避するには,TPBroker Version 3のクライアントアプリケーションを次のように修正してください。
-
TPBroker Version 5のサーバを呼び出す前に,Currentオブジェクトのsuspendオペレーションを実行し,スレッドとトランザクションとの関連づけをなくす。
-
TPBroker Version 5サーバの呼び出し後に,Currentオブジェクトのresumeオペレーションを実行し,再度スレッドとトランザクションとを関連づける。
-