![]() |
![]() |
|
|
RPC サーバの構築方法
RPC サーバは、ATMI 要求/応答サーバの場合とほぼ同じように構築され構成されます。実際、RPC と要求/応答サーバのサービス名前空間は同一です。しかし、RPC サービス用に宣言される名前は異なります。要求/応答サーバ用では、サービス名はプロシージャにマップされます。RPC サーバでは、サービス名は IDL インターフェイス名にマップされます。宣言された RPC サービスは <interface>v<major>_<minor>となります。ここで、<interface> はインターフェイス名、<major> と <minor> はそれぞれメジャー・バージョン番号とマイナー・バージョン番号です。バージョン番号は、インターフェイス定義で指定されたものか、あるいはデフォルトでの設定値 0.0 のいずれかをとります。サービス名の長さ制限は 15 文字です。このため、インターフェイス名の長さは、13 からメジャーとマイナーのバージョン番号の桁数を引いたものに制限されます。これは、BEA Tuxedo システムで名前が処理される方法によるもので、メジャー・バージョン番号とマイナー・バージョン番号が正確に一致する必要があることを意味しています。宣言されるのはインターフェイスであって、個別のオペレーションではないことに注意してください (DCE/RPC と同様)。インターフェイス内の適切なオペレーションが呼び出されるようにサーバ・スタブが自動的に調整を行います。
RPC サーバは、buildserver(1) コマンドを使って構築されます。コンパイル時には、-s オプションを用いてサービス (インターフェイス) 名を指定することをお勧めします。その後、-A オプションを用いてサーバを起動すると、指定したサービスを自動的に宣言することができます。この方法は、「アプリケーション例」のアプリケーション例で用いられています。
buildserver(1)コマンドは、BEA Tuxedo ライブラリを自動的にリンクしますが、RPC ランタイムのリンクは明示的に行う必要があります。このリンクは、buildserver 行のアプリケーション・ファイルの後に、-f -ltrpc オプションを指定することで行われます。通常は、tidl(1) コマンドの出力はサーバ・スタブ・オブジェクト・ファイルです。このファイルは buildserver コマンドに直接受け渡されます。サーバ・スタブと、オペレーションを実装するアプリケーション・ソース、オブジェクト、ライブラリ・ファイルは、ランタイム・ライブラリよりも前に、-f オプションを使用して指定する必要があることに注意してください。「アプリケーション例」の makefile 例 rpcsimp.mk を参照してください。
![]() |
![]() |
![]() |
|
Copyright © 2001 BEA Systems, Inc. All rights reserved.
|