11.30 Oracle Tuxedoシステムで提供されるサブルーチン
Oracle Tuxedoシステムで提供されるサブルーチンtpsvrinit()
、tpsvrdone()
、tpsvrthrinit(3c)
およびtpsvrthrdone(3c)
は、トランザクションで使用される場合は特定の規則に従う必要があります。
ノート:
tpsvrthrinit(3c)
とtpsvrthrdone(3c)
は、マルチスレッド・アプリケーションだけで指定できます。tpsvrinit()
とtpsvrdone()
は、スレッド・アプリケーションでも非スレッド・アプリケーションでも指定できます。
Oracle Tuxedoシステム・サーバーは、初期化時にtpsvrinit()
またはtpsvrthrinit(3c)
を呼び出します。特に、tpsvrinit()
またはtpsvrthrinit(3c)
は、呼出し側プロセスがサーバーになった後、サービス・リクエストの処理を開始する前に呼び出されます。tpsvrinit()
またはtpsvrthrinit(3c)
で非同期通信を実行した場合、関数が戻る前にすべての応答が取得されなければなりません。この処理が行われなかった場合、システムは保留中の応答があっても無視して、サーバーを終了します。tpsvrinit()
またはtpsvrthrinit(3c)
でトランザクションを定義した場合、関数が戻る前にすべての非同期応答を取得して、トランザクションを終了しなければなりません。この処理が行われなかった場合、システムは未処理の応答が残っていてもトランザクションを中断し、それらの応答をすべて無視します。その場合、サーバーは正常に終了します。
Oracle Tuxedoシステム・サーバーの抽象化では、サービス・リクエストの処理が完了した後、終了する前にtpsvrdone()
またはtpsvrthrdone(3c)
を呼び出します。この時点で、サーバーのサービスの通知は取り消されますが、サーバー自体はアプリケーションから分離していません。tpsvrdone()
またはtpsvrthrdone(3c)
で通信を開始した場合は、未処理の応答をすべて取得してから戻る必要がありますが、この処理が行われなかった場合、システムは保留中の応答があっても無視して、サーバーを終了します。tpsvrdone()
またはtpsvrthrdone(3c)
内でトランザクションを開始した場合は、すべての応答を取得してから終了する必要がありますが、この処理が行われなかった場合、システムはトランザクションを中断し、応答を無視します。この場合もサーバーは終了します。
親トピック: エラーの管理