COM コネクターのアーキテクチャー

このセクションでは、コネクターのアーキテクチャーについて説明します。図 1 に上位で行われる要求処理を、図 2 にコネクター動作の詳細を示します。

図 1. Connector for COM での要求処理

  1. コネクターが、統合ブローカーからビジネス・オブジェクト要求を受け取ります。
  2. コネクターが、ビジネス・オブジェクトのプロキシー・オブジェクト・インスタンスを作成します。プロキシー・オブジェクト・インスタンスは、コネクターが要求を送信する先の COM オブジェクトの代理として機能します。コネクターが プロキシー・オブジェクトを作成および処理する方法の詳細については、コネクターの動作方法を参照してください。
  3. コネクターがプロキシー・オブジェクトを使用して、COM サーバーで実行されている対応する COM オブジェクトを呼び出し、データを COM アプリケーションに書き込むことによって、プロキシー・オブジェクトを処理します。
  4. コネクターが COM サーバー・オブジェクトからデータを読み取りまたは取得して、プロキシー・オブジェクトを更新します。
  5. アダプターが、元のオブジェクト要求が成功したのか、または失敗 (FAIL 状況) したのかを示すメッセージを統合ブローカーに戻します。要求が成功した場合は、コネクターも統合ブローカーに更新されたビジネス・オブジェクトを戻します。

コネクターの動作方法

このセクションでは、図 2 に示すように、コネクターの各部分がビジネス・オブジェクトを処理する方法について説明します。

図 2. Connector for COM

  1. コネクターの初回始動時に、コネクターのエージェント・クラスが、以下の初期化処理を実行します。
  2. 統合ブローカーが、ビジネス・オブジェクト形式で、要求をコネクターに送信します。
  3. コネクターの BO ハンドラーがオブジェクトを受け取ります。
  4. BO ハンドラーの doVerbFor() メソッドが、BO の ASI を読み取ってプロキシー・クラス名を取得する Dispatch() メソッドを呼び出します。Dispatch() メソッドはプロキシー・クラス名を取得し、それをローダーに送信します。
  5. ローダーは、プロキシー・クラス名を使用してプロキシー・クラス (Mypackage.myclass などの有効な Java クラス表記を使用して修飾されているもの) をロードし、プロキシー・オブジェクト・インスタンスを作成して、そのインスタンスを呼び出しごとのオブジェクト・プールにロードします。ローダーは、オブジェクト確認のための検査を行います。検査の内容は以下のとおりです。
  6. ディスパッチを実行して BO の動詞 ASI を読み通し、メソッドのリストを作成します。動詞 ASI は、属性名が配列されたリストです。各属性は、プロキシー・オブジェクトに対するメソッドを表します。つまり、動詞 ASI とは、メソッドのリストではなく、それぞれがプロキシー・オブジェクト・メソッドを表す値を持つ属性のリストです。
  7. 動詞 ASI リストの各メソッドについて、BO ハンドラーの InvokeMethods() メソッドは、InvokeMethod() を呼び出し、以下のいずれかを実行します。
    注:
    動詞 ASI が空の場合、BO ハンドラーは、設定済みのパラメーターを指定して、BO に対するメソッドを検索し、呼び出します。1 つのメソッドのみがパラメーターを設定できます。それ以外、つまり複数のメソッドを設定すると、動詞 ASI が空であっても、コネクターはエラーをログに記録し、FAIL コードを戻します。
  8. プロキシー・オブジェクトの各メソッドについて、起動側は、以下を実行して、メソッドのパラメーターおよび引数を構成します。
  9. COM サーバーから値が戻されると、LoadFromProxy 関数は プロキシー・オブジェクトの「getters」を呼び出し、プロキシー・オブジェクトから戻されたデータを BO にロードします。
  10. コネクターが、ビジネス・オブジェクトを統合ブローカーに戻します。

Copyright IBM Corp. 2004, 2005