ページの先頭行へ戻る
Interstage Application Server アプリケーション作成ガイド(CORBAサービス編)

11.5.2 インタフェースの継承とライブラリ

  インタフェースの継承とライブラリの関係について説明します。


(1) IDL定義の例

  次のようにインタフェースAをインタフェースBが継承している場合を考えます。

  [ Y.idl ] 
        interface A {
                .... 
        };

  [ Z.idl ] 
        #include "Y.idl" 
        interface B : A {
                .... 
        };

(2) プログラムの作成

  1. 継承元のIDLファイルのIDLコンパイルは、継承がない場合と同様の方法で行います。
      IDLc -dy [-C|-cpp|-cobol|-oocob] IDLファイル

  2. 継承先のIDLファイルのIDLコンパイルは、-noincludeオプションを指定して行います。
      IDLc -dy -noinclude [-C|-cpp|-cobol|-oocob] IDLファイル

  3. それぞれのインタフェースに対して実装部であるライブラリを作成し、またプログラム本体もそれぞれ作成します。



(3) インプリメンテーションリポジトリへの登録

  継承元、継承先のアプリケーションをそれぞれ以下のように登録します。

継承元

  OD_impl_inst  -ax  Yの定義ファイル

  [Yの定義ファイル]
    rep_id  =  YのインプリメンテーションリポジトリID
    ...
    IDL:A:1.0  =  Aの実装部ライブラリのパス
    ...

継承先

  OD_impl_inst -ax Zの定義ファイル

  [Zの定義ファイル]
    rep_id  =  ZのインプリメンテーションリポジトリID
    ...
    IDL:A:1.0  =  Aの実装部ライブラリのパス  (1)
    IDL:B:1.0  =  Bの実装部ライブラリのパス,,IDL:A:1.0  (注2)
    ...

1) 継承元インタフェースの定義を記述します。形式は以下のとおりです。
    インタフェースリポジトリID=ライブラリパス,[プレフィックス]

注2) 継承先インタフェースの定義を記述します。形式は以下のとおりです。
    インタフェースリポジトリID=ライブラリパス,[プレフィックス],継承元インタフェースリポジトリID
  継承元のインタフェースが複数ある場合は、インタフェースリポジトリIDをカンマ(“,”)で区切って複数記述します。

IDL:a:1.0 = C:\server\libA.dll,,IDL:b:1.0,IDL:c:1.0

IDL:a:1.0 = /usr/prog/liba.so,,IDL:b:1.0,IDL:c:1.0


(4) メソッドの呼び出しイメージ

  IDL継承機能を用いて作成したライブラリに対するメソッドの呼び出しイメージを以下に示します。