5.3 サーバーのコーディングのためのガイドライン
通信の詳細はOracle Tuxedoシステムのmain()
ルーチンによって処理されるため、通信の実装よりもアプリケーション・サービスのロジックに集中できます。ただし、システムで提供されるmain()
と互換性を保つために、アプリケーション・サービスが特定の規則に従っている必要があります。これらの規則は、サービス・ルーチンをコーディングするためのサービス・テンプレートとも呼ばれます。次に、これらの規則についてまとめます。これらの規則の詳細は、『Oracle Tuxedo ATMI C関数リファレンス』のtpservice(3c)
のリファレンス・ページを参照してください。
- リクエスト/レスポンス・サービスが一度に受信できるリクエストの数は1つだけであり、送信できる応答も1つだけです。
- リクエスト/レスポンス・サービスが一度に処理するリクエストは1つだけです。別のリクエストを受け取ることができるのは、リクエスタに応答を送信した後、または別の処理を行うために別のサービスにリクエストを転送した後だけです。
- サービス・ルーチンを終了するには、tpreturn()またはtpforward()関数のいずれかを呼び出す必要があります。これらの関数は、C言語の
return
文と同じように機能しますが、処理が終了すると、呼出し側の関数ではなくOracle Tuxedoシステムのmain()
関数に制御が戻ります。 - tpacall()を使用して別のサーバーと通信する場合は、サービスの開始元は未処理の応答がすべて処理されるまで待機するか、またはtpcancel()を使用して未処理の応答をすべて無効にしてから、tpreturn()またはtpforward()を呼び出す必要があります。
- サービス・ルーチンは、1つの引数、つまり
svcinfo
を使用して呼び出され、この引数は、サービス情報が定義された構造体(TPSVCINFO
)を指すポインタです。
親トピック: サーバーのコーディング