![]() |
![]() |
|
|
tpbegin(3c)
名前
tpbegin()-トランザクションを開始するためのルーチン
形式
#include <atmi.h>
int tpbegin(unsigned long timeout, long flags)
機能説明
BEA Tuxedo ATMI システムにおけるトランザクションは、完全に成功するか、あるいは何も影響を残さない 1 つの論理的な作業単位を定義するときに使用します。トランザクションにより、多くのプロセスで (そして、多分様々なサイトで) 行われる作業を1つの分割できない単位として扱うことができます。トランザクションのイニシエータは tpbegin() とともに、tpcommit() または tpabort() を使用して、トランザクション内での処理を記述します。いったん tpbegin() が呼び出されると、他のプロセスとの通信は、後のプロセス (もちろん、サーバ) をトランザクション・モードにすることができます (つまり、サーバの作業はトランザクションの一部となります)。トランザクションに参加したプロセスをパーティシパントと呼びます。トランザクションには、必ず1つのイニシエータがあり、いくつかのパーティシパントをもつことができます。tpcommit() または tpabort() を呼び出せるのは、トランザクションの実行元だけです。パーティシパントは、tpreturn() を呼び出したときに使用する戻り値 (rvals) によって、トランザクションの結果に影響を与えることができます。いったんトランザクション・モードになると、サーバに出されたすべてのサービス要求は、トランザクションの一部として処理されます (明示的にリクエスタからのそれ以外の指定がなければ)。
また、会話サーバに対して確立されたオープン接続があるときに、プログラムがトランザクションを開始しても、これらの接続はトランザクション・モードには変わりません。これは、tpconnect() の呼び出し時に TPNOTRAN フラグを指定したことと同じです。
tpbegin() の最初の引数 timeout は、トランザクションのタイムアウトまでの時間を最低 timeout 秒にすることを指定します。トランザクションはタイムアウト時間を経過した後は、「アボートのみ」としてマーク付けされます。timeout の値が 0 であると、トランザクションにはシステムが許すかぎりの最大時間 (秒単位) のタイムアウト値が与えられます (つまり、このときのタイムアウト値は、システムが定義している符号なし long 型の最大値になります)。
現時点では、tpbegin() の第2引数 flags は将来の用途のために予約されており、0 に設定しておかなければなりません。
マルチスレッドのアプリケーションの場合、TPINVALIDCONTEXT 状態 のスレッドは、tpbegin() の呼び出しを発行できません。
戻り値
異常終了すると、tpbegin() は -1 を返し、tperrno() を設定してエラー条件を示します。
エラー
異常終了時には、tpbegin() は tperrno() を次のいずれかの値に設定します。
注意事項
BEA Tuxedo ATMI システムのトランザクションを記述するために tpbegin()、tpcommit()、および tpabort() を使用する場合、XA インターフェイスに準拠した (呼び出し元に妥当にリンクされている) リソース・マネージャが行う作業のみがトランザクションの特性を備えていることを記憶しておくことが重要です。トランザクションにおいて実行される他のすべての操作は、tpcommit() あるいは tpabort() のいずれにも影響されません。リソース・マネージャによって実行される操作が、BEA Tuxedo ATMI システムのトランザクションの一部となるように、XA インターフェイスを満たすリソース・マネージャをサーバにリンクします。詳しくは、buildserver() を参照してください。
関連項目
tpabort(3c)、 tpcommit(3c)、 tpgetlev(3c)、 tpscmt(3c)
![]() |
![]() |
![]() |
|
Copyright © 2001 BEA Systems, Inc. All rights reserved.
|