各POAは自身の名前と完全なPOA名称(完全階層パス名)を常に把握しています。階層はスラント(/)で示されます。例えば,/A/B/Cは,POA CはPOA Bの子であり,POA BはPOA Aの子であるという意味です。最初のスラントはrootPOAを示します。Bind Support:BY_POAポリシーをPOA Cに設定すると,/A/B/Cはosagentに登録され,クライアントは/A/B/Cにバインドできるようになります。
使用するPOA名にエスケープ文字またはそれ以外の区切り文字が含まれている場合,名前を内部で記録するときに,Borland Enterprise Server VisiBrokerはこれらの文字の前に二重¥マーク(¥¥)を付加します。例えば,次のような階層に二つのPOAがあるとします。
PortableServer::POA_var myPOA1 =
rootPOA->create_POA("A/B",
poa_manager,
policies);
PortableServer::POA_var myPOA2 =
myPOA1->create_POA("¥t",
poa_manager,
policies);
クライアントがバインドするときには,次のように使用します。
Bank::AccountManager_var manager = Bank::AccountManager::_bind
("/A¥¥/B/¥t", managerId);
org.omg.PortableServer.POA myPOA1 =
rootPOA.create_POA("A/B",
poaManager,
policies);
org.omg.PortableServer.POA myPOA2 =
myPOA1.create_POA("¥t",
poaManager,
policies);
クライアントがバインドするときには,次のように使用します。
org.omg.CORBA.Object manager =
((com.inprise.vbroker.orb.ORB) orb).bind("/A¥¥/B/¥t",
managerId,
null,
null);