|
|
CORBA ネーム・サービス・リファレンス
ここでは、次の内容について説明します。
CORBA ネーム・サービスのコマンド
CORBA ネーム・サービスは、CORBA ネーム・サービスのサーバ・プロセスを管理し、名前空間内の名前にオブジェクトをバインドまたはアンバインドし、名前空間の内容を表示するために以下のコマンドを提供します。
以下の節では、これらのコマンドについて説明します。
cns
概要
CORBA ネーム・サービスのサーバ・プロセスを制御します。
構文
cns CLOPT="[-A] [servopts
options
] --
[-bbucketcount
]
[-c]
[-d]
[-ffilename
]
[-Mmaxiterators
]
[-p [persiststoragefilename
] ]"
説明
CORBA ネーム・サービスのサーバ・プロセスは、CORBA CosNaming 準拠のネーム・サービスを提供します。使用する BEA Tuxedo アプリケーションに対して、その BEA Tuxedo アプリケーションで使用するほかのサーバ・プロセスと同様に、CORBA ネーム・サービスのサーバ・プロセスとそのオプションを UBBCONFIG
ファイルで定義する必要があります。UBBCONFIG
ファイルの CLOPT
パラメータで、ダブル・ハイフン(--
) の後に、cns
コマンド行オプションを入力します。コマンド行オプションには、以下のものがあります。
-b
bucketcount
ネーミング・コンテキストをメモリ内にロケートするために、サーバ・プロセスが内部で使用するハッシュ・テーブルのバケット数を指定します。各ネーミング・コンテキストには、専用のハッシュ・テーブルがあります。BEA Tuxedo アプリケーションが各ネーミング・コンテキストでより少ない数のバインディングを使用する場合、小さなバケット数 (4 または 5 など) を使用します。BEA Tuxedo アプリケーションが各ネーミング・コンテキストでより大きな数 (1,000 など) のバインディングを使用する場合、大きなバケット数 (50 など) を使用します。
-c
CORBA ネーム・サービスのサーバ・プロセスが開始されたときに、永続ストレージ・ファイルを圧縮します。ネーミング・コンテキストおよびアプリケーション・オブジェクトが名前空間に追加され、名前空間から削除されるたびに、永続ストレージ・ファイルのサイズは増え続けます。圧縮によって、永続ストレージ・ファイルのサイズを可能な限り小さくすることができます。バインドされていないバインディングは圧縮時に削除されます。バインドされていないバインディングは、バインディングが関連付けられているオブジェクトが名前空間から削除されても名前空間内に残ります。-p
コマンド行オプションは、-c
コマンド行オプションの指定時に指定する必要があります。
-d
CORBA ネーム・サービスのサーバ・プロセスで、サーバ・プロセスの開始時に、関連付けのないコンテキストが削除されるようにします。関連付けのないコンテキストは、ほかのどのオブジェクトにもバインドされていないコンテキストです。一度もバインドされていない可能性もありますし、コンテキストにバインドされた後で明示的に、または再バインドの影響で破棄された可能性もあります。-p
コマンド行オプションは、-d
コマンド行オプションの指定時に指定する必要があります。
-f
filename
CORBA ネーム・サービスのサーバ・プロセスが、名前空間のルートのインターオペラブル・オブジェクト・リファレンス (IOR) を書き込む先となるファイルを指定します。
-M
maxiterators
任意の時点での未処理のバインディング・イテレータの最大数を定義します。
バインディング・イテレータは、クライアント・アプリケーションが CosNaming::NamingContext::list()
メソッドを使用したときに作成されます。クライアント・アプリケーションは、使用を完了したバインディング・イテレータを削除するために、CosNaming::BindingIterator::destroy()
メソッドを使用する必要があります。
クライアント・アプリケーションがバインディング・イテレータを特に削除しなかった場合、CORBA ネーム・サービスのサーバ・プロセスは、-M
コマンド行オプションで指定した数に達したときにバインディング・イテレータを削除します。バインディング・イテレータが最大数に達してから新しいバインディング・イテレータを作成しようとすると、CORBA ネーム・サービスのサーバ・プロセスは、クライアント・アプリケーションで使用中のバインディング・イテレータを破棄します。
バインディング・イテレータは、使用履歴の最も古いアルゴリズムを基に削除されます。デフォルト値は 20 です。値を 0 にすると、バインディング・イテレータの数の制約がないことを示します。つまり、CORBA ネーム・サービスのサーバ・プロセスはバインディング・イテレータを破棄せず、関連付けられているメモリは解放されません。0 を指定した場合、クライアント・アプリケーションは、CosNaming::BindingIterator::destroy()
メソッドを使用して、未使用のバインディング・イテレータを明示的に削除する必要があります。
-p [
persistentstoragefilename
]
CORBA ネーム・サービスのサーバ・プロセスで、指定したファイルを使用して現在の名前空間のコピーが永続ストレージに保存されるようにします。ファイル名を指定しなかった場合、CNS_PERSIST_FILE
環境変数の値が使用されます。CNS_PERSIST_FILE
環境変数を設定しなかった場合、以下のファイルが使用されます。
Windows
%APPDIR%
\cnspersist.dat
UNIX
$APPDIR/cnspersist.dat
永続ストレージ・ファイルは、CORBA ネーム・サービスのサーバ・プロセスが開始されたときに読み取られます。永続ストレージ・ファイルは、名前空間に変更が加えられるたびに追加されます。新しい名前空間を作成する場合、既存の永続ストレージ・ファイルを削除するか、CORBA ネーム・サービスのサーバ・プロセスに対して新しい永続ストレージ・ファイルを作成する必要があります。
cnsbind
概要
アプリケーション・オブジェクトおよびネーミング・コンテキストを名前空間にバインドします。
注記 cnsbind
コマンドは、CosNaming インターフェイスとやり取りします。このコマンドを使用して CORBA ネーム・サービスのサーバ・プロセスを実行する必要があります。
構文
cnsbind
[-C]
[-froot_context_filename
]
[-h]
[-N]
[-oior_filename
]
[-r]
[-TTObjAddr
]
bind_name
説明
cnsbind
コマンドは、CORBA CosNaming インターフェイスを使用して新しいアプリケーション・オブジェクトとネーミング・コンテキスト・オブジェクトを名前空間にバインドします。このコマンドを使用すると、連合型名前空間を簡単に作成できるようになります。cnsbind
コマンドが呼び出されたときに例外が返されると、このコマンドは終了し、対応するメッセージが表示されます。
cnsbind
コマンドのコマンド行オプションは以下のとおりです。
-C
cnsbind
コマンドが、bind_name
(名前)、および -o
コマンド行オプションで指定した ior_filename
を使用してコンテキストを作成するように指定します。-C
コマンド行オプションを使用して、ある名前空間のネーミング・コンテキスト・オブジェクトを、指定した名前空間に連合させます。
-f
root_context_filename
名前空間の内容を変更するためにコマンドがやり取りする、CORBA ネーム・サービスのサーバ・プロセスの IOR を格納するファイルを指定します。このコマンド行オプションを指定しない場合、コマンドは、NameService 環境オブジェクトで Tobj_Bootstrap::resolve_initial_references()
メソッドを使用し、指定した BEA Tuxedo ドメインに対する CORBA ネーム・サービスのサーバ・プロセスをロケートします。IOR のホストとポートは、TOBJADDR
の値と一致していなければなりません。コマンド行オプションは、TOBJADDR
環境変数の設定をオーバーライドします。コマンド行オプションを指定しなかった場合、TOBJADDR
環境変数が使用されます。
-h
コマンドの構文を出力します。
-N
新しいコンテキストを作成し、指定した名前を使用する名前空間にそれをバインドします。cnsbind
コマンドが新しいコンテキストを作成するので、-N
コマンド行オプションとともに -o
コマンド行オプションを使用する必要はありません。-N
コマンド行オプションとともに -o
コマンド行オプションを使用しても、-o
コマンド行オプションの情報は無視されます。
-o
ior_filename
-f
コマンド行オプションで指定した名前空間にバインドするオブジェクトの IOR を格納するファイルを指定します。-C
コマンド行オプションを指定した場合は ncontext
型のオブジェクトが作成され、指定しなかった場合は nobject
型のオブジェクトが作成されます。
-r
名前に既にバインディングがある場合でも、アプリケーション・オブジェクトまたはネーミング・コンテキスト・オブジェクトのバインディングを作成します。-r
コマンド行オプションを指定しない cnsbind
コマンドのデフォルトの動作では、指定したオブジェクトのバインディングが既に存在する場合に AlreadyBound
例外が発生します。cnsbind
コマンドが呼び出されたときに AlreadyBound
その他の例外が返された場合、コマンドは終了し、「Error, already bound
」というメッセージが表示されます。
T
TObjAddr
BEA Tuxedo ドメイン用のホストとポートを指定します。CORBA ネーム・サービスのサーバ・プロセスに接続する前に、cnsbind
コマンドは、サーバ・プロセスが実行される BEA Tuxedo ドメインにログインする必要があります。コマンド行オプションは、TOBJADDR
環境変数の設定をオーバーライドします。コマンド行オプションを指定しなかった場合、TOBJADDR
環境変数の値が使用されます。TObjAddr
指定の有効な形式は、//hostname:port_number
です。
bind_name
Tobj_Bootstrap::resolve_initial_references
メソッドから取り出したルート・ネーミング・コンテキスト、または -f
コマンド行オプションから取得した文字列の IOR に示されているネーミング・コンテキスト・オブジェクトを基に名前空間に追加されたアプリケーション・オブジェクトまたはネーミング・コンテキスト・オブジェクトにバインドする名前を指定します。bind_name
文字列は、Object Management Group (OMG) インターオペラブル・ネーム・サービス (INS) 仕様で指定した名前の文字列の形式に従っている必要があります。
例
次の例は、アプリケーション・オブジェクトのバインディングを示しています。
cnsbind -o ./app_obj_ior.txt MyContext/AppObject1
次の例は、ネーミング・コンテキスト・オブジェクトのバインディングを示しています。
cnsbind -N MyContext/CtxObject1
次の例は、フェデレーション・ポイントのほかの名前空間へのバインディングを示しています。
cnsbind -C -o ./remote_ior.txt MyContext/RemoteNSCtx1
cnsls
概要
名前空間の内容を表示します。
注記 cnsls
コマンドは、CosNaming インターフェイスとやり取りします。このコマンドを使用して CORBA ネーム・サービスのサーバ・プロセスを実行する必要があります。
構文
cnsls
[-froot_context_filename
]
[-h]
[-s]
[-R]
[-TTobjAddr
]
[resolve_name
]
説明
cnsls
コマンドは、CORBA CosNaming インターフェイスを使用して名前空間の内容を表示します。非出力文字を NameComponent
データ構造の一部として使用する場合、cnsls
コマンドの動作は未定義です。cnsls
コマンドが呼び出されたときに例外が返されると、このコマンドは終了し、対応するメッセージが表示されます。
cnsls
コマンドのコマンド行オプションは以下のとおりです。
-f
root_context_filename
名前空間の内容を変更するためにコマンドがやり取りする、CORBA ネーム・サービスのサーバ・プロセスの IOR を格納するファイルを指定します。このコマンド行オプションを指定しない場合、コマンドは、NameService 環境オブジェクトで Tobj_Bootstrap::resolve_initial_references()
メソッドを使用し、指定した BEA Tuxedo ドメインに対する CORBA ネーム・サービスのサーバ・プロセスをロケートします。IOR のホストとポートは、TOBjAddr
の値と一致していなければなりません。コマンド行オプションは、TOBJADDR
環境変数の設定をオーバーライドします。コマンド行オプションを指定しなかった場合、TOBJADDR
環境変数の値が使用されます。
-h
コマンドの構文を出力します。
-S
resolve_name
コマンド行オプションで指定した名前空間の名前の文字列化された IOR を表示します。
-R
resolve_name
で始まる名前空間のバインディングを再帰的に表示します。このコマンド行オプションによって、cnsls
コマンドは、フェデレーションの境界が交差している場合にも何も示されずに境界を越える可能性があります。また、名前空間の情報に循環が存在する場合、このコマンド行オプションによって cnsls
コマンドがループに入る可能性もあります。
-T
TObjAddr
BEA Tuxedo ドメイン用のホストとポートを指定します。CORBA ネーム・サービスのサーバ・プロセスに接続する前に、cnsls
コマンドは、サーバ・プロセスが実行される BEA Tuxedo ドメインにログインする必要があります。コマンド行オプションは、TOBJADDR
環境変数の設定をオーバーライドします。コマンド行オプションを指定しなかった場合、TOBJADDR
環境変数が使用されます。
resolve_name
Tobj_Bootstrap::resolve_initial_references
メソッドを介して取り出したルート・ネーミング・コンテキスト、または -f
コマンド行オプションから取得した文字列の IOR に示されているネーミング・コンテキスト・オブジェクトを基にしたネーム・サービスで解決する名前を指定します。resolve_name
文字列は、OMG INS 仕様で指定した名前の文字列の形式に従っている必要があります。名前コンポーネントの区切りにはバックスラッシュ (\)、id
フィールドと kind
フィールドの区切りにはピリオド (.
) を使用します。
このコマンド行オプションを指定しなかった場合、ルート・コンテキストが解決されます。
例
cnsls -R MyContext.kind/AnotherContext
[context] MyContext.kind/AnotherContext
[object] Obj1
[object] Obj2
[context] Ctx1
[object] AnotherObject
cnsunbind
概要
名前空間のバインディングを解除します。
構文
cnsunbind
[-D]
[-froot_context_filename
]
[-h]
[-TTObjAddr
]
bind_name
説明
cnsunbind
コマンドは、名前空間のバインディングを解除します。cnsunbind
コマンドが呼び出されたときに例外が返されると、このコマンドは終了し、対応するメッセージが表示されます。
cnsunbind
コマンド行オプションは、以下のとおりです。
-D
バインディングを解除した後に bind_name
にバインドされているネーミング・コンテキストを破棄します。コンテキストを破棄するときに -D
コマンド行オプションを指定しても、コンテキストがほかのバインディングの一部になっている場合は孤立化されません。同時に複数のネーミング・コンテキスト・オブジェクトにバインドされた場合などにバインディングが保留される可能性があるので、このコマンド行オプションの使用には注意する必要があります。
-f
root_context_filename
名前空間の内容を変更するためにコマンドがやり取りする、CORBA ネーム・サービスのサーバ・プロセスの IOR を格納するファイルを指定します。このコマンド行オプションを指定しない場合、コマンドは、NameService 環境オブジェクトで Tobj_Bootstrap::resolve_initial_references()
メソッドを使用し、指定した BEA Tuxedo ドメインに対するサーバ・プロセスをロケートします。
-h
コマンドの構文を出力します。
-T
TObjAddr
BEA Tuxedo ドメイン用のホストとポートを指定します。CORBA ネーム・サービスのサーバ・プロセスに接続する前に、cnsbind
コマンドは、サーバ・プロセスが実行される BEA Tuxedo ドメインにログインする必要があります。コマンド行オプションは、TOBJADDR
環境変数の設定をオーバーライドします。コマンド行オプションを指定しなかった場合、TOBJADDR
環境変数が使用されます。
bind_name
Tobj_Bootstrap::resolve_initial_references()
メソッドから取り出したルート・ネーミング・コンテキスト、または -f
コマンド行オプションから取得した文字列の IOR に示されているネーミング・コンテキストを基にした名前空間から解除するバインディングの名前を指定します。bind_name
文字列は、OMG INS 仕様で指定した名前の文字列の形式に従っている必要があります。
例
次の例は、名前空間からのバインディングの解除を示しています。
cnsunbind MyContext/CtxObject1
次の例は、名前空間からのバインディングの解除、およびバインドされているオブジェクトの破棄を示しています。
cnsunbind -D MyContext/CtxObject1
CORBA ネーム・サービスの機能と制限事項
CORBA ネーム・サービスには、以下の機能と制限があります。
NULL
文字は、id
文字列と kind
文字列の終端としてのみ使用します (空の文字列は有効と見なされます)。CannotProceed
例外をスローしません。
NameService 環境オブジェクトへの初期リファレンスの取得
NameService
環境オブジェクトは、名前空間のルートへの接続に使用できます。NameService
環境オブジェクトを使用する場合、オブジェクト・リクエスト・ブローカ (ORB) が名前空間のルートをロケートします。Bootstrap オブジェクトまたは CORBA インターオペラブル・ネーミング・サービス (INS) のブートストラップ処理メカニズムを使用すると、NameService 環境オブジェクトへの初期リファレンスを取得できます。BEA クライアント ORB を使用する場合は、BEA 社固有のメカニズムを使用します。別のベンダのクライアント ORB を使用する場合は、CORBA INS メカニズムを使用します。
名前空間への接続の詳細については、第 4 章の「ステップ 3: BEA Tuxedo 名前空間への接続」を参照してください。BEA Tuxedo ドメインのブートストラップ処理の詳細については、BEA Tuxedo オンライン・マニュアルの『BEA Tuxedo CORBA プログラミング・リファレンス』の「第 4 章 CORBA ブートストラップ処理のプログラミング・リファレンス」を参照してください。
CORBA ネーム・サービスで使用する CosNaming データ構造体
CORBA ネーム・サービスは、以下の CosNaming データ構造体を使用します。
CosNaming::BindingList
CosNaming::BindingType
CosNaming::Istring
CosNaming::Name
CosNaming::NameComponent
NamingContext オブジェクト
NamingContext
オブジェクトは、オブジェクト・リクエスト・ブローカ (ORB) オブジェクトまたはほかの NamingContext
オブジェクトにバインドされている名前のリストを格納および操作するのに使用します。BEA Tuxedo CORBA クライアント・アプリケーションは、このインターフェイスを使用して、コンテキスト内のすべての名前を解決またはリストします。BEA Tuxedo CORBA サーバ・アプリケーションは、このオブジェクトを使用して、アプリケーション・オブジェクトまたはネーミング・コンテキスト・オブジェクトに名前をバインドします。リスト 2-1 は、NamingContext
オブジェクトの OMG IDL を示しています。
リスト 2-1 NamingContext オブジェクトの OMG IDL
module CosNaming {
interface NamingContext {
void bind(in Name, in Object obj)
raises(NotFound, CannotProceed, InvalidName, AlreadyBound);
void rebind(in Name, in Object obj)
raises(NotFound, CannotProceed, InvalidName);
void bind_context(in Name n, in NamingContext nc)
raises(NotFound, CannotProceed, InvalidName, AlreadyBound);
void rebind_context(in Name n, in NamingContext nc)
raises(NotFound, CannotProceed, InvalidName);
Object resolve(in Name n)
raises(NotFound, CannotProceed, InvalidName);
void unbind(in Name n)
raises(NotFound, CannotProceed, InvalidName);
NamingContext new_context
NamingContext bind_new_context(in Name n)
raises(NotFound, CannotProceed, InvalidName, AlreadyBound);
void destroy()
raises(NotEmpty);
void list(in unsigned long how_many,
out BindingList bl,
out BindingIterator bi);
}
}
CosNaming::NamingContext::bind()
概要
最初の NameComponent
データ構造体に関連付けられているコンテキストを解決し、オブジェクトを新しいコンテキストにバインドすることで、指定したオブジェクトを指定した名前にバインドしようとします。
C++
マッピング
void bind(in Name
n
, in Object
obj
);
Java
マッピング
void bind (NameComponent []
n
, Object
obj
);
パラメータ
n
目的のオブジェクト名で初期化される Name
データ構造体。
obj
指定した名前にバインドするオブジェクト。
例外
AlreadyBound
bind()
メソッドまたは bind_context()
メソッドの Name
が、ネーミング・コンテキスト内のほかのオブジェクトに既にバインドされていることを示します。
InvalidName
指定した Name
に 0 名前コンポーネントがあるか、最初の名前コンポーネントのいずれか 1 つがネーミング・コンテキストに対して解決されなかったことを示します。
NotFound
Name
またはそのコンポーネントのいずれか 1 つが見つからなかったことを示します。
説明
bind
にバインドされたネーミング・コンテキストは、複数の名前を解決のために渡すときに名前解決に参加しません。
戻り値
特にありません。
CosNaming::NamingContext::bind_context()
概要
このメソッドは、bind()
メソッドとほぼ同じですが、指定した Name
が NamingContext
オブジェクトに関連付けられています。
C++
マッピング
void bind_context(in Name
n
, in NamingContext
nc
);
Java
マッピング
void bind_context (NameComponent []
n
, NamingContext
nc
);
パラメータ
n
目的のネーミング・コンテキスト名で初期化される Name
データ構造体。シーケンス内の最初の NameComponent
データ構造体がネーミング・コンテキストに対して解決される必要があります。
nc
指定した名前にバインドする NamingContext
オブジェクト。
例外
AlreadyBound
bind()
メソッドまたは bind_context()
メソッドの Name
が、ネーミング・コンテキスト内のほかのオブジェクトに既にバインドされていることを示します。
InvalidName
指定した Name
に 0 名前コンポーネントがあるか、最初の名前コンポーネントのいずれか 1 つがネーミング・コンテキストに対して解決されなかったことを示します。
NotFound
Name
またはそのコンポーネントのいずれか 1 つが見つからなかったことを示します。
BAD_PARAM
NULL
コンテキストをバインドするための呼び出しが試行されたことを示します。
説明
bind_context()
にバインドされたネーミング・コンテキストは、複数の名前を解決のために渡すときに名前解決に参加しません。
戻り値
特にありません。
CosNaming::NamingContext::bind_new_context()
概要
新しいコンテキストを作成し、コンテキスト内で指定した Name
にバインドします。
C++
マッピング
NamingContext bind_new_context(in Name n);
Java
マッピング
bind_new_context (NameComponent []
n
);
パラメータ
n
新しく作成された NamingContext
オブジェクト名で初期化される Name
データ構造体。
例外
AlreadyBound
bind()
メソッドまたは bind_context()
メソッドの Name
が、ネーミング・コンテキスト内のほかのオブジェクトに既にバインドされていることを示します。
InvalidName
指定した Name
に 0 名前コンポーネントがあるか、最初の名前コンポーネントのいずれか 1 つがネーミング・コンテキストに対して解決されなかったことを示します。
NotFound
Name
またはそのコンポーネントのいずれか 1 つが見つからなかったことを示します。
説明
このメソッドは、CosNaming::NamingContext::new_context()
メソッドと CosNaming::NamingContext::bind_context()
メソッドを 1 つにまとめたものです。
戻り値
新しい NamingContext
オブジェクトに対するリファレンスを返します。
CosNaming::NamingContext::destroy()
概要
NamingContext
オブジェクトを削除します。削除した後で NamingContext
オブジェクトに対する呼び出しを実行すると、CORBA::NO_IMPLEMENT
例外が発生します。
C++
マッピング
void destroy();
Java
マッピング
void destroy();
パラメータ
特にありません。
例外
NotEmpty
NamingContext
オブジェクトにバインディングがある場合、このメソッドで NotEmpty
が発生します。
説明
このメソッドを使用する前に、 NamingContext
オブジェクトにバインドされているすべてのネーム・オブジェクトに対して、CosNaming::NamingContext::unbind()
メソッドでアンバウンドする必要があります。
戻り値
特にありません。
CosNaming::NamingContext::list()
概要
このネーミング・コンテキストによって格納されているすべてのバインディングを返します。
C++
マッピング
void list(in unsigned_long
how_many
,
out BindingListbl
,
out BindingIteratorbi
);
Java
マッピング
void list(int
how_many
,
BindingListHolderbl
,
BindingIteratorHolderbi
);
パラメータ
how_many
リストに返されるバインディングの最大数。
bl
返されたバインディングのリスト。各要素は、NameComponent
オブジェクトを表す Name
を含むバインディングです。それぞれの Name
は単純な名前です。つまり、長さ 1 の名前のシーケンスです。リスト内のバインディングの数は、how_many
の値を超えません。
bi
残りのバインディングをたどるための BindingIterator
オブジェクトに対するリファレンス。
例外
InvalidName
指定した Name
に 0 名前コンポーネントがあるか、最初の名前コンポーネントのいずれか 1 つがネーミング・コンテキストに対して解決されなかったことを示します。
NotFound
Name
またはそのコンポーネントのいずれか 1 つが見つからなかったことを示します。
説明
このメソッドは、名前のバインディングのシーケンスを返します。bl
リストに当てはまるよりも多くの名前のバインディングが存在する場合、BindingIterator
オブジェクトが返されます。BindingIterator
オブジェクトを使用して、バインディングの次のセットを取得できます。BindingList
オブジェクト (C++) または BindingListHolder
オブジェクト (Java) は、要求された番号よりも少ないバインディングしかない場合、リストの最後にあるバインディングの番号を返します。bi
が NULL
リファレンスを返した場合、bl
にはすべてのバインディングが含まれています。
戻り値
特にありません。
CosNaming::NamingContext::new_context()
概要
新しいネーミング・コンテキストを作成します。新しく作成されたコンテキストは、最初はどの Name
にもバインドされていません。
C++
マッピング
NamingContext new_context();
Java
マッピング
NamingContext new_context();
パラメータ
特にありません。
例外
特にありません。
説明
CosNaming::NamingContext::bind_context()
メソッドを使用して、新しいネーミング・コンテキストを Name
にバインドします。
戻り値
新しいネーミング・コンテキストに対するリファレンスを返します。
CosNaming::NamingContext::rebind()
概要
このメソッドは、bind()
メソッドとほぼ同じです。違いは、rebind
メソッドでは AlreadyBound
例外が発生しないという点です。指定した Name
が既にほかのオブジェクトにバインドされている場合、そのバインディングは新しいバインディングに置き換えられます。
C++
マッピング
void rebind(in Name
n
, in Objectobj
);
Java
マッピング
void rebind(NameComponent []
n
, Object
obj
);
パラメータ
n
目的のオブジェクト名で初期化される Name
データ構造体。
obj
命名対象のオブジェクト。
例外
InvalidName
指定した Name
データ構造体に 0 名前コンポーネントがあるか、最初の名前コンポーネントのいずれか 1 つがネーミング・コンテキストに対して解決されなかったことを示します。
NotFound
Name
またはそのコンポーネントのいずれか 1 つが見つからなかったことを示します。バインディングが既に存在しているか、またはバインディングが不正なタイプのものであるために例外が発生した場合、例外の rest_of_name
メンバーには長さ 1 があります。
説明
rebind()
メソッドにバインドされたネーミング・コンテキストは、複数の名前を解決のために渡すときに名前解決に参加しません。
戻り値
特にありません。
CosNaming::NamingContext::rebind_context()
概要
このメソッドは、bind_context()
メソッドとほぼ同じです。違いは、rebind_context
メソッドでは AlreadyBound
例外が発生しないという点です。指定した Name
が既にほかのオブジェクトにバインドされている場合、そのバインディングは新しいバインディングに置き換えられます。
C++
マッピング
void rebind_context(in Name
n
, in NamingContextnc
);
Java
マッピング
void rebind_context(NameComponent []
n
, NamingContext
nc
);
パラメータ
n
目的のオブジェクト名で初期化される Name
データ構造体。
nc
再バインド対象の NamingContext
オブジェクト。
例外
InvalidName
指定した Name
データ構造体に 0 名前コンポーネントがあるか、最初の名前コンポーネントのいずれか 1 つがネーミング・コンテキストに対して解決されなかったことを示します。
NotFound
名前のコンポーネントがバインディングを識別しなかったか、バインディングのタイプが実行中のオペレーションに対して不正だったことを示します。バインディングが既に存在しているか、またはバインディングが不正なタイプのものであるために例外が発生した場合、例外の rest_of_name
メンバーには長さ 1 があります。
説明
rebind_context
メソッドにバインドされたネーミング・コンテキストは、複数の名前を解決のために渡すときに名前解決に参加しません。
戻り値
特にありません。
CosNaming::NamingContext::resolve()
概要
指定した Name
を解決しようとします。
C++
マッピング
Object resolve(in Name
n
);
Java
マッピング
Object resolve (NameComponent
n
);
パラメータ
n
目的のオブジェクト名で初期化される Name
データ構造体。
例外
InvalidName
指定した Name
データ構造体に 0 名前コンポーネントがあるか、最初の名前コンポーネントのいずれか 1 つがネーミング・コンテキストに対して解決されなかったことを示します。
NotFound
名前のコンポーネントがバインディングを識別しなかったか、バインディングのタイプが実行中のオペレーションに対して不正だったことを示します。
説明
指定した Name
は、オブジェクトのバインドに使用する名前と同じものでなければなりません。CORBA ネーム・サービスは、オブジェクトのタイプを返しません。クライアント・アプリケーションでは、オブジェクトを適切なタイプにナロー変換します。
戻り値
指定した Name
のオブジェクト・リファレンスを返します。
CosNaming::NamingContext::unbind()
概要
指定した Name
に関連付けられたバインディングを削除し、bind()
メソッドとは逆のオペレーションを実行します。
C++
マッピング
void unbind(in Name
n
);
Java
マッピング
void unbind (NameComponent []
n
);
パラメータ
n
目的のオブジェクト名で初期化される Name
データ構造体。
例外
InvalidName
指定した Name
データ構造体に 0 名前コンポーネントがあるか、最初の名前コンポーネントのいずれか 1 つがネーミング・コンテキストに対して解決されなかったことを示します。
NotFound
名前のコンポーネントがバインディングを識別しなかったか、バインディングのタイプが実行中のオペレーションに対して不正だったことを示します。
説明
このメソッドは、名前とオブジェクトの間のバインディングを削除します。オブジェクトは削除されません。オブジェクトを削除するには、CosNaming::NamingContext::unbind()
メソッドを使用してから、CosNaming::NamingContext::destroy()
メソッドを使用します。
戻り値
特にありません。
NamingContextExt オブジェクト
NamingContextExt
オブジェクトは、CORBA ネーム・サービスで URL と文字列化された名前を使用する方法を提供します。NamingContextExt
オブジェクトは、NamingContext
オブジェクトから派生したものです。CORBA ネーム・サービスのルートは、NamingContextExt
オブジェクトです (つまり、ルートは NamingContext
オブジェクトでもあります)。NamingContextExt
オブジェクトのリファレンスを取得するのに特別なオペレーションは必要ありません。リスト 2-2 は、NamingContextExt
オブジェクトの OMG IDL を示しています。
リスト 2-2 NamingContextExt オブジェクトの OMG IDL
module CosNaming {
interface NamingContextExt : NamingContext {
typedef string StringName;
typedef string Address;
typedef string URLString;
StringName to_string(in Name n)
raises(InvalidName);
Name to_name(in StringName sn)
raises(InvalidName);
exception InvalidAddress {};
URLString to_url(in Address addr, in StringName sn)
raises(InvalidAddress, InvalidName);
Object resolve_str(in StringName n)
raises(NotFound,
CannotProceed,
InvalidName,
AlreadyBound);
}
}
CosNaming::NamingContextExt::resolve_str()
概要
文字列化された名前を取り、それを Name
に変換し、解決します。
構文
object resolve_str(in StringName
n
);
パラメータ
n
解決対象の文字列化された名前。
例外
InvalidName
名前が無効であることを示します。長さ 0 の名前は無効です。
NotFound
名前のコンポーネントがバインディングを識別しなかったか、バインディングのタイプが実行中のオペレーションに対して不正だったことを示します。
説明
これは、CosNaming:NamingContext::resolve()
メソッドと同じ方法で解決を実行する便利なメソッドです。
メソッドは、文字列化された名前を Name
オブジェクトではなく引数として受け付けます。文字列化された名前が不正な場合、または文字列化された名前をバインドできなかった場合、メソッドはエラーを返します。
戻り値
バインドされた名前に対するリファレンス。
CosNaming::NamingContextExt::to_name()
概要
文字列化された名前を取り、Name
オブジェクトを返します。
構文
Name to_name(in StringName
sn
);
パラメータ
sn
Name
オブジェクトに対して解決する文字列化された名前。
例外
InvalidName
名前が無効であることを示します。長さ 0 の名前は無効です。
説明
このメソッドは、文字列化された名前を受け付け、Name
オブジェクトを返します。名前が不正な場合、メソッドはエラーを返します。
戻り値
Name
オブジェクトを返します。
CosNaming::NamingContextExt::to_string()
概要
Name
オブジェクトを受け付け、文字列化された名前を返します。
構文
StringName to_string(in Name
n
);
パラメータ
n
文字列化された名前に変換する Name
オブジェクト。
例外
InvalidName
名前が無効であることを示します。長さ 0 の名前は無効です。
説明
このメソッドは、Name
オブジェクトを受け付け、文字列化された名前を返します。名前が不正な場合、メソッドはエラーを返します。
戻り値
文字列化された名前を返します。
CosNaming::NamingContextExt::to_URL()
概要
URL と文字列化された名前を組み合わせ、URL 文字列を返します。
構文
CosNaming::NamingContextExt::to_URL(
)
URLString to_URL(in Address
addr
, in StringNamesn
);
パラメータ
addr
URL。このパラメータが定義されていない場合、IIOP プロトコルでローカル・ホスト名が使用されます。
sn
URL と組み合わせる文字列化された名前。
例外
InvalidAddress
URL が無効であることを示します。
InvalidName
名前が無効であることを示します。長さ 0 の名前は無効です。
戻り値
URL と文字列化された名前を組み合わせた URL 文字列を返します。
BindingIterator オブジェクト
BindingIterator
オブジェクトを使用すると、クライアント・アプリケーションは、NamingContext
オブジェクトの list
メソッドで返されたバインディングのアンバウンディッド・コレクションをたどることができます。BindingIterator
オブジェクトを使用すると、クライアント・アプリケーションは、各呼び出しで取得したバインディング数を制御できます。BindingIterator
オブジェクトのメソッドの呼び出しの間にネーミング・コンテキストが変更された場合、以降の next_one()
メソッドまたは next_n()
メソッドの呼び出しの動作は、インプリメンテーションによって異なります。
BindingIterator
オブジェクトを作成しても、destroy
メソッドを呼び出さない場合、クライアント・アプリケーションはリソース不足になる場合があります。CORBA ネーム・サービスでは、クライアント・アプリケーションに通知せずに、いつでもバインディング・イテレータを破棄できます。BindingIterator
オブジェクトに対する呼び出しで OBJECT_NOT_EXIST
例外を予期し、この例外を適切に処理するようにクライアント・アプリケーションを記述する必要があります。
リスト 2-3 は、BindingIterator
オブジェクトの OMG IDL を示しています。
リスト 2-3 BindingIterator オブジェクトの OMG IDL
module CosNaming {
interface BindingIterator {
boolean next_one(out Binding b);
boolean next_n(in unsigned long how_many,
out BindingList b);
void destroy();
};
}
CosNaming::BindingIterator::destroy()
概要
BindingIterator
オブジェクトを破棄し、オブジェクトに関連付けられているメモリを解放します。このメソッドの呼び出しに失敗すると、メモリの使用量が増加します。
C++
マッピング
void destroy();
Java
マッピング
void destroy();
パラメータ
特にありません。
例外
特にありません。
説明
destroy
メソッドを呼び出した後に、クライアント・アプリケーションが BindingIterator
オブジェクトに対するオペレーションを呼び出すと、OBJECT_NOT_EXIST
例外が発生します。
戻り値
特にありません。
CosNaming::BindingIterator::next_n()
概要
リストから要求したバインディングの番号を格納する BindingList
データ構造体を返します。返されたバインディングの番号は、要求された数がリストを超えている場合は、それよりも小さくなります。
C++
マッピング
boolean next_n(in unsigned_long
how_many
, out BindingListbl
);
Java
マッピング
boolean next_n(int
how_many
, BindingListHolderbl
);
パラメータ
how_many
返すバインディングの最大数。
bl
要求した数を超えないバインディングを格納する BindingList
データ構造体。
例外
BAD_PARAM
how_many
パラメータに 0 の値がある場合に発生します。
戻り値
リストの上限に達している場合に、CORBA::FALSE
が返されます。それ以外の場合、CORBA::TRUE
が返されます。
CosNaming::BindingIterator::next_one()
概要
リスト内の次の Binding
オブジェクトを返します。
C++
マッピング
boolean next_one(out Binding
b
);
Java
マッピング
boolean next_one(BindingHolder
b
);
パラメータ
b
リスト内の次の Binding
オブジェクト。
例外
特にありません。
戻り値
リストの上限に達している場合に、CORBA::FALSE
が返されます。それ以外の場合、CORBA::TRUE
が返されます。
CORBA ネーム・サービスで発生する例外
ここでは、CORBA ネーム・サービスで発生する例外について説明します。
AlreadyBound
構文
exception AlreadyBound{};
パラメータ
特にありません。
説明
この例外は、指定した名前にオブジェクトがバインドされている場合に発生します。1 つのコンテキストで名前にバインドできるオブジェクトは 1 つだけです。
CannotProceed
構文
exception CannotProceed{};
パラメータ
NamingContext
cxt
オペレーションが再試行可能なコンテキスト。
Name
rest_of_name
機能していないほかの名前。
説明
この例外は、予期しない例外のためにメソッドが適切に処理できなくなったときに発生します。
InvalidAddress
構文
exception InvalidAddress{};
パラメータ
特にありません。
説明
この例外は、URL が無効の場合に発生します。
InvalidName
構文
exception InvalidName{};
パラメータ
特にありません。
説明
この例外は、Name
が無効の場合に発生します。長さ 0 の名前は無効です。
NotEmpty
構文
exception NotEmpty{};
パラメータ
特にありません。
説明
この例外は、バインディングを含む NamingContext
オブジェクトに対して destroy()
メソッドが使用されたときに発生します。NamingContext
オブジェクトは、破棄する前に空になっている必要があります。
NotFound
構文
exception NotFound{NotFoundReason why; Name rest_of_name;};
パラメータ
why
オペレーションが再試行可能なコンテキスト。
rest_of_name
機能していないほかの名前。
説明
この例外は、名前のコンポーネントがバインディングを識別しなかったか、バインディングのタイプが実行中のオペレーションに対して不正だった場合に発生します。why
パラメータは、エラーの理由を示します。rest_of_name
パラメータは、エラーの原因を示します。以下の原因が表示されます。
missing_node
− rest_of_name
パラメータの最初の名前コンポーネントが、親コンテキスト内のその名前の下でバインドされていないバインドであることを示します。not_context
− rest_of_name
パラメータの最初の名前コンポーネントが、ncontext
のタイプが要求されているときに nobject
のタイプのバインディングであることを示します。not_object
− rest_of_name
パラメータの最初の名前コンポーネントが、nobject
のタイプが要求されているときに ncontext
のタイプのバインディングであることを示します。
|
Copyright © 2001, BEA Systems, Inc. All rights reserved.
|