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

第1部 アプリケーション開発(基本編)> 第5章 アプリケーションの開発(Java言語)> 5.9 サーバアプリケーションのプログラミング(POA概要)

5.9.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/JRE1.4以降の場合)】

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

【AdapterActivatorクラスの実装形式(JDK/JRE1.3以前の場合)】

  class UserAdapterActivator extends 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. オペレーションの実行結果を返します。

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

Copyright 2008 FUJITSU LIMITED