7.3.1 POAネーミング規則

各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があるとします。

C++の場合

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);

Javaの場合

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);