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