bea ホーム | 製品 | dev2dev | support | askBEA
BEA Logo Tuxedo
 ドキュメントのダウンロード   サイトマップ   用語集 
検索
0

Tuxedo CORBA プログラミング・リファレンス

 Previous Next Contents View as PDF  

CORBA::ORB_init

概要

ORB のオペレーションを初期化します。

C++ バインディング

static CORBA::ORB_ptr ORB_init(int& argc, char** argv,
const char* orb_identifier = 0);

引数

argc

argv の文字列数。

argv

この引数は、文字列のアンバウンディッド配列 (char **) として定義します。配列内の文字列数は、argc パラメータで渡されます。

orb_identifier

orb_identifier パラメータを指定すると、リモート・クライアントが "BEA_IIOP" で明示的に指定され、「Tobj_Bootstrap」で定義されるネイティブ・クライアントが "BEA_TOBJ" で明示的に指定されます。

説明

このメンバ関数は、ORB のオペレーションを初期化して、ORB へのポインタを返します。ORB でプログラミングする場合は、CORBA::release メンバ関数を使用して、CORBA::ORB_ptr ORB_init から返された ORB ポインタに割り当てられたリソースを解放します。

返された ORB は、クライアントのタイプ (リモートまたはネイティブ) の処理方法とサーバのポート番号の処理方法を指定する 2 つの情報で初期化されています。クライアントのタイプは、orb_identifier 引数、argv 引数、またはシステム・レジストリで指定できます。サーバのポート番号は、argv 引数で指定できます。

通常、引数 argcargv は、メイン・プログラムに渡されたパラメータと同じです。C++ での指定のように、これらのパラメータには、クライアントを起動したコマンド行の文字列トークンが格納されます。2 つの ORB オプションは、以下の例で示すように、トークンのペアをそれぞれ使用してコマンド行で指定できます。

クライアントのタイプ

ORB_init 関数は、次の手順で ORB のクライアントのタイプを判別します。

  1. orb_identifier 引数が指定されている場合、ORB_init は、文字列が "BEA_IIOP""BEA_TOBJ" かによって、クライアントのタイプがネイティブかリモートかを判別します。orb_identifier 文字列がある場合、argv の -ORBid パラメータはすべて無視または削除されます。

  2. orb_identifier が指定されていないか、または明示的にゼロに指定されている場合、ORB_initargc/argv のエントリを確認します。argv"-ORBid" のエントリがある場合、次のエントリは、リモートまたはネイティブを表す "BEA_IIOP""BEA_TOBJ" かのどちらかになります。このエントリのペアが出現するのは、コマンド行に "-ORBid BEA_IIOP" または "-ORBid BEA_TOBJ" のどちらかがある場合です。

  3. クライアントのタイプが argc/argv で指定されていない場合、ORB_init は、システム・レジストリ (BEA_IIOP または BEA_TOBJ) のデフォルトのクライアントのタイプを使用します。システム・レジストリは、BEA Tuxedo のインストール時に初期化されています。

サーバのポート

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 へのポインタ。

例外

特にありません。

 

Back to Top Previous Next
Contact e-docsContact BEAwebmasterprivacy