![]() |
![]() |
|
|
ATMI との対話
TxRPC 実行プログラムは BEA Tuxedo システムを使って RPC 通信を行います。その他の BEA Tuxedo のインターフェイスや通信メカニズムは、RPC 呼び出しを使用している同一のクライアントおよびサーバ内で使用できます。このため、単一のクライアントが要求/応答呼び出し (例:tpcall(3c)、tpacall(3c)、 tpgetrply(3c))、会話型呼び出し (tpconnect(3c)、tpsend(3c)、 tprecv(3c)、tpdiscon(3c))を行い、安定キューにアクセス (tpenqueue(3c) および tpdequeue(3c) )することが可能です。クライアントが、BEA Tuxedo ソフトウェアを最初に呼び出すときに、自動的にアプリケーションに参加します。クライアントが最初に行う呼び出しは、RPC 呼び出し、その他の通信呼び出し、ATMI 呼び出し (例 : バッファ割り当て、任意通知など) です。ただし、アプリケーションがセキュリティをオンにした状態で実行していたり、あるいはクライアントが特定のリソース・マネージャ・グループの一部として稼働する必要がある場合は、関数 tpinit(3c) を明示的に呼び出してアプリケーションに参加しなければなりません。明示的に設定できるオプションの詳細と一覧については、『BEA Tuxedo C 言語リファレンス』の tpinit(3c) を参照してください。アプリケーションが BEA Tuxedo システムを使用した作業を完了する場合には、関数 tpterm(3c) を明示的に呼び出してアプリケーションを終了し、関連のあるリソースをすべて解放する必要があります。ワークステーション以外のネイティブなクライアントに対してこの明示的な呼び出しが行われなかった場合、モニタがこれを検知し、userlog(3c) に警告を出力し、リソースを解放します。クライアントがワークステーションの場合は、リソースは解放されず、結果的にワークステーションのリスナまたはハンドラがリソースを使い果たし、新たなクライアントを受け付けることができなくなります。
クライアントと同様に、サーバはクライアントのロール内の任意の通信パラダイムを使用できます。ただし、同一サーバ内では会話型サービスと RPC サービスの両方を提供 (宣言) することはできません。後で説明するように、RPC サーバは非会話型として指定する必要があります。ATMI 要求/応答と RPC サービスを同一サーバ内で混用することは可能ですが、お勧めできません。その他の制限として、RPC オペレーションは関数 tpreturn(3c) や関数 tpforward(3c) を呼び出すことはできません。RPC オペレーションは、ローカルに呼び出された場合と同様の復帰動作で復帰する必要があります。RPC オペレーションから関数 tpreturn(3c) や関数 tpforward(3c) の呼び出しを試みると、その呼び出しはインターセプトされ、クライアントにエラーが返されます (例外 rpc_x_fault_unspec または状態 rpc_s_fault_unspec)。
サーバでは利用できますが、クライアントでは利用できない関数が 2 つあります。関数 tpsvrinit(3c) と関数 tpsvrdone(3c) がこれにあたります。それぞれサーバの起動時とシャットダウン時に呼び出されます。サーバは、TxRPC オペレーション要求を受け取る前に、tx_open(3c) を呼び出す必要があるので、tpsvrinit() で tx_open を呼び出すことをお勧めします。デフォルトの tpsvrinit() 関数は関数 tx_open() を呼び出しています。
![]() |
![]() |
![]() |
|
Copyright © 2001 BEA Systems, Inc. All rights reserved.
|