bea ホーム | 製品 | dev2dev | support | askBEA
BEA Logo Tuxedo
 ドキュメントのダウンロード   サイトマップ   用語集 
検索
0

Tuxedo C リファレンス

 Previous Next Contents View as PDF  

tpscmt(3c)

名前

tpscmt()tpcommit() がいつ戻るかを設定するルーチン

形式

#include <atmi.h> 
int tpscmt(long flags)

機能説明

tpscmt() は、flags で指定した値を TP_COMMIT_CONTROL 特性に設定します。TP_COMMIT_CONTROL 特性は、tpcommit() の呼び出し元に制御を戻すことに関して、tpcommit() の動作に影響を与えます。プログラムがトランザクション・モードにあるかどうかに関係なく、プログラムから tpscmt() を呼び出すことができます。他のプログラムがコミットしなければならないトランザクションに呼び出し元が参加している場合は、tpscmt() を呼び出してもそのトランザクションに影響を与えないことに注意してください。むしろ、呼び出し元がコミットするその後のトランザクションに影響を与えます。

ほとんどの場合、BEA Tuxedo ATMI システムのスレッドの制御が tpcommit() を呼び出す場合にのみ、トランザクションがコミットされます。ただし、例外が 1 つあります。UBBCONFIG ファイルの *SERVICES セクションの AUTOTRAN 変数が有効になっているためサービスがトランザクション・モードでディスパッチされる場合、トランザクションは tpreturn() を呼び出して戻ります。tpforward() が呼び出されると、最終的にサーバが tpreturn() を呼び出すことでトランザクションが完了します。このように、tpreturn() を呼び出すサービスの TP_COMMIT_CONTROL 属性の設定によって、サーバ中で tpcommit() からいつ制御が戻るかが決まります。tpcommit() がヒューリスティックなエラー・コードを返した場合、サーバはメッセージをログ・ファイルに書き込みます。

クランアントが BEA Tuxedo ATMI システムのアプリケーションに参加する場合は、この特性の初期設定はコンフィギュレーション・ファイルから取られます(UBBCONFIG(5)RESOURCES セクションの CMTRET 変数の項を参照)。

flags に設定できる有効な値を次に示します。

TP_CMT_LOGGED

このフラグは、2 フェーズ・コミット・プロトコルの第 1 フェーズによって第 2 フェーズの前にコミット決定が記録された後、tpcommit() から返ることを指定します。この設定は、tpcommit() の呼び出し元に対するより速い反応を見込んでいます。だだし、第 2 フェーズの完了を待つ時間的な遅延のため、トランザクションのパーティシパントが処理をヒューリスティックに完了する (すなわち、異常終了を示します) と決めるかもしれないという危険が存在します。この場合は、tpcommit() はすでに戻っているので、これを呼び出し元に伝える方法はありません (ただし、リソース・マネージャがヒューリスティックな設定を行うと、BEA Tuxedo ATMI システムはメッセージをログ・ファイルに書き込みます)。正常な状態では、第 1 フェーズの間にコミットすることを約束しているパーティシパントは、第1 フェーズでコミットします。通常、ネットワークまたはサイト障害による問題は、第 2 フェーズの間にヒューリスティックな決定が行われる原因になります。

TP_CMT_COMPLETE

このフラグは、2 フェーズ・コミット・プロトコルが完全に終了してから tpcommit(3c) が終了することを指定します。この設定により、tpcommit() は第 2 フェーズのコミット中にヒューリスティックな判断がなされたことを示すことができます。

マルチスレッドのアプリケーションの場合、TPINVALIDCONTEXT 状態のスレッドは、tpscmt() の呼び出しを発行できません。

戻り値

成功の場合、tpscmt()TP_COMMIT_CONTROL 特性の以前の値を返します。

異常終了すると、tpscmt() は -1 を返し、tperrno を設定してエラー条件を示します。

エラー

異常終了時には、tpscmt()tperrno を次のいずれかの値に設定します

[TPEINVAL]

flags は、TP_CMT_LOGGED または TP_CMT_COMPLETE のいずれかではありません。

[TPEPROTO]

tpscmt() が不正に呼び出されました。

[TPESYSTEM]

BEA Tuxedo システムのエラーが発生しました。エラーの正確な内容がログ・ファイルに書き込まれます。

[TPEOS]

オペレーティング・システムのエラーが発生しました。

注意事項

BEA Tuxedo ATMI システムのトランザクションを記述するために tpbegin()tpcommit()、および tpabort() を使用する場合、XA インターフェイスに準拠した (呼び出し元に妥当にリンクされている) リソース・マネージャが行う作業のみがトランザクションの特性を備えていることを記憶しておくことが重要です。トランザクションにおいて実行される他のすべての操作は、tpcommit() あるいは tpabort() のいずれにも影響されません。詳細については buildserver(1) を参照してください。

リソース・マネージャによって実行される操作が、BEA Tuxedo ATMI システムのトランザクションの一部となるように、XA インターフェイスを満たすリソース・マネージャをサーバにリンクします。

関連項目

tpabort(3c)tpbegin(3c)tpcommit(3c)tpgetlev(3c)

 

Back to Top Previous Next
Contact e-docsContact BEAwebmasterprivacy