1.4.1 サーバーの基本的な動作

サーバーのビルドでは、サービス・サブルーチンと、Oracle Tuxedoシステムで提供されるmain()プロセスとがアプリケーションによって組み合わされます。このmain()関数はシステムによって提供され、定義済の関数から構成されています。この関数は、サーバーの初期化と終了を行ったり、バッファを割り当てて、リクエストを受信してサービス・ルーチンへのディスパッチを行ったりします。この処理はすべてアプリケーションに透過的です。

次の図は、サーバーとサービス・サブルーチン間の相互作用を示す擬似コードを示しています。

図1-2 リクエスト/レスポンス型サーバーとサービス・サブルーチンの擬似コード


リクエスト/レスポンス型サーバーとサービス・サブルーチンの擬似コードの図

初期化後、ATMIサーバーはバッファの割当てを行い、リクエスト・メッセージがメッセージ・キューに登録されるまで待機し、そのリクエストをキューから取り出してサービス・サブルーチンに送り、リクエストを処理します。応答が必要な場合、その応答はリクエスト処理の一部とみなされます。

会話型パラダイムは、次の図の擬似コードで示すように、リクエスト/レスポンス型パラダイムとは多少異なります。

図1-3 会話型サービス・サブルーチンの擬似コード


会話型サービス・サブルーチンの擬似コードの図

Oracle Tuxedoシステム提供のmain()プロセスには、プロセスをATMIサーバーとして登録し、サービスを公開し、バッファを割り当て、キューからリクエスト・メッセージを取り出すために必要なコードが記述されています。ATMI関数は、リクエストを処理するサービス・サブルーチンで使用されます。サービス・サブルーチンのコンパイルとテストを行う準備ができたら、これらをサーバーのmain()とリンクして、実行可能サーバーを生成します。その場合、buildserverコマンドを実行します。