Interstage Application Server アプリケーション作成ガイド (CORBAサービス編)
目次 索引 前ページ次ページ

第6章 アプリケーションの開発(Java言語)> 6.10 サーバアプリケーションのプログラミング(POA概要)

6.10.11 AdapterActivatorオブジェクト

 AdapterActivatorオブジェクは、リクエストを受信時にPOAオブジェクトを生成するために使用します。POAオブジェクトが生成したオブジェクトリファレンスには、オブジェクトIDに加え、生成元POAオブジェクトを示すPOAidが埋め込まれています。クライアントからのリクエストが送られてきた際、POA idに対応するPOAオブジェクトが検索され、そのPOAオブジェクトがリクエストに対する処理を行います。もしみつからない場合、検索対象のPOAの親POAオブジェクトにAdapterActivatorオブジェクトが設定されているならば、そのAdapterActivatorオブジェクトに子POAオブジェクトの生成を依頼します。親POAにAdapterActivatorオブジェクトが設定されていない場合は、org.omg.CORBA.OBJ_ADAPTER例外がクライアントに通知されます。
 AdapterActivatorオブジェクトは、ユーザが作成しPOAに登録する必要があります。
 作成するAdapterActivatorクラスは、org.omg.PortableServer.AdapterActivatorクラスを継承させる必要があります。また、メソッドとしてunknown_adapter()を実装している必要があります。

【AdapterActivatorクラスの実装形式(JDK/JRE 1.1/1.2/1.3系の場合)】

  class UserAdapterActivator extends org.omg.PortableServer.AdapterActivator {
      public boolean unknown_adapter(...){...}
  }

【AdapterActivatorクラスの実装形式(JDK/JRE 1.4系の場合)】

  class UserAdapterActivator extends org.omg.CORBA.LocalObject
        implements org.omg.PortableServer.AdapterActivator {
      public boolean unknown_adapter(...){...}
  }

 AdapterActivatorオブジェクトのunknown_adapterメソッドは、org.omg.PortableServer.POA.find_POAメソッド発行時に呼び出すことも可能です。

 以下にAdapterActivatorの処理の流れを示します。

  1. クライアントからのリクエストを受信します。リクエストの対象となるオブジェクトリファレンスはPOAidを内包しています。
  2. POAidに対応するPOAオブジェクトを検索します。存在しない場合は既存のPOAから、対象のPOAの親POAを検索します。
  3. 親POAオブジェクトに設定されているAdapterActivatorクラスのインスタンスに対し、unknown_adapeter()メソッドが発行されます。
  4. unknown_adapeter()の実装部では、パラメタで渡されたPOA(親POA)の子POAオブジェクトを生成します。以降、同じオブジェクトリファレンスに対するリクエストの処理は、このPOAが行います。
  5. 生成した子POAに対する設定などを行います(ここでは、直接Servantを生成して子POAに登録することも可能であり、ServantManagerを生成し登録しておくことも可能です)。
  6. 子POAの生成に成功した場合は、trueを返します。
  7. Servantの生成、登録を行います(ServantManager使用時)。
  8. Servantのオペレーションを起動します。
  9. オペレーションの実行結果を返します。

目次 索引 前ページ次ページ

All Rights Reserved, Copyright(C) 富士通株式会社 2005