4.4.5. トランザクションサービス連携 |
複数の処理を行い、それらの結果がすべて正しいならば結果を反映し、そうでなければすべての処理を初期状態に戻す必要のあるような、分割不可能な処理の単位をトランザクションといいます。トランザクション処理の目的や処理内容はどのような機能を提供するかによって異なります。したがって、Object Brokerが提供するのはトランザクション処理を行うアプリケーションを作成するにあたって必要な機能であって、トランザクションサービスそのものではありません。Object Brokerがトランザクションサービスの実装部を提供しているわけではないことに注意してください。
4.4.1.13. CORBA::TSIdentificationクラス |
トランザクションサービスは、送信者と受信者に大別されます。このクラスは送信者オブジェクト(CosTSPortability::Sender)もしくは受信者オブジェクト(CosTSPortability::Receiver)をORBライブラリに通知します。CORBA::TSIdentification擬似オブジェクトはCORBA::ORB::__get_tsidentによって取得することができます。
identify_sender | 送信者オブジェクトを登録する |
identify_receiver | 受信者オブジェクトを登録する |
4.4.5.1. CosTSPortability::Senderクラス |
送信者側の処理を行うクラスです。このクラスのメソッドはトランザクションサービスの実装者が実装しなくてはなりません。
sending_request | トランザクションコンテキストを取り出す |
received_reply | トランザクションコンテキストを設定する |
4.4.5.2. CosTSPortability::Receiverクラス |
受信者側の処理を行うクラスです。このクラスのメソッドはトランザクションサービスの実装者が実装しなくてはなりません。
sending_reply | トランザクションコンテキストを取り出す |
received_request | トランザクションコンテキストを設定する |
CORBA::TSIdentification::identify_sender
- 送信者オブジェクトを登録する
#include <orb.h> void CORBA::TSIdentification::identify_sender( CosTSPortability::Sender_ptr sender, CORBA::Environment& env = Ob_default_environment() );
送信者オブジェクトを登録します。登録したsenderオブジェクトはクライアントとして動作するとき、そのプロセスでの各オペレーション実行時にトランザクションコンテキストを設定するため(要求送信時)、および取り出すため(応答受信時)に呼び出されます。
envは、関数を呼び出した後、例外の有無を調べるために指定します(オプション)。
ありません。
CORBA標準例外がthrowされます。
CosTSPortability::Sender::sending_request,
CosTSPortability::Sender::received_reply,
CosTSPortability::Receiver::received_request,
CosTSPortability::Receiver::sending_reply
CORBA::TSIdentification::identify_receiver
- 受信者オブジェクトを登録する
#include <orb.h> void CORBA::TSIdentification::identify_receiver( CosTSPortability::Receiver_ptr receiver, CORBA::Environment& env = Ob_default_environment() );
受信者オブジェクトを登録します。登録したreceiverオブジェクトはサーバオブジェクトとして動作するとき、そのプロセスでの各オペレーション実行時にトランザクションコンテキストを取り出すため(要求受信時)、および設定するため(応答送信時)に呼び出されます。
envは、関数を呼び出した後、例外の有無を調べるために指定します(オプション)。
ありません。
CORBA標準例外がthrowされます。
CosTSPortability::Sender::sending_request,
CosTSPortability::Sender::received_reply,
CosTSPortability::Receiver::received_request,
CosTSPortability::Receiver::sending_reply
CosTSPortability::Sender::sending_request - トランザクションコンテキストを取り出す
#include <orb.h> void CosTSPortability::Sender::sending_request( CosTSPortability::ReqId id, CosTransactions::PropagationContext*& ctx, CORBA::Environment& env = Ob_default_environment() );
このオペレーションはトランザクションサービス実装者により実装されます。ORBはクライアントプロセスでオペレーション要求を送信する前にこのオペレーションを呼び出します。
idは、要求と応答を関連付ける識別子です。
ctxからトランザクションコンテキストを取り出します。
envは、関数を呼び出した後、例外の有無を調べるために指定します(オプション)。
ありません。
CORBA標準例外がthrowされます。
CORBA::TSIdentification::identify_sender,
CosTSPortability::Sender::received_reply,
CosTSPortability::Receiver::received_request,
CosTSPortability::Receiver::sending_reply
CosTSPortability::Sender::received_reply - トランザクションコンテキストを設定する
#include <orb.h> void CosTSPortability::Sender::received_reply( CosTSPortability::ReqId id, const CosTransactions::PropagationContext& ctx, const CORBA::Environment& inenv, CORBA::Environment& env = Ob_default_environment() );
このオペレーションはトランザクションサービス実装者により実装されます。ORBはクライアントプロセスでオペレーション応答を受信した後にこのオペレーションを呼び出します。
idは、要求と応答を関連付ける識別子です。
ctxにトランザクションコンテキストを設定します。
inenvに例外を設定します。
envは、関数を呼び出した後、例外の有無を調べるために指定します(オプション)。
ありません。
CORBA標準例外がthrowされます。
CORBA::TSIdentification::identify_sender,
CosTSPortability::Sender::sending_request,
CosTSPortability::Receiver::received_request,
CosTSPortability::Receiver::sending_reply
CosTSPortability::Receiver::sending_reply - トランザクションコンテキストを取り出す
#include <orb.h> void CosTSPortability::Receiver::sending_reply( CosTSPortability::ReqId id, CosTransactions::PropagationContext*& ctx, CORBA::Environment& env = Ob_default_environment() );
このオペレーションはトランザクションサービス実装者により実装されます。ORBはサーバプロセスでオペレーション応答を送信する前にこのオペレーションを呼び出します。
idは、要求と応答を関連付ける識別子です。
ctxからトランザクションコンテキストを取り出します。
envは、関数を呼び出した後、例外の有無を調べるために指定します(オプション)。
ありません。
CORBA標準例外がthrowされます。
CORBA::TSIdentification::identify_receiver,
CosTSPortability::Sender::sending_request,
CosTSPortability::Sender::received_reply,
CosTSPortability::Receiver::received_request
CosTSPortability::Receiver::received_request - トランザクションコンテキストを設定する
#include <orb.h> void CosTSPortability::Receiver::received_request( CosTSPortability::ReqId id, const CosTransactions::PropagationContext& ctx, CORBA::Environment& env = Ob_default_environment() );
このオペレーションはトランザクションサービス実装者により実装されます。ORBはサーバプロセスでオペレーション要求を受信した後にこのオペレーションを呼び出します。
idは、要求と応答を関連付ける識別子です。
ctxにトランザクションコンテキストを設定します。
envは、関数を呼び出した後、例外の有無を調べるために指定します(オプション)。
ありません。
CORBA標準例外がthrowされます。
CORBA::TSIdentification::identify_receiver,
CosTSPortability::Sender::sending_request,