|
|
|
|
|
tpreturn( ) および tpforward( ) 関数
トランザクション・モードで実行中にプロセスを呼び出すと、tpreturn() と tpforward() は、トランザクションのサービス部分をそのトランザクションの完了時にコミットまたはアボートできる状態にします。同じトランザクションでサービスを何度も呼び出すことができます。システムは、トランザクションのイニシエータによって tpcommit() または tpabort() が呼び出されない限り、トランザクションを完全にはコミットまたはアボートしません。
サービス内で行われた通信呼び出しのすべての未処理の記述子が取得されるまで、tpreturn() または tpforward() を呼び出すことはできません。rval に TPSUCCESS を設定して、未処理の記述子で tpreturn() を呼び出すと、プロトコル・エラーが発生し、tpgetrply() を待機中のプロセスに TPESVCERR が返されます。そのプロセスがトランザクション・モードになっている場合、呼び出し元は「アボートのみ」にマークされます。トランザクションのイニシエータが tpcommit() を呼び出した場合も、トランザクションが暗黙的にアボートされます。rval に TPFAIL を設定して、未処理の記述子で tpreturn() を呼び出すと、tpgetrply() を待機中のプロセスに TPESVCFAIL が返されます。トランザクションへの影響は同じです。
トランザクション・モードで実行中に tpreturn() を呼び出すと、tpreturn() で発生したプロセス・エラー、またはアプリケーションによって rval に設定された値で示されるエラーにより、トランザクションの結果に影響することがあります。
tpforward() を使用すると、ある時点までは要求が正しく処理されていることを示すことができます。アプリケーション・エラーが検出されない場合、システムは tpforward() を呼び出します。アプリケーション・エラーが検出された場合、システムは TPFAIL を設定して tpreturn() を呼び出します。tpforward() を正しく呼び出さないと、システムはその呼び出しをプロセス・エラーと見なし、エラー・メッセージを要求元に返します。
|
|
|
|
|
|
Copyright © 2001 BEA Systems, Inc. All rights reserved.
|