Interstage Application Server アプリケーション作成ガイド (CORBAサービス編) |
目次
索引
![]() ![]() |
第6章 アプリケーションの開発(Java言語) | > 6.11 サーバアプリケーションと環境設定との関連付け |
サーバアプリケーションが上記のどちらの方法を使用するかによりPOAオブジェクトの構成方法が異なります。上記のそれぞれの場合について、POAオブジェクトの使用方法を説明します。
POAオブジェクトの構成方法として一般的な方法です。
上図では、インタフェースリポジトリID"IDL:Intfid1:1.0"のインタフェースをもつオブジェクトのインスタンスはPOA1オブジェクト(RootPOA)上で管理され、インタフェースリポジトリID"IDL:Intfid2:1.0"のインタフェースをもつオブジェクトのインスタンスはPOA2オブジェクト(子または子孫POAオブジェクト)上で管理されます。
RootPOAオブジェクトで複数のオブジェクトを管理することも可能ですが、上記のような構成とすることにより、インタフェースごとに異なるPOAポリシで管理することが可能となります。
アプリケーションを作成する場合はcreate_reference()の代わりに、同じくPOAオブジェクトのメソッドであるservant_to_reference()を使用すると便利です。
servant_to_reference()の結果、POAオブジェクトにServantオブジェクトとオブジェクトIDの関連付けの登録(活性化)が行われ、さらに、オブジェクトIDを内包するオブジェクトリファレンスが返されます。ServantオブジェクトはインタフェースリポジトリIDを内包しているため、create_reference()を使用した場合のように明示的に指定する必要がありません。また、オブジェクトIDは活性化時に自動生成されるため、意識する必要がありません(ただし、POAポリシにIMPLICIT_ACTIVATIONを指定する必要があります)。
この方法はOD_or_admコマンドを使用し、オブジェクトリファレンスの生成とネーミングサービスへの登録を事前に行っている場合に使用します。インタフェースリポジトリID"IDL:Intfid1:1.0"のインタフェースをもつオブジェクトを管理するために、「子POAオブジェクト」を生成します。この際に、インタフェースリポジトリIDと同じ文字列(Stringオブジェクト)を設定します。
Servantオブジェクトの活性化は、以下のように行います。
OD_or_admコマンドによりオブジェクトリファレンスの生成とネーミングサービスへの登録を事前に行っているため、アプリケーション上での生成と登録は必要ありません。
インプリメンテーション情報との関連付けを行うために、アダプタ名にインプリメンテーションリポジトリIDを指定して、RootPOAオブジェクトに対する子POAオブジェクトを作成します。
次に孫(またはその子孫)POAオブジェクトを作成し(アダプタ名は任意)、そのPOAオブジェクト上でcreate_reference()メソッドやservant_to_reference()メソッドを使用してオブジェクトリファレンスを作成します。
Servantオブジェクトの活性化後、オブジェクトのインスタンス管理はこの孫(またはその子孫)POAオブジェクト上で行われます。この方法の場合、RootPOAオブジェクトではインスタンス管理を行うことはできません。
インプリメンテーション情報との関連付けを行うためには、上図左側のように3階層でPOAオブジェクトを生成します。このときRootPOAオブジェクトの直下の子POAオブジェクト(POA2)はインプリメンテーションリポジトリIDをアダプタ名に指定して生成します。次に子POAオブジェクトのさらに子POAオブジェクト(孫POA:POA3, POA4)はインタフェースリポジトリIDをアダプタ名に指定して生成します。この結果インプリメンテーション情報、インタフェース情報は上図のようにPOAと関連付けられます。リポジトリID"IDL:Intfid2:1.0"のインタフェースをもつオブジェクトのインスタンス管理はPOA4オブジェクトで行われます。
目次
索引
![]() ![]() |