bea ホーム | 製品 | dev2dev | support | askBEA |
![]() |
![]() |
|
![]() |
e-docs > Tuxedo > Tuxedo CORBA プログラミング・リファレンス > CORBA API |
Tuxedo CORBA プログラミング・リファレンス
|
概要
ORB のオペレーションを初期化します。
C++ バインディング
static CORBA::ORB_ptr ORB_init(int& argc, char** argv,
const char* orb_identifier = 0);
引数
説明
このメンバ関数は、ORB のオペレーションを初期化して、ORB へのポインタを返します。ORB でプログラミングする場合は、CORBA::release メンバ関数を使用して、CORBA::ORB_ptr ORB_init から返された ORB ポインタに割り当てられたリソースを解放します。
返された ORB は、クライアントのタイプ (リモートまたはネイティブ) の処理方法とサーバのポート番号の処理方法を指定する 2 つの情報で初期化されています。クライアントのタイプは、orb_identifier 引数、argv 引数、またはシステム・レジストリで指定できます。サーバのポート番号は、argv 引数で指定できます。
通常、引数 argc と argv は、メイン・プログラムに渡されたパラメータと同じです。C++ での指定のように、これらのパラメータには、クライアントを起動したコマンド行の文字列トークンが格納されます。2 つの ORB オプションは、以下の例で示すように、トークンのペアをそれぞれ使用してコマンド行で指定できます。
クライアントのタイプ
ORB_init 関数は、次の手順で ORB のクライアントのタイプを判別します。
サーバのポート
BEA Tuxedo リモート共同クライアント/サーバの場合、IIOP をサポートするために、サーバに対して作成されたオブジェクト・リファレンスにホストとポートを定義する必要があります。一時オブジェクト・リファレンスの場合、ORB で動的に任意のポートを取得できます。しかし、これは永続オブジェクト・リファレンスには適用できません。永続的なリファレンスの場合、ORB の再起動後に同じポートを指定する必要があります。つまり、ORB では、オブジェクト・リファレンスが作成されたのと同じポートで要求を受け付けなければなりません。このように、特定のポートを使用するように ORB をコンフィギュレーションする方法は複数あります。
通常、システム管理者は、動的範囲ではなくポート番号のユーザ範囲からクライアントのポート番号を割り当てます。これにより、共同クライアント/サーバでポートの競合を防ぐことができます。
ポート番号を指定するために ORB_init は、argv パラメータの "-ORBport" トークンとそれに続く数値のトークンを検索します。たとえば、クライアントの実行可能ファイルの名前が sherry の場合、コマンド行では次のようにサーバのポート 937 に指定します。
sherry -ORBport 937
ARGV パラメータの考慮事項
C++ の場合、argv パラメータの処理順序がアプリケーションでは重要になります。アプリケーションで認識されない argv パラメータは、確実にアプリケーションで処理不要にし、ORB 初期化関数を呼び出してから、残りのパラメータを処理するようにしなければなりません。したがって、ORB_init を呼び出した後は、argv および argc パラメータは、ORB で認識された引数を削除するために変更されています。この際に重要なのは、ORB_init 関数が、argv リストのパラメータのリファレンスの順序変更または削除しかできない点です。この制限が設けられたのは、一部の argv リストの解放を試行したり、パラメータの argv リストの拡張を試行したりすることで発生する可能性のあるメモリ管理上の問題を防ぐためです。このような理由から、argv は、char**& ではなく char** として渡されます。
注記 CORBA::ORB_init から返されたポインタに割り当てられたリソースを解放するには、CORBA::release メンバ関数を使用します。
戻り値
CORBA::ORB へのポインタ。
例外
![]() |
![]() |
![]() |
![]() |
||
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |