JPH10133876A - 低オーバヘッドオブジェクトアダプタ - Google Patents

低オーバヘッドオブジェクトアダプタ

Info

Publication number
JPH10133876A
JPH10133876A JP9170752A JP17075297A JPH10133876A JP H10133876 A JPH10133876 A JP H10133876A JP 9170752 A JP9170752 A JP 9170752A JP 17075297 A JP17075297 A JP 17075297A JP H10133876 A JPH10133876 A JP H10133876A
Authority
JP
Japan
Prior art keywords
implementation
subcontract
server
feature
identifier
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP9170752A
Other languages
English (en)
Inventor
Ken M Cavanaugh Iii
エム. カヴァナフ サード ケン
Alan Snyder
スナイダー アラン
Swee Boon Lim
ブーン リム スウィー
Christian J Callsen
ジェイ. コールセン クリスチャン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of JPH10133876A publication Critical patent/JPH10133876A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • G06F9/548Object oriented; Remote method invocation [RMI]

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Multi Processors (AREA)
  • Computer And Data Communications (AREA)

Abstract

(57)【要約】 【課題】 サブコントラクトを活用することの可能なメ
カニズムを提供する。 【解決手段】 本発明は、分散オブジェクトシステム内
でサブコントラクトを実装するために使用されるオブジ
ェクトを起動及び作成するデータ構造及び種々の方法で
ある。サブコントラクトレジストリは、サーバオブジェ
クトに関するオブジェクトリファレンスを作成するため
に使用され、任意の数のサブコントラクトオブジェクト
を有している。各サブコントラクトオブジェクトは、サ
ブコントラクト識別子、サービス品質リスト及び作成関
数を含んでいる。インプリメンテーションレジストリ
は、任意の数のインプリメンテーション定義を登録する
ために用いられる。各インプリメンテーション定義は、
システム内のインタフェースに関するインプリメンテー
ションを定義する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、全般的に分散オブ
ジェクトシステムに関する。特に、本発明は、分散オブ
ジェクトシステム内で選択された特徴を個々のオブジェ
クトの使用に適用することの可能な分散オブジェクトシ
ステム内の低オーバヘッドオブジェクトアダプタに関す
る。
【0002】
【従来の技術】オブジェクト指向のプログラミング言語
及びシステムの急速な普及とともに、分散オブジェクト
システムの開発は、これら分散システム内におけるオブ
ジェクトの作成(creation)、参照(referencing)、起動
(invocation)、および使用一般(use in general)に関す
る新しく困難な課題をもたらした。ローカルプロシジャ
コールの意味(semantics)を分散オブジェクトシステ
ムにまで拡張するリモートプロシジャコール(RPC)
ファシリティが一般的に提供されるようになってきてい
る。これは、しばしばリモートオブジェクト起動の形を
とる。しかし、すべてのリモートオブジェクトに関して
単一の一組の明白な意味があるのではなく、種々の適用
要件を反映することが多い広範囲の可能なオブジェクト
意味があるように思われる。例えば、複製(replicatio
n)、原子トランザクション(atomic transactions)、オ
ブジェクト移送(object migration)、および永続性(per
sistence)という特徴(feature)に関する統合サポート
(integrated support)を含んだ分散オブジェクトシステ
ムがある。しかし、最小限の特徴のみを提供し、その代
わり高性能に重点を置く分散オブジェクトシステムもあ
る。
【0003】この多様性に対する反応の一つは、すべて
の可能な特徴を含むリモートオブジェクト用の単一のオ
ブジェクトシステムを設計する試みである。残念なが
ら、可能な特徴のリストは拡張し続けていて、必ずしも
すべての特徴が互換性を持つとは限らない。例えば、高
性能システムは、そのオブジェクトが永続性(persisten
ce)または原子性(atomicity)という特徴のためのサポー
トを含むことを欲しない場合がある。更に、与えられた
一組の意味を実装する種々の異なった方法があることが
多い。単一のシステムしか持たないことは、アプリケー
ションがそれらの真のニーズをよりよく反映する新規か
つ改良された特徴を利用することを妨げる。例えば、信
頼性を高めるためには、オブジェクト複製の特徴をサポ
ートすることが必要な場合がある。しかし、クライアン
トアプリケーションコードが、複製されたオブジェクト
に単に話しかけるためにのみ余計な仕事をすることは望
ましくないであろう、従って、オブジェクトの起動メカ
ニズムの一部分として“カバーの下に隠して”複製をサ
ポートするのが望ましいであろう。しかし、複製を実装
する多くの異なった方法があり、ある特定の特徴セット
に対するサポートを構築する一方で暗黙的に(implicitl
y)他を拒絶することは望ましくない。
【0004】分散オブジェクトシステムが提供できる特
徴またはオブジェクトメカニズムは多様である。例え
ば、分散オブジェクトシステムは、複製、アトミックト
ランザクション、オブジェクト移送、永続性、ネーミン
グ、イベント通知(event notification)、リレーション
シップ(relationships)、サーバ活性化、クリーンシャ
ットダウン、トランザクション、セキュリィティ、およ
びフィルタの機能付与(enablement of filters)(圧
縮、暗号化、追跡、デバッギングなど)のような諸特徴
を提供することができる。これらの特徴はサービスと呼
ぶこともでき、オブジェクトサービスモジュールによっ
て分散オブジェクトシステムの一部分として提供するこ
とができる。過去の分散オブジェクトシステムは、種々
のアプリケーションに関してこれら特徴の柔軟なサブセ
ットを、特に一つのアプリケーション内の種々のオブジ
ェクトに対して提供することができないという不具合が
あった。過去のシステムは、これらの特徴の固定された
一セットしか供給していなかった。
【0005】この欠点には、サブコントラクト(subcon
tract)の概念によって取組むことができる。サブコン
トラクトとその使用は、米国特許出願第08/554,794号で
説明されている。サブコントラクトの概念は、G.Hamilt
on, M.Powell及びJ.Mitchellによる「サブコントラク
ト:分散プログラミングのためのフレキシブルベース」
(Sun Microsystems Laboratories,Inc.発行 1993年)
にも説明されている。サブコントラクトとそれらの関連
機能(functionality)は、様々な方法で実装すること
ができる。
【0006】サブコントラクトを用いることにより、ア
プリケーションは、種々の上記特徴のうちどれを(特
に)利用しようとしているかを指定することができ、あ
るいはアプリケーション中の種々のオブジェクトが使用
し得る種々の特徴グループを指定することができる。こ
れらの特徴からなるグループまたは順列(permutation)
は、サブコントラクトと呼ばれる。このようにして、ア
プリケーション中の各オブジェクトは、特定のサブコン
トラクト(すなわち特徴のグループ)を利用することが
できる。所望の特徴からなるグループは、所望のサービ
ス品質(qualityof service)とも呼ばれる。そして、
これら所望の特徴は、サービス品質のリストに表現する
ことができる。このとき、サブコントラクトは、分散オ
ブジェクトアプリケーション中に特定のサービス品質を
配送する。一つのオブジェクトは、所定の時点にそのオ
ブジェクトに関連付けられた一つのサブコントラクトを
持つことができる。サブコントラクトは、オブジェクト
インタフェースやオブジェクトインプリメンテーション
とは別である。従って、オブジェクト実装者にとって、
既存のサブコントラクトを選んで用いることや、あるい
は新しいサブコントラクトを実行することは容易であ
る。これに応じて、アプリケーションレベルのプログラ
マは、特定のオブジェクトに使用されている特定のサブ
コントラクトを意識する必要がない。オブジェクトに関
連付けられたサブコントラクトにより、システムが提供
するオブジェクトメカニズム又は特徴を実装する仕事か
らオブジェクトを実装する仕事を切り離すことが可能に
なる。
【0007】サブコントラクトが有効である理由の一つ
は、サブコントラクトがオブジェクト実装仕事をオブジ
ェクトメカニズムの実装から切り離すことである。サブ
コントラクトが利用可能になると、オブジェクト実装者
は、すべてのオブジェクト実装者がオブジェクトインプ
リメンテーションマシナリ(machinery)の詳細を熟知す
る必要なしに、種々のオブジェクトメカニズム(あるい
は特徴)の範囲から選択を行うことができる。サブコン
トラクトが提供する一組の特徴は、分散環境内でコント
ロールを得るための正しいレバー(right levers)であ
る。設計により、リモートオブジェクト上でとられる全
てのキーアクションは、何らかの方法でオブジェクトの
サブコントラクトを伴うことになる。例えば、オブジェ
クト作成(object creation)や、オブジェクトリファレ
ンスの作成(object reference creation)や、メソッド
起動(method invocation)のような動作は、オブジェク
トのサブコントラクトを伴う。サブコントラクトは、種
々のオブジェクトに関する種々の方針をプラグインする
効果的な方法を提供し、ベースシステムが提供しなけれ
ばならない機能(functionality)を低減する。
【0008】
【発明が解決しようとする課題】しかしながら、従来技
術の分散オブジェクトシステムはサブコントラクトの機
能を利用しておらず、サブコントラクトの統合化にはう
まく適合していない。共通オブジェクトリクエストブロ
ーカアーキテクチャ(CORBA)は、オブジェクトア
ダプタの概念を定義する。多くのタスクの中で、オブジ
ェクトアダプタは、サーバントオブジェクトを作成し、
サーバへのリクエストをディスパッチ(dispatch)す
る。オブジェクトアダプタは、サーバ側オブジェクトメ
カニズムについて一組の限定された選択肢を与える。し
かしながら、ほとんどのオブジェクトアダプタは、基本
オブジェクトマシナリの一部として供給され、アプリケ
ーションライター(application writer)が新しいオブジ
ェクトアダプタを実装することや、オブジェクトマシナ
リがランタイム(run time)に新しいオブジェクトアダプ
タを発見して組み込むことは、現実的に不可能である。
例えば、CORBAで定義される基本オブジェクトアダ
プタ(BOA)は、固定された一組の特徴しか提供しない
という点で、非常に制限されている。以上述べたよう
に、固定された一組の特徴が一つのオブジェクトに提供
されるだけということは決して望ましくない。そして、
すべての特徴が供給されたとしても性能が犠牲になる
し、性能を高めれば特徴が全て供給されることはなくな
る。しかし、アプリケーション中のあるオブジェクト
は、制限された一組の特徴しか利用する必要がない場合
があり、これは異なる一組の特徴を必要とする同じアプ
リケーション中の異なるオブジェクトとは対照的であ
る。従って、従来技術のオブジェクトアダプタは、オブ
ジェクトに不必要に余計な特徴を負荷し、その結果オー
バヘッドを高め、CPU使用時間を増加させている。
【0009】従って、伝統的なオブジェクトアダプタ機
能のいくつかを実装することができると同時にサブコン
トラクトを活用することの可能なメカニズムの作成が望
まれている。このようなオブジェクトアダプタは、分散
オブジェクトシステムが提供する特徴の必ずしも全部で
はないがその一部を分散システム内の異なるオブジェク
トが利用できるようにすることにより、固定オブジェク
トアダプタの欠点を克服する。
【0010】
【課題を解決するための手段】本発明の諸態様は、サブ
コントラクトとともに用いるデータ構造、並びにオブジ
ェクトを起動及び作成する種々の方法に関する。一つの
データ構造は、コンピュータ読取り可能媒体中に実装さ
れたサブコントラクトレジストリである。サブコントラ
クトレジストリは、分散オブジェクトコンピューティン
グシステム内のサーバオブジェクトに対するオブジェク
トリファレンスの作成に用いられる。分散オブジェクト
コンピューティングシステムは、サーバオブジェクトに
対するオブジェクトリファレンスの作成に用いる多数の
特徴(あるいは、オブジェクトメカニズム)を提供する
ことができる。サブコントラクトレジストリは、その内
部に任意の数のサブコントラクトオブジェクトを持つこ
とができ、各サブコントラクトオブジェクトは、特定の
サブコントラクトに関する情報を含んでいる。この情報
は、サブコントラクトオブジェクトを識別するサブコン
トラクト識別子と、特徴名と値の対(feature name-val
ue pair)を含むサービス品質リストと、を含むことが
できる。特徴名は、特定のサブコントラクトが提供しう
る特徴の中から一つを識別し、値は、特徴が存在するか
否かを示し、すなわち特徴名を更に修飾(qualify)す
ることができる。また、サブコントラクトオブジェクト
に固有の作成関数も含まれる。この作成関数は、サービ
ス品質リスト内の特徴名によって識別された特徴を用い
て一つのサーバオブジェクトに対する一つのオブジェク
トリファレンスを作成して返却するために用いられる。
【0011】もう一つのデータ構造は、インプリメンテ
ーションレジストリであり、これもコンピュータ読取り
可能媒体中に実装される。インプリメンテーションレジ
ストリは、任意の数のインプリメンテーション定義(im
plementation definition)を登録するために用いられ
る。各インプリメンテーション定義は、分散オブジェク
トコンピューティングシステム内のインタフェースに対
してインプリメンテーションを定義し、各インプリメン
テーション定義は、当該インプリメンテーションに関す
る情報を含む。その情報は、インプリメンテーションを
識別するインプリメンテーション識別子、サブコントラ
クトレジストリに含まれるサブコントラクトオブジェク
トへのロケーションインジケータ、実装中のインタフェ
ースを識別するインタフェース識別子、および当該イン
プリメンテーションに固有のサーバオブジェクトを作成
及び起動するために用いられる一組の関数、を含むこと
ができる。
【0012】本発明の一つの態様は、分散オブジェクト
コンピューティングシステム内の分散サーバオブジェク
トに対してオブジェクトリファレンスを作成する方法に
関する。この方法は、あるサーバオブジェクトに対する
オブジェクトリファレンスの作成をリクエストすること
によって開始される。次に、作成されるべきサーバオブ
ジェクトに対応するサブコントラクトレジストリ内のサ
ブコントラクトが識別される。このサブコントラクト
は、サービス品質リストを有する。このサービス品質リ
ストは、サーバオブジェクトのインプリメンテーション
を起動する際に利用されるべきサービス品質を識別す
る。サブコントラクトの作成関数も識別される。作成関
数は、サービス品質リストに対応する方法でサーバオブ
ジェクトを作成する役割を果たす。この作成関数は、サ
ーバオブジェクトに対するオブジェクトリファレンスを
作るために起動される。このオブジェクトリファレンス
は、呼び出しエントリ(calling entry)へ返却され
る。
【0013】他の態様は、分散サーバオブジェクト上で
定義されたメソッドの起動に関する。最初に、サーバオ
ブジェクトに対するオブジェクトリファレンスを含むマ
ーシャルバッファが受け取られる。マーシャルバッファ
が受け取られると、オブジェクトリファレンスからイン
プリメンテーション識別子が抽出される。抽出されたイ
ンプリメンテーション識別子をキーとして用いることに
より、インプリメンテーションレジストリ内のインプリ
メンテーション定義も判別される。次に、サーバオブジ
ェクトへのロケーションインジケータを作るため、イン
プリメンテーション定義のルックアップ関数が呼び出さ
れる。ロケーションインジケータが作られると、サーバ
オブジェクト上で定義されたオブジェクトメソッドを起
動するため、インプリメンテーション定義のスケルトン
ディスパッチ関数が呼び出される。
【0014】
【発明の実施の形態】本発明は、添付の図面に関する下
記説明を参照することによって、その更なる利点ととも
に最もよく理解されるであろう。
【0015】本発明は、分散オブジェクトシステム用の
ものである。以下では、添付の図面に示される幾つかの
好適な実施形態を参照しながら本発明を説明する。本発
明は、任意の適切な分散オブジェクトシステム(COR
BA又は他の任意の適切な仕様で定義されたものを含
む)のコンテキスト内で実施することができる。しかし
ながら、説明のため、本発明は、主として1995年7
月のオブジェクトマネージメントグループ(OMG)改
訂版2.0(これは、参照文献として本明細書に組み込
まれる)からのCORBA仕様に基づいて実装されたオ
ブジェクトリクエストブローカ(ORB)のコンテキス
ト内で述べられる。図1は、本発明の一態様の実施に適
した代表的な分散オブジェクトシステムの全体アーキテ
クチャを示す概略図である。図2は、3レベルのディス
パッチメカニズムを含むようなアーキテクチャ内におい
てクライアントからサーバントオブジェクトへのリクエ
ストが辿り得るいくつかの可能な流れ経路を示す概略図
である。図5は、サーバントオブジェクトを参照するた
めにクライアントが使用できるオブジェクトリファレン
スデータ構造の一つを示す。
【0016】分散オブジェクトシステム10は、図1に
模式的に示すように、通常、オブジェクトリクエストブ
ローカ(ORB)11を含む。ORB11は、クライア
ントからの呼び出し(call)をサーバント(ターゲット
オブジェクト)に配達してそのクライアントに応答を返
却するのに必要なロケーション並びにトランスポートメ
カニズム及びファシリティのすべてを提供するが、これ
については図2を参照しながら後述する。クライアント
とサーバントは、同一プロセス内、同一マシン上の異な
るプロセス内、または全く異なるマシン上に配置でき
る。ここでの議論のためには、クライアント20は、分
散オブジェクトに対するオペレーションを起動する任意
のコードでよいので、クライアント20は、分散オブジ
ェクトまたはプロセスの形をとることもできるし、取ら
なくてもよい。分散オブジェクトは、多様な表現を有す
ることができる。例えば、分散オブジェクトは、アプリ
ケーション開発者によって提供されたC++オブジェク
トであってもよい。そのほか、分散オブジェクト用のイ
ンプリメンテーションは、ビジュアルアプリケーション
ビルダ15内で開発することもできる。このビジュアル
アプリケーションビルダによって、開発者は、既存のオ
ブジェクトタイプをカタログから目視で選択し、あるオ
ブジェクト用の新しいインプリメンテーションを作成す
るために、一つのオブジェクトによって提供されたサー
ビスを別のオブジェクト(属性、引数、結果等)によっ
て必要とされるサービスにグラフィカルに接続すること
が可能となる。
【0017】オブジェクト開発ファシリティ(object d
evelopment facility)16は、分散オブジェクトの作
成とインストレーションを簡略化するために使用でき
る。これは、開発者オブジェクト(developer object)
を分散オブジェクトコードの中に「包む」、すなわちカ
プセル化するために用いられる。このように、オブジェ
クト開発ファシリティ16は、開発者オブジェクトをO
RBオブジェクトインプリメンテーション14に変換す
るために使用できる。この例ではORBオブジェクトイ
ンプリメンテーション14は、図中のその場所で示され
るように、サーバとして提示される。開発者はインタフ
ェース定義言語を使ってORBオブジェクト用インタフ
ェースを定義し、そのオブジェクトの振る舞いを実装す
るオブジェクトインプリメンテーションを開発者に提供
した後、そのオブジェクトの開発ファシリティ16を使
ってORBオブジェクトインプリメンテーション14を
作成する。ランタイムでは、このORBオブジェクト
(サーバントオブジェクト)のインスタンスが作成され
る。このインスタンスは、ORBオブジェクトインプリ
メンテーション14を利用する。幾つかの時点でクライ
アントの役割を担うようなオブジェクトを、このオブジ
ェクト開発ファシリティを用いて作成することもでき
る。
【0018】クライアント20は、スタブ21、サブコ
ントラクト層36、場合によりフィルタ40、およびト
ランスポート層38を介してサーバントと通信する。ス
タブ21は、サロゲート22、メソッドテーブル24、
および複数のスタブ関数25を含む。クライアント20
は、最初、サロゲート22と通信する。このサロゲート
22は、クライアントにはサーバオブジェクトに見え
る。このほか、クライアント20は、サロゲート22、
メソッドテーブル24、およびスタブ関数25の代わり
に、動的起動インタフェース(DII)26を介してサ
ーバオブジェクトと直接通信してもよい。クライアント
は、動的起動インタフェース26を使用して動的リクエ
ストを構築することができる。上記の層を利用してクラ
イアントがサーバントに対する呼び出しを行うことを可
能にする一つの手順を、図2を参照しながら以下により
詳しく説明する。
【0019】サブコントラクト層36は、サブコントラ
クトを利用して特定のサブコントラクトによって名前付
けされた各種サービス(あるいは特徴又はオブジェクト
メカニズム)を実装するため、オブジェクトによって要
求された機能(functionality)を提供する。この点に
ついては、米国特許出願第08/554,794号(出願日1995年
11月7日)に、より詳細に記載されている。サブコント
ラクトは、個々のオブジェクトが利用可能な分散オブジ
ェクトシステムによって提供されるサービスの品質(qu
ality of service)を識別する。例えば、サブコントラ
クトは、特定のオブジェクトのためにセキュリティ特徴
が使用されることを識別することができる。フィルタ4
0が使用される場合、フィルタ40は、オブジェクトに
出入りする通信に適用すべき様々なタスク、例えば圧
縮、暗号化、トレース、またはデバッグ等、を実行す
る。
【0020】トランスポート層38は、クライアントと
同一のプロセスを通常は共有しないサーバントに出入り
する情報を、マーシャリング、アンマーシャリング、お
よび物理的に輸送するように動作する。
【0021】標準インプリメンテーションスイート28
(またはオブジェクトアダプタ)は、同一の方式でOR
Bオブジェクト14と対話(interact)する一組のサブ
コントラクト、例えばオブジェクトキーマネージメン
ト、を表す。このようなインプリメンテーションスイー
トの一つは、本発明の以下の説明の中で述べられてい
る。サブコントラクトは、多数のインプリメンテーショ
ンスイートに属することができる。また、インプリメン
テーションスイートは、異なるサブコントラクトを利用
することもできる。スケルトンは、静的スケルトン32
や動的スケルトン30の形を取り得るが、これは、サー
バントオブジェクト78(これについては、図2を参照
しながら以下でより詳細に説明する)によって要求され
るフォーマットにリクエストを変換するために使用され
る。このようにして、スケルトン32及び30は、適切
なサーバントオブジェクト78を呼び出す。静的スケル
トン32はインタフェース固有のオブジェクトインプリ
メンテーション14を呼び出すために使用され、動的ス
ケルトン30は、一般に、インタフェース固有のオブジ
ェクトが利用できないときに使用される。ORBインタ
フェース34は、ORBに直接進むインタフェースであ
る。これは、全てのORBについて同一であり、オブジ
ェクトのインタフェースやオブジェクトアダプタには依
存しない。
【0022】ORBデーモン46は、オブジェクトサー
バがクライアントによって起動されたときにアクティブ
であることを保証する役割を果たす。オブジェクトサー
バをスタートさせるための技術は、米国特許第08/408,6
45号(これは、参照文献として本明細書に組み込まれ
る)に記載されている。
【0023】セキュアプロトコル(Secure Protocol)
42は、インターネットORB間プロトコルを保証し
て、トランスポート層38を介して安全に情報を伝送す
るのに役立つセキュアインタオペラビリティプロトコル
である。これは完全性保護(integrity protection)や
機密性等を意味する場合がある。インターネットORB
間プロトコルは、通常、異なるマシン上でのプロセス間
で通信を行うプロトコルである。しかしながら、場合に
よっては、インターネットORB間プロトコルは、同一
マシン上のプロセス間で通信を行うこともできる。セキ
ュリティサーバ54は、異なるコンピュータ上のプロセ
ス間で使用されるサービスを保証するセキュリティアド
ミニストレーションサーバである。
【0024】タイプコード/Anyモジュール44は、
「タイプコード」及び「Any」オブジェクトを実装す
る。タイプコードは、インタフェース定義言語(ID
L)データタイプを記述し、クライアント及びサーバ間
におけるタイプ記述の伝達を可能にする。IDLデータ
タイプのインスタンスは、Anyオブジェクトによって
カプセル化することができる。Anyオブジェクトは、
カプセル化されたデータのタイプコード及びこのデータ
のジェネリックエンコーディングを参照する。
【0025】インプリメンテーションレポジトリ50
は、オブジェクトサーバに関する情報を格納するために
使用される。具体的には、インプリメンテーションレポ
ジトリ50は、サーバプロセスを開始するのに必要な情
報を格納する。例えば、インプリメンテーションレポジ
トリ50は、サーバプログラムの場所、プログラムに対
する任意の引数、プログラムに渡すべき任意の環境変数
等の情報を格納する。
【0026】単一永続性(simple persistence)56
は、インタフェース定義言語(IDL)定義タイプと、
IDLコンパイラを介してそのIDLタイプを実行する
ことによる出力と、を使用し、IDL定義タイプをディ
スクから読み取ったりディスクへ書き込むことができる
ように追加コードの一部も併せて使用する。ネーミング
サービス52は、ORBオブジェクトを名前付け(nam
e)するために使用される。クライアントは、ネーミン
グサービス52を使って名前により希望のオブジェクト
を発見することができる。ネーミングサービス52は、
オブジェクトリファレンスを返却する。このオブジェク
トリファレンスは、そのオブジェクトにリクエストを送
るために使用することができる。インタフェースレポジ
トリ48(IFR)は、分散オブジェクトシステム内の
すべてのオブジェクトに対するすべてのインタフェース
について知識を持っている。
【0027】メソッドテーブル(「m−テーブル」)デ
ィスパッチを使ってクライアントにより作成されたリク
エストは、図2に図示するように、途中、前述したアー
キテクチャの様々な層を通ってサーバントに至る。リク
エストはクライアントによって始められ、任意の適切な
形をとることができる。リクエストの形は、クライアン
トを作成するために使用されるプログラミング言語の性
質に大きく依存する。例えば、クライアントがC++言
語で書かれている場合、リクエストはC++メソッド呼
び出し(method call)62の形をとることができる。
この呼び出しは、サロゲートの形を取りつつ指定のオブ
ジェクトリファレンスに対して行なわれる。このサロゲ
ートは、オブジェクトのインタフェースに適合するメソ
ッドを含んでいる。
【0028】当業者にはよく理解されるように、分散オ
ブジェクトシステム内の異なる場所で使用されるオブジ
ェクトリファレンスは外観が大きく変わる場合がある。
本実施形態では、クライアント側オブジェクトリファレ
ンスは、デュアルポインタである(本明細書では「ファ
ットポインタ(fat pointer)」と呼ぶ)。ファットポ
インタは、性質の異なる2つのポインタを含む。第1の
ポインタは、参照されるオブジェクトに関連付けられた
クライアント表現(“client rep”)を指す。第2のポ
インタは、参照されるオブジェクトに関連付けられたメ
ソッドテーブルディスパッチのメソッドテーブルを指
す。クライアント表現は、起動とCORBA定義「疑
似」オブジェクトリファレンスオペレーションとをサポ
ートするメソッドを有するオブジェクトである。これら
のオペレーションには、“duplicate”メソッド、“rel
ease”メソッド、“narrow”メソッド、“hash”メソッ
ド、および“is_equivalent”メソッドが含まれる。但
し、これらに限定されるわけではない。
【0029】クライアントが呼び出しを開始した後、こ
の呼び出しはメソッドテーブルディスパッチメカニズム
24を用いて処理される。この技術は、米国特許第08/3
07,929号(これは、参照文献として本明細書に組み込ま
れる)に開示されている。
【0030】このメソッドテーブルディスパッチメカニ
ズムは、スタブ関数25へのロケーションインジケータ
(location indicator)のリストを含んだメソッドテー
ブルを使用する。これらのポインタの一つは、起動され
るべきメソッドに関連付けられている。スタブ関数25
は、クライアントプロセスの「ネイティブ」言語で関数
又は手続き呼び出しを受け取った後、サブコントラクト
層36かネイティブ呼び出しのいずれかを使って、対応
するサーバントオブジェクトを最後に呼び出す。このネ
イティブ言語は、任意の適切な言語、例えばC++のよ
うな言語とすることができる。
【0031】メソッドテーブルディスパッチ24は、そ
のメソッド呼び出しを処理する適切なスタブ関数25を
一つ決定した後、そのメソッド呼び出しをこの適切なス
タブ関数25と対にする。メソッド呼び出しを行なった
クライアントがサーバントオブジェクトと同一プロセス
にある場合、ローカルスタブ関数が呼び出される。この
ローカルスタブ関数は、そのメソッド呼び出しをサーバ
ントオブジェクト78に直接送る。そのほか、サーバン
トオブジェクトが異なるプロセス、すなわちリモートプ
ロセスにある場合、リモートスタブ関数が呼び出され
る。リモートスタブ関数はクライアント表現を起動し、
このクライアント表現がその起動をサーバントオブジェ
クト78に伝達する。
【0032】サブコントラクト層36によって実装され
るサブコントラクトは、分散オブジェクトシステムで重
要なオブジェクトの起動(object invocation)及び引
数の受け渡し(argument passing)の基本メカニズムを
制御する論理モジュールである。サブコントラクト層3
6によって実装されるサブコントラクトは、オブジェク
トによって使用されるサービスの特定の品質(qualit
y)を決定する。サブコントラクトは、サブコントラク
ト識別子によって一意に識別される。この識別子は、通
常、オブジェクトリファレンスに埋め込まれている。サ
ービス品質は、一組のサービスプロパティである。選択
可能なサービスプロパティの中には、サーバ活性化、セ
キュリティ、トランザクション、フィルタラビリティ
(filterability)、およびクリーンシャットダウンに
関する品質がある。サブコントラクトは、一定の品質の
サービスが利用できるように構成されている。予め定め
られたサービスの品質によって、個々のサービスプロパ
ティの処理に伴うオーバーヘッドが削減される。現実的
には、「妥当な」、または一般的に使用されるサービス
プロパティの組合せが、サブコントラクトによってサポ
ートされる。しかしながら、所定の分散オブジェクトシ
ステムの特定の要求を満たすようにサブコントラクトを
作成してもよい。
【0033】サブコントラクト層36内の適切なサブコ
ントラクトの識別は、そのサブコントラクトに固有の所
望の関数の識別と見做すことができる。例えば、マーシ
ャル関数やアンマーシャル関数は、各サブコントラクト
毎に定義される。サブコントラクトマーシャル関数は、
別のアドレス空間やドメインにオブジェクトリファレン
スを伝送できるようにオブジェクトリファレンスをマー
シャリングするため、スタブによって使用される。オブ
ジェクトリファレンスは、通常、トランスポート層38
内のトランスポートメカニズムによって処理される。
【0034】トランスポート層38の一部であるT1、
T2等のトランスポートメカニズムは、サーバントオブ
ジェクトに出入りする情報をマーシャリングして物理的
に輸送するために使用される。情報、すなわちオブジェ
クトリファレンスやリクエストは、所定のドメインに適
したプロトコルに変換される。例えば、プロトコルは、
イーサーネットプロトコルや一般ORB間プロトコル
(GIOP)を含んでいてもよい。但し、これらに限定
されるわけではない。希なケースでは、プロトコルは、
サーバ上で実装されるべき命令を伝送するために電子メ
ールの使用を必要とすることもある。情報がマーシャリ
ングされた後、そのトランスポートメカニズムは、オペ
レーティングシステム、デバイスドライバ、またはネッ
トワーク(これらは、すべて、分散オブジェクトシステ
ムのクライアント側によって使用されるハードウェア7
0の一部)の任意の組合せを介して情報を輸送する。
【0035】トランスポートメカニズムでは、情報を所
定ドメインに適したプロトコルに変換する必要がある
が、中には異なるドメインに対する情報のコード化を必
要としないトランスポートメカニズムもある。情報が発
生したドメイン以外のドメインに適したプロトコルへの
情報の変換を必要としないトランスポートメカニズムは
「ドア」と呼ばれる。ドアは、本質的に、同一ホスト上
の2つの異なるプロセス間のゲートウェイである。ドア
の使用によって、トランスポート層38内の標準インプ
リメンテーションに情報を変換する必要がなくなる。と
いうのも、情報が同一ホストに残っているのでドメイン
を変更する必要がないため、異なるマシンによって使用
され得るプロトコルに情報をコード化する必要がないか
らである。従って、情報は、単に「平坦化(flattened o
ut) 」されるか、あるいは異なるマシンによる使用のた
めにコード化されることのないストリームの中にマーシ
ャリングされて、ホスト上の2つのプロセス間で受け渡
しされても良い。
【0036】クライアント側によって使用されるハード
ウェア70を介して情報が送られると、その情報は、分
散オブジェクトシステムのサーバ側のハードウェア70
に送られる。情報がハードウェア70を通じて送られる
と、分散オブジェクトシステムのサーバ側は、トランス
ポート層38の一部であるエンドポイントで情報を受け
取るために、T1、T2等のトランスポートメカニズム
を呼び出す。トランスポート層38によってエンドポイ
ントが作成されない場合、トランスポート層38は、そ
のエンドポイントがサブコントラクト層36によって作
成されるのに必要な機能を提供する。例えば、デディケ
ーテッドエンドポイント(dedicated end point)は、
通常、サブコントラクト層36によって作成され、一
方、ネットワークエンドポイント及びTCP/IPエン
ドポイントを通常含むクラスタエンドポイントは、通
常、トランスポート層38によって作成される。エンド
ポイントの作成がサブコントラクト層36によるかトラ
ンスポート層38によるかにかかわらず、エンドポイン
トは、トランスポート層38の中に「住む(live i
n)」、すなわちトランスポート層38の一部である。
エンドポイントは、基本的に、異なるドメインから情報
を受け取るポートである。トランスポート層38内のエ
ンドポイントが、異なるドメインから送られた情報を受
け取った後、そのエンドポイントは、その情報をトラン
スポート層38からサブコントラクト層36にディスパ
ッチする。この後、サブコントラクト層36は、その情
報をスケルトン及びサーバントにディスパッチする。
【0037】サブコントラクト層36は、受け取った情
報の少なくとも一部をアンマーシャリングする機能を提
供する。すなわち、サブコントラクト層36は、リクエ
ストの少なくとも一部をアンマーシャリングする。次
に、リクエストがスケルトン31にディスパッチされ、
スケルトンがそのリクエストを、サーバントオブジェク
ト78によって要求されるインプリメンテーション固有
フォーマットに変換する。上記のように、スケルトン3
1は、静的スケルトン32でも動的スケルトン30でも
よい。
【0038】一般に、リモートリクエストは、上記のよ
うに、クライアント側及びサーバ側を通じて送られる。
メソッド呼び出し62が受け取られると、リクエストを
マーシャリングしてそれを別のドメインに送る準備を行
うトランスポート層38内のトランスポートメカニズム
を選択する前に、メソッドテーブルディスパッチ層24
を用いて適切なサブコントラクトが識別される。マーシ
ャリングされたリクエストは、ハードウェア70を介し
てサーバ側に送られ、そこでそのリクエストがトランス
ポート層38の一部であるエンドポイント上で受け取ら
れる。適切なエンドポイントがワイヤを通じて送られた
情報を受け取り、情報がトランスポート層38からサブ
コントラクト層36にディスパッチされるので、受け取
った情報を少なくとも部分的にアンマーシャリングする
機能が提供される。次に、サブコントラクト層は、その
リクエストをスケルトン31にディスパッチし、このス
ケルトンは、そのリクエストを、サーバントオブジェク
ト78によって要求される固有のフォーマットに変換す
る。この経路を矢印77で示すが、これはリモート及び
ローカルリクエストが共に取り得る経路である。
【0039】しかしながら、クライアントとサーバがロ
ーカルプロセスにある場合、すなわちクライアントとサ
ーバが共に同一プロセスにある場合、上記の矢印77で
示される経路の使用は必要以上に複雑である。クライア
ントとサーバが同一プロセスにあることが分かっていれ
ば、サービスのリクエストの起動経路、すなわち流れ経
路(flow path)を短縮することができる。オブジェク
トリファレンスを作成するときにローカルプロセスが識
別されると、同一ホスト上のクライアントからサーバに
リクエストを送るために、短縮流れ経路、つまり矢印7
5及び76で示される経路をとることができる。矢印7
6で示される経路をとる可能性の方が大きい。というの
は、それが適切なサブコントラクトを識別するためにサ
ブコントラクト層36を使用しているからである。しか
しながら、適切なサブコントラクトをはっきり識別する
必要のない状況では矢印75で示される経路をとること
もできる。
【0040】ここで、図5を使って、オブジェクトリフ
ァレンスの一形態を説明する。当業者にはよく知られて
いるように、オブジェクトリファレンスは、それらが任
意の所定時点で占めているプロセス内の位置によって様
々な形をとることができる。しかしながら、背景とし
て、低オーバヘッドインプリメンテーションスイート
(low overhead implementation suite)を利用するシ
ステムで使用するための代表的なオブジェクトリファレ
ンスを図5に示す。ここで示されるインプリメンテーシ
ョンでは、オブジェクトリファレンス150は、ホスト
識別子152、ポート指定(port designation)15
4、およびオブジェクトキー156を含む。オブジェク
トキー156は、サブコントラクト識別子158、サー
バ識別子160、インプリメンテーション識別子16
2、およびユーザキー164を含む。ホスト識別子15
2は、ネットワーク内の特定のコンピュータを示し、ポ
ート指定154は、通信用に使用すべき選ばれたコンピ
ュータのポートを識別する。オブジェクトキー156
は、望ましいサーバントオブジェクトをホストマシン上
に配置するために使用される別の識別用情報を提供す
る。
【0041】サーバ識別子160は、サーバントオブジ
ェクトが常駐する特定のプロセスやプログラムを指定
し、一方、ユーザキー164は、サーバ識別子160に
よって指定されるプロセス内にサーバントを配置するた
めに使用される固有の数または文字列(string)であ
る。サブコントラクト識別子158は、特定サブコント
ラクトのプロトコル及びその関連サービスをサーバント
と共に生成するために使用され、インプリメンテーショ
ン識別子162は、そのサーバントオブジェクトと共に
使用すべきインタフェースのインプリメンテーションを
指定する。
【0042】本発明は、サブコントラクトを用いること
により分散オブジェクトシステム内で利用可能なすべて
の特徴からなるサブセットと対話してこれを利用するこ
との可能なオブジェクトアダプタに関する。このような
オブジェクトアダプタは、すべてのオブジェクトに対し
てすべての特徴からなる網羅的な固定セットを供給する
ことを必ずしも必要としない。むしろ、このようなアダ
プタは、より小さな特徴サブセットを供給するように設
計されており、これによりCPUに関するオーバヘッド
が低減したり、応答が高速になる等の効果が得られるよ
うになっている。
【0043】この低オーバヘッドの(あるいは「軽量
の」)オブジェクトアダプタは、サブコントラクトのコ
ンテキスト内のオブジェクトとともに用いる様々な機能
を提供する。これらの機能には、例えば、インプリメン
テーション活性化(implementation activation)や、
オブジェクトリファレンスの作成や、オブジェクト起動
が含まれる。本発明の一側面の一実施形態に係るオブジ
ェクトリファレンスの作成及びインプリメンテーション
活性化については、図6〜図11を参照しながら後述す
る。また、オブジェクト起動に関する機能については、
図12、13および14に示した実施形態を参照しなが
ら後述する。本発明の別の側面によれば、これらの機能
の効率的な実装を容易にするように構成された特殊デー
タ構造が提供される。
【0044】上述したように、分散オブジェクトシステ
ムは、個々のオブジェクトが用いるセキュリィティやサ
ーバ活性化等の様々な特徴を提供することができる。こ
れらの特徴は、複数のセットにグループ分けされる。一
つ以上の特徴からなる各セットは、サブコントラクトと
呼ばれる。各サブコントラクトは、サブコントラクト識
別子によって識別される。このサブコントラクト識別子
は、番号または他の適当な識別子である。例えば、図3
に示すように、サブコントラクト1は、クリーンシャッ
トダウンを提供すべきでないこと、MD5のような認証
(authentication)プロトコルを用いるべきこと、オブジ
ェクトは永続性(persistence)を持つべきこと、および
サーバ活性化をオンにすべきことを示す。このように、
サブコントラクト1は、一つのオブジェクトに対して利
用可能な四つの特徴を識別し、これらの特徴が存在する
かどうか(すなわちオンまたはオフのいずれになってい
るか)、更に修飾されているかどうか、または特定の値
を持っているかどうか、を識別する。一組の特徴を、こ
こでは「サービスの品質」と称する。従って、各サブコ
ントラクト識別子は、特定のサービスの品質を識別す
る。図示の実施形態においては、特定のサービス品質を
定義付ける特徴は、名称と値の対のリストで識別され
る。
【0045】次に、図3を参照して本発明の一実施形態
に係るサブコントラクトレジストリデータ構造200を
説明する。サブコントラクトレジストリは、ある情報の
格納に用いられる。この情報は、特定のサービス品質
を、固有のサブコントラクト識別子に関連付け、またそ
の関連付けられたサブコントラクトクライアント表現作
成関数(subcontract client representation create f
unction)と関連付ける。テーブル200は、このシス
テム内におけるすべての利用可能なサブコントラクトを
登録して探索に利用できるようにするので、サブコント
ラクトレジストリと称される。図3を参照しながら後述
するように、この方式では、このテーブルは、任意の数
のインプリメンテーションを特定のサブコントラクトと
関連付けることができるという点で優れている。一つの
システム内の特徴の所定数の配列(permutation)が可
能であるが、サブコントラクトレジストリは、分散オブ
ジェクトシステム内に実装されたこれらの利用可能なサ
ブコントラクトからなるサブセットしか識別することが
できない。このテーブル200は、ハッシュテーブル
(hash table)、リンク付けリスト(linked list)、
または他の任意の適当なデータ構造、として実装するこ
とができる。
【0046】サブコントラクトレジストリ200は、サ
ブコントラクト識別子列202、関連サービス品質リス
ト列204、サブコントラクトクライアント表現作成関
数列206、および他の関数208へのロケーションイ
ンジケータ、を含んでいる。サブコントラクトレジスト
リ200の各行210は、サブコントラクトメタオブジ
ェクト(Subcontract Meta Object)と呼ばれ、一例と
しては、C++オブジェクトとして実装することができ
る。図示の実施形態では、複数のサブコントラクトメタ
オブジェクト212、214、216がサブコントラク
トレジストリ200に設けられている。第1サブコント
ラクトメタオブジェクト212は「1」のサブコントラ
クト識別子を持ち、従って、サブコントラクト1として
識別される。サブコントラクト1は、そのサービス品質
として次の特徴をリストに挙げる。すなわち、クリーン
シャットダウン、セキュリティ、永続性、およびサーバ
活性化である。このサービス品質の名前と値の対は、ク
リーンシャットダウンが実装されないこと、MD5を使
った認証プロトコルがセキュリティのために使用される
こと、永続性がオンにされること、およびサーバ活性化
が存在することを示す。列206において、サブコント
ラクト1は、その関連付けられたサブコントラクトクラ
イアント表現作成関数、すなわちClient Rep Create1へ
のロケーションインジケータを持っている。列208に
は、このサブコントラクトメタオブジェクトに関連付け
られた様々な他の関数への複数のロケーションインジケ
ータ、例えば、unmarshal関数やdestringify関数やバッ
ドサーバ識別子ハンドラ(badserver identifier handl
er)へのロケーションインジケータ、が含まれている。
【0047】名前と値の対の各々は、システムの特定の
特徴を示す名前と、特徴が存在するか否か、または特徴
のどの面を用いるべきかを示す、その名前に対する値
と、を含む。例えば、トランザクション特徴に関して
は、その値は、YESまたはNOであり、この特徴がオ
ン、オフのいずれであるかを示す。しかし、セキュリテ
ィ特徴に関しては、そのバリューは、MD5、Kerbero
s、SPKM等の使用すべき特定プロトコルが従う認証
のようなセキュリティの特定の面であっても良い。名前
フィールドは、文字列変数で表すことができ、また、値
フィールドは、文字列(string)または数とすることが
できる。従って、アプリケーション内の一つ以上のオブ
ジェクトとともに用いるために開発者によって選ばれた
特定のサービス品質は、開発者が利用しようとする特徴
を示している。これらの特徴は各オブジェクトに固有の
ものであっても良いので、参照されている特定オブジェ
クトへのオブジェクトロケーションインジケータを作成
する各サービス品質用の特定作成関数をもつことが必要
である。
【0048】2番目に図示したサブコントラクトメタオ
ブジェクト214は、サブコントラクト2用のサブコン
トラクトメタオブジェクトである。このサブコントラク
トに関するサービス品質リストは、クリーンシャットダ
ウンが実装されること、セキュリティのために、MD5
を用いた認証プロトコルが使用されること、永続性がオ
ンにされること、およびサーバ活性化が存在することを
示す。サブコントラクトメタオブジェクト216は、サ
ブコントラクト3のためにクリーンシャットダウンを許
容すること、セキュリティのためMD5を用いた認証プ
ロトコルが使用されること、永続性が存在すること、お
よびサーバ活性化もオンにされることを示す。
【0049】サブコントラクトレジストリ200は、通
常、レジストリを編成してそれにアクセスするために使
用される一群の関連関数を持っている。例えば、これら
の関連関数には、Add関数、Find関数、Get
First関数、およびGet Next関数が含まれ
ていても良い。Add関数は、サービスの新しい品質を
テーブルに加えるために使用される。本実施形態では、
Add関数は、サブコントラクト識別子とサブコントラ
クトメタオブジェクトとを引数と見做す。Find関数
は、サブコントラクト識別子を引数と見做し、その識別
子に関連付けられたサブコントラクトメタオブジェクト
を返却する。Get First及びGet Next関
数は、適切なメタオブジェクトを返却する。また、これ
らの関数は、テーブル全体を反復し、これにより特定の
サービス品質を完全に探索する。このサブコントラクト
レジストリは、次のように使用することができる。クラ
イアントが特定のサーバオブジェクトを呼び出したいと
きは、サブコントラクトレジストリを使ってそのサーバ
オブジェクトに関連付けられたサブコントラクト識別子
を検索した後、適切な特徴を用いて特定のサーバオブジ
ェクトに対するオブジェクトリファレンスを作成するた
め、適切なサブコントラクトクライアント表現作成関数
を呼び出すことができる。
【0050】システム内の各オブジェクトは、一つのイ
ンプリメンテーション定義(implementation definitio
n)に関連付けられている。オブジェクトに対するイン
プリメンテーション定義の各々は、インプリメンテーシ
ョンの名前、オブジェクトの作成にどのサブコントラク
トを用いるか、そのオブジェクトに対するインタフェー
ス識別子、一組のコールバック関数(call back functi
on)、スケルトン情報、などといった情報を含む。これ
らのコールバック関数は、一つのオブジェクト内に格納
することができる。インプリメンテーション定義のよう
な情報は、様々な方法で格納することができる。例え
ば、このような情報は、インプリメンテーションレジス
トリテーブルに格納することができる。
【0051】図3の下部には、本発明の一実施形態に係
るインプリメンテーションレジストリ250が示されて
いる。このインプリメンテーションレジストリは、様々
なインプリメンテーション定義に対応するエントリを持
っている。このテーブルを用いることで、オブジェクト
サーバの実装者(implementer)は、同じオブジェクト
サーバ内の単一のORBオブジェクトタイプの多数の異
なるインプリメンテーションを提供することができる。
すなわち、別個のインプリメンテーション識別子によっ
て識別される様々なインプリメンテーションを、一つの
オブジェクトタイプが持つことができる。各インプリメ
ンテーションは、すべてのオペレーションに関する動き
とそれがサポートするインタフェースの属性を定義す
る。すなわち、各インタフェースは、多くのインプリメ
ンテーションを持つことができる。従って、各インプリ
メンテーション識別子は、特定のサブコントラクトを用
いる一つのオブジェクトに対して一つの明確なインプリ
メンテーションを表す。そして、各インプリメンテーシ
ョンは、以下に説明するように、インプリメンテーショ
ンレジストリ内のサブコントラクトロケーションインジ
ケータを介して異なるサブコントラクトを用いることが
できる。この方式では、インプリメンテーションレジス
トリは、起動関数(invoking function)による特定の
インプリメンテーションの選択を可能にするという点で
優れている。このインプリメンテーションは、順次にサ
ブコントラクトレジストリの所望のサブコントラクトを
用いることができる。
【0052】各インプリメンテーション定義は、格納さ
れている種々のデータへのロケーションインジケータを
含むインプリメンテーションレジストリ内の一つのエン
トリを表している。インプリメンテーションレジストリ
250には、インプリメンテーションを指定するインプ
リメンテーション識別子列252、サブコントラクトメ
タオブジェクト列254、インタフェース識別子列25
6、レディフラグ(Ready Flag)用の列257、コールバ
ック関数列258、およびスケルトン情報列259が含
まれている。インプリメンテーション識別子は、インプ
リメンテーション定義が作成されるときに開発者によっ
て供給されるインプリメンテーションに対する名前であ
る。サブコントラクトメタオブジェクトは、特定のイン
プリメンテーション定義からサブコントラクトレジスト
リ200に含まれるサブコントラクトメタオブジェクト
へのロケーションインジケータである。インタフェース
識別子は、特定インタフェースのタイプの固定された世
界的固有名称である。レディフラグは、図8を参照しな
がら後述するようにしてインプリメンテーションが準備
されたときに、特定のインプリメンテーション定義に対
して設定される。レディフラグが設定されていないとき
は、図12及び図13、特に図13のステップ727を
参照して以下で説明するように、ディスパッチ関数(di
spatch function)はインプリメンテーションが準備完
了するまで一時的に待機しなければならない場合があ
る。スケルトン情報は、このインプリメンテーションに
関連付けられたスケルトンによって使用される情報と関
数を提供する。コールバック関数は、各インプリメンテ
ーションに関連付けられた一組の関数である。特定のイ
ンプリメンテーションに対して多様なコールバック関数
を関連付けることができる。例として、ルックアップ
(Lookup)、ポストインボーク(Post Invoke)、リボ
ーク(Revoke)、非活性化(Deactivate)、シャットダ
ウン(Shutdown)といったコールバック関数を説明す
る。
【0053】ルックアップ関数は、引数(argument)と
してユーザキーを取り、サーバントへロケーションイン
ジケータを返却する。このロケーションインジケータ
は、対応するオブジェクトが存在しない場合は、NULLで
あっても良い。オブジェクトが見つかれば、起動は継続
する。オブジェクトが見つからなければ、クライアント
へ例外が返却される。ユーザキーは、開発者によって供
給されるリファレンスデータであり、任意のデータとす
ることができる。ユーザキーは、図5を参照して以下で
説明するように、オブジェクトリファレンスの一部を形
成する。ポストインボーク関数は、引数としてユーザキ
ーを取り、値を返さない。このポストインボーク関数
は、オブジェクトの起動の後、開発者が実行を望む様々
なオペレーションを実行する。リボーク関数は、引数と
してユーザキーを取り、オブジェクトが参照されるのを
阻止する機能を果たす。非活性化関数は、引数としてユ
ーザキー及び非活性化クロージャー(deactivate closur
e)をとる。非活性化クロージャーは、オブジェクトが非
活性化関数の本体(body)によって非活性化された場合
にORBが何らかの内部クリーンアップを行うことがで
きるようにする手続きである。本質的に、非活性化関数
自体は、オブジェクトへのアクセスを不可能にする役割
をする。シャットダウン関数は、必要な場合に、すべて
のサーバントオブジェクトを除去することによって特定
のインプリメンテーション定義をシャットダウンするた
めに用いられる。一つのインプリメンテーション定義に
関連付けられたコールバック関数258の各組は、これ
らの関数を含む一つのオブジェクトに表現することがで
きる。
【0054】再度図3を参照すると、インプリメンテー
ションレジストリ250内にインプリメンテーション定
義262が示されている。この定義は、PRINTER INTERF
ACEというインタフェースのPRINTERインプリメンテーシ
ョン用であり、また、この定義は、サブコントラクトレ
ジストリのサブコントラクト1へのロケーションインジ
ケータ266を有している。これは、5個の固有のコー
ルバック関数と、1個の固有のスケルトンディスパッチ
関数(skeleton dispatch function)も有している。ま
た、MODEMインプリメンテーション用のインプリメンテ
ーション定義264も図示されている。このインプリメ
ンテーション定義は、対応するサブコントラクトへのロ
ケーションインジケータを有しており、MODEM INTERFAC
Eによって識別されるインタフェースを実装する。
【0055】レジストリを編成してレジストリにアクセ
スするために用いられる種々の関数が、このインプリメ
ンテーションレジストリ250に関連付けられている。
例えば、Add関数は、特定のインプリメンテーション
識別子を伴うインプリメンテーション定義をインプリメ
ンテーションレジストリに加えるために使用することが
できる。Find関数は、引数としてインプリメンテー
ション識別子をとることができ、対応するインプリメン
テーション定義を返却するためにレジストリ全体を探索
する。
【0056】図4は、符号300において、サブコント
ラクトレジストリ200及びインプリメンテーションレ
ジストリ250相互の対話の状況を示す。サブコントラ
クトレジストリ200は、212、214および216
等のサブコントラクトメタオブジェクトエントリを持つ
ことによって種々のサブコントラクトを登録する。これ
らのサブコントラクトメタオブジェクトの各々が、シス
テムの固有特徴セットを識別する。例えば、サブコント
ラクトメタオブジェクト1は、サブコントラクト1を識
別する。このサブコントラクト1は、セキュリティ30
2、永続性304、およびクリーンシャットダウン30
6といった特徴を識別する。同様に、サブコントラクト
2は、サーバ活性化308という特徴を識別する。サブ
コントラクト3は、クリーンシャットダウン306、サ
ーバ活性化308、およびトランザクション310とい
った特徴を識別する。
【0057】二つの間の対話は、次のように行われる。
インプリメンテーションレジストリ250は、 PRINTER
262およびMODEM264のような種々のインプリメン
テーション定義を識別する。これらのインプリメンテー
ション定義の各々は、例えばリンク266を介して、サ
ブコントラクトメタオブジェクトの一つのみを参照す
る。特定のサブコントラクトメタオブジェクトが一つ以
上のインプリメンテーション定義によって参照されるこ
とも可能である。例えば、PRINTER定義とMODEM定義の両
方が、サブコントラクトメタオブジェクト1を介してサ
ブコントラクト1を参照する。
【0058】図5は、符号150で上述のオブジェクト
リファレンスを示す。また、サブコントラクト識別子1
58は、オブジェクトがどのサブコントラクトを利用す
るかを識別するのみならず、図3の列202を通じてサ
ブコントラクトレジストリ内の特定のサブコントラクト
メタオブジェクトを識別する。インプリメンテーション
識別子162は、このオブジェクトに対するインプリメ
ンテーションの名称を識別するとともに、図3のインプ
リメンテーションレジストリの列252を通じてインプ
リメンテーション定義を示す。
【0059】図6は、サーバがリクエストをディスパッ
チするオブジェクトを作成するために必要な代表的ステ
ップを記述する手続き400を示す。インプリメンテー
ション定義を作成するステップ及びその準備を行うステ
ップは、通常、サーバプロセスの初期化の際に行われ
る。オブジェクトリファレンスはサーバ内で作成され、
ファクトリオブジェクト(factory object)と通常呼ば
れる他のオブジェクトへのリクエストに応答してクライ
アントに与えられる。ファクトリオブジェクトは、一般
によく知られたオブジェクトであって、通常、サーバが
組み込まれるか、さもなければ初期化するときに作成さ
れる。これらの周知のオブジェクトは、クライアントが
これらのオブジェクトを発見できるように、通常、ネー
ミングサービスを用いて登録される。このように、ステ
ップ406以下が呼び出されるのは、好ましくは二つの
場合である。すなわち、サーバ組み込み又は初期化の一
部としての場合、あるいはサーバ内で実装されるファク
トリオブジェクト上へのオペレーションの一部としての
場合である。インプリメンテーションレジストリの一列
を書き込むことによってインプリメンテーション定義が
作成され、この定義は、この後、起動によってアクセス
される。準備が完了すると、このインプリメンテーショ
ンは、そのオブジェクト上への起動を受け取る。インプ
リメンテーションがもはや起動を受け取ることができな
い場合は、図10を参照しながら後述するように、その
インプリメンテーションを非活性化することができ、あ
るいは図11を参照しながら後述するように、ORBが
シャットダウンを要求することができる。
【0060】図6の第1ステップ402において、イン
プリメンテーション定義作成関数(create implementat
ion definition function)が呼び出される。この関数
は、引数として、所望のサービス品質リスト、インプリ
メンテーションに対する名前、およびスケルトン情報を
とり、インプリメンテーション定義を返却する。このス
テップについては、図7を参照しながら以下でより詳細
に説明する。ステップ404において、インプリメンテ
ーション定義準備関数(prepare implementation defin
ition function)が呼び出される。この関数は、引数と
して、一つのインプリメンテーション定義と、当該イン
プリメンテーション定義に対する一組のコールバック関
数をとる。これらのコールバック関数を引数としてとる
のは、これらの関数をインプリメンテーション定義に組
み込むためである。これについては、図8を参照しなが
ら以下でより詳細に説明する。インプリメンテーション
の準備が完了すると、ステップ406において、オブジ
ェクトリファレンス作成関数(create object referenc
e function)が呼び出される。この関数は、引数として
インプリメンテーション定義とユーザキーをとり、オブ
ジェクトリファレンスを返却する。このオブジェクトリ
ファレンス作成関数は、サーバントへのオブジェクトリ
ファレンスを作成するが、このサーバントは、指定され
るサブコントラクト次第で、存在したりしなかったりす
る。このステップについては、図9を参照しながら、以
下でより詳細に説明する。
【0061】オブジェクトリファレンスの作成によって
オブジェクトが作成されると、このオブジェクトは使用
可能となる。この時点で、クライアントはサーバオブジ
ェクトを使用でき、他のプロセスを行うことができる。
このように、ステップ408は、二つの可能な状況が発
生するまでシステムがアプリケーションの処理を継続し
ている待機状態を示す。これらの状況は、ステップ41
0及びステップ414で説明されている。ステップ41
0は、この特定のインプリメンテーションに対して更に
起動が望まれる否かをチェックする。言い換えると、開
発者がもはやこのオブジェクトを使用しない場合、それ
はステップ412で除去される。そうでない場合、シス
テムは処理を継続し、このインプリメンテーションを用
いる。ステップ412において、インプリメンテーショ
ン非活性化関数(deactivate implementation functio
n)が呼び出される。この関数は、引数として一つのイ
ンプリメンテーション定義をとり、このインプリメンテ
ーションを除去する。このインプリメンテーション非活
性化関数については、図10を参照しながら以下でより
詳細に説明する。
【0062】ときには、オブジェクトリクエストブロー
カ(ORB)がサーバをシャットダウンしたい場合があ
るかも知れない。もしこのようなことがなければ、シス
テムは、ステップ408のように処理を継続する。しか
し、システムをシャットダウンすべき場合は、ステップ
416においてサーバシャットダウン(server shutdow
n)関数が呼び出される。このサーバシャットダウン関
数については、図11を参照しながら以下でより詳細に
説明する。
【0063】次に図7を参照して、図6のステップ40
2を実装するのに適したインプリメンテーション定義作
成関数を更に詳しく説明する。このインプリメンテーシ
ョン定義作成関数は、引数として、サービス品質リス
ト、インプリメンテーションに対する名前、およびイン
タフェース識別子をとる。ステップ452において、所
望のサービス品質リストを用いてサブコントラクトレジ
ストリ全体を探索し、存在するサブコントラクトメタオ
ブジェクトのサービス品質リストをマッチングする。こ
のステップは、上述のように、サブコントラクトレジス
トリ関数を用いてサブコントラクトレジストリ内の各エ
ントリを探索することによって実行することができる。
ステップ454では、インタフェース識別子と、インプ
リメンテーション識別子としてのインプリメンテーショ
ン名と、を用いてインプリメンテーションレジストリ内
に一つのエントリが作成される。ステップ456では、
この新エントリに対するサブコントラクトメタオブジェ
クトフィールドが、ステップ452で発見された識別済
みサブコントラクトメタオブジェクトを指示するように
更新される。次に、ステップ457では、このインプリ
メンテーション定義に対して固有のスケルトンディスパ
ッチ関数を含むすべてのスケルトン情報がこの新エント
リに格納される。このステップの後、この新しいインプ
リメンテーション定義は返却され、この関数は完了し、
コントロールが図6のステップ404に戻る。
【0064】次に図8を参照して、図6のステップ40
4を実装するのに適したインプリメンテーション定義準
備関数を更に詳しく説明する。この関数は、引数とし
て、インプリメンテーション定義と、一組の関連コール
バック関数をとる。ステップ484では、インプリメン
テーション定義を用いて、対応するインプリメンテーシ
ョン識別子を判別する。次にステップ486では、これ
らのコールバック関数が、発見されたインプリメンテー
ション識別子に対応するエントリでインプリメンテーシ
ョンレジストリに挿入される。ステップ488では、こ
のインプリメンテーションの準備が完了したことを示す
ため、インプリメンテーションレディフラグがYESに設
定される。ここではインプリメンテーションの準備が完
了しているので、ステップ490において、任意の待機
手続きは、そののブロックが解除され、このインプリメ
ンテーションを使用することができる。例えば、図13
の起動手続きのステップ727は、インプリメンテーシ
ョの準備が完了するまで待機しなければならない。この
ステップ490の後、この関数は完了し、コントロール
が図6のステップ406に戻る。
【0065】次に図9を参照して、図6のステップ40
6を実装するのに適したオブジェクトリファレンス作成
関数を更に詳しく説明する。この関数は、引数として、
インプリメンテーション定義とユーザキーをとる。この
関数は、下記のサブコントラクトクライアント表現作成
関数を用いることにより、最終的にオブジェクトリファ
レンスを作成して返却する。ステップ502では、イン
プリメンテーション定義を用いて、そのインプリメンテ
ーションレジストリ内の対応するエントリを参照し、サ
ブコントラクトレジストリ内の適当なサブコントラクト
メタオブジェクトを指示する対応サブコントラクトメタ
オブジェクトロケーションインジケータを作成する。ス
テップ504では、この発見されたサブコントラクトメ
タオブジェクトに対するテーブル内のエントリに対応す
るサブコントラクトクライアント表現作成関数が返却さ
れる。ステップ506では、このサブコントラクトクラ
イアント表現作成関数が、ユーザキーと受け取ったイン
プリメンテーション定義とを引数として用いて呼び出さ
れる。このクライアント表現作成関数は、受け取ったイ
ンプリメンテーション定義のインタフェース識別子及び
指定されたインプリメンテーション識別子に対応するサ
ーバント(存在しても良いし、まだ存在していなくても
良い)についてのオブジェクトリファレンスを作成す
る。このクライアント表現作成関数は、各サブコントラ
クトに固有であるので、このステップは、対応するサブ
コントラクトの適切な特徴を用いてオブジェクトリファ
レンスを返却する。ステップ508では、この作成され
たオブジェクトリファレンスが返却され、関数が完了し
て、コントロールが図6のステップ404に戻る。
【0066】次に図10を参照して、図6のステップ4
12を実装するのに適したインプリメンテーション非活
性化関数を更に詳しく説明する。この関数は、引数とし
てインプリメンテーション定義をとる。ステップ520
では、インプリメンテーション定義を用いて、対応する
インプリメンテーション識別子が作成される。ステップ
522では、このインプリメンテーション識別子に対応
するインプリメンテーションレジストリ内のエントリが
除去される。この除去により、インプリメンテーション
レジストリ内にインプリメンテーションがもはや存在し
ないので、インタフェースのこのインプリメンテーショ
ンの使用が効果的に阻止される。このステップの後、関
数は完了し、コントロールが図6の終了に戻る。
【0067】次に図11を参照して、図6のステップ4
16を実装するのに適したシャットダウン関数を更に詳
しく説明する。このシャットダウン関数は、ORB内の
オブジェクトのすべてのインプリメンテーションをシャ
ットダウンするのに用いられる。ステップ540は、イ
ンプリメンテーションレジストリ内のすべてのエントリ
をステップスルー(step through)するループ構造(loopi
ng structure)を導入する。まずインデックスJは、イ
ンプリメンテーションレジストリ内の第1エントリに等
しく設定される。このループを繰り返すごとに、このイ
ンデックスJはテーブル内の次のエントリに設定され
る。ステップ540も、最後のエントリが処理されたか
否かをチェックし、もし処理されていれば、この関数は
完了する。ステップ542では、エントリJにおける特
定のインプリメンテーション定義に対応するシャットダ
ウンコールバック関数が呼び出され、このインプリメン
テーションをシャットダウンする。すべてのインプリメ
ンテーションがシャットダウンされると、ORBは安全
に処理を中止することができる。このステップの後、関
数は完了し、コントロールが図6の終了に戻る。以上、
図6のオブジェクトリファレンス作成関数の実施形態の
説明が終わったので、次にディスパッチ関数を説明す
る。
【0068】図12、図13および図14は、オブジェ
クト起動を実行する手続きの一実施形態を示している。
この手続きは、本発明の目的の一つに従ってサブコント
ラクトを利用するために、インプリメンテーションとサ
ブコントラクトレジストリを利用する。オブジェクト起
動は、クライアントがオペレーションを起動するかサー
バオブジェクトの属性にアクセスし、ORBを介してサ
ーバオブジェクトに呼び出しが行われ、オペレーション
がサーバオブジェクト上に起動され、(必要ならば)結
果がクライアントに返却されるプロセスである。クライ
アント側のメカニズムがこのリクエストを処理し、この
リクエストをクライアントトランスポート層へ受け渡す
と、クライアントトランスポート層は、そのリクエスト
をサーバのトランスポート層へ送る。図12、図13お
よび図14は、トランスポート層がサーバオブジェクト
を起動するためにサブコントラクトの特定のディスパッ
チ関数をどのように呼び出すかを示している。各サブコ
ントラクトは、以下に説明するステップを実行する固有
のディスパッチ関数を持っている。この手続きは、適切
なルックアップ関数、及びそのインプリメンテーション
に適したスケルトンディスパッチ関数、を発見するため
にインプリメンテーションレジストリを用いめ。このサ
ブコントラクトレジストリは、必要な場合には、特定の
サブコントラクトに対応するバッドサーバ識別子ハンド
ラ関数(bad server identifier handler function)を
供給するためにも用いられる。
【0069】図12は、トランスポート層がサブコント
ラクト識別子を用いて特定のサブコントラクトに対する
ディスパッチ関数を呼び出すことによって開始する。オ
ブジェクトリファレンス上のクライアントの起動のた
め、このトランスポート層には、マーシャルバッファが
設けられている。このマーシャルバッファは、特に情
報、すなわちサーバオブジェクト用のオブジェクトキー
を含んでいる。このオブジェクトキーは、図5に示され
る情報を含んでいる。マーシャルバッファは、また、サ
ーバオブジェクト上に起動されるべきメソッドの名前と
必要な引数を含んでいる。図5に示されるようにオブジ
ェクトキー内にはサブコントラクト識別子が含まれてい
るので、このトランスポート層は、どのサブコントラク
トが適当かを決定し、また、どのディスパッチ関数を呼
び出すべきかを決定するため、このサブコントラクト識
別子を「ピーク(のぞき見、peek)」することができ
る。
【0070】ステップ702において、このサブコント
ラクト識別子は、マーシャルバッファ内のオブジェクト
リファレンスから抽出される。この抽出プロセスは、こ
の情報がマーシャルバッファから引き出され、もはやマ
ーシャルバッファ内には存在しないことを意味する。次
にステップ704では、適切なサブコントラクトが使用
中であることを確認するため、この抽出されたサブコン
トラクト識別子を現在使用中のサブコントラクトと比較
する。上記のように、オブジェクトの開発中、アプリケ
ーション開発者は、サブコントラクト識別子を用いて特
定のサブコントラクトを一つのオブジェクトに関連付け
る。
【0071】ステップ706では、サーバ識別子がマー
シャルバッファ内のオブジェクトリファレンスから抽出
される。本発明の主題であるサーバオブジェクトは、ホ
ストコンピュータ上の特定のサーバプロセス内に存在す
る。従って、このサーバ識別子が現行のサーバにマッチ
することを確認することが重要である。ステップ708
では、この抽出されたサーバ識別子を現行サーバの識別
子と比較して、オブジェクトリファレンスが適切なサー
バプロセスを参照しているかどうかを判定する。ステッ
プ710は、抽出されたサーバ識別子が有効であるかど
うか、及び現行サーバに確かにマッチしているかどう
か、を判定する。もしマッチしていない場合、サーバ識
別子は無効であり、適当なアクションをとる必要がある
ことが示される。このアクションは、バッドサーバ識別
子ハンドラ関数によって実行することができる。ステッ
プ712は、サブコントラクトメタオブジェクト内に適
当なバッドサーバ識別子ハンドラが登録されているかど
うかを判定する。サブコントラクト識別子が既に抽出さ
れているので、このステップは、図3のサブコントラク
トレジストリを用いて実行することができる。このサブ
コントラクト識別子は、このテーブルの特定の列へのキ
ーとして作用する。このサブコントラクト識別子は、バ
ッドサーバ識別子ハンドラが存在するかどうかを判定す
るために列208を探索することを可能にする。ハンド
ラが存在しない場合、システムはステップ716でこの
状況に関する例外を投げ(throw)、ディスパッチ関数
が終了する。しかし、ハンドラがサブコントラクトメタ
オブジェクト内に登録されていれば、ステップ714
で、このバッドサーバ識別子ハンドラが、サブコントラ
クト識別子及びマーシャルバッファを引数として呼び出
される。このステップの後、ディスパッチ関数は終了す
る。
【0072】ここでステップ710に戻り、抽出された
サーバ識別子が現行のサーバにマッチしない場合、コン
トロールはステップ718に移る。ステップ718で
は、インプリメンテーション識別子は、マーシャルバッ
ファ内のオブジェクトリファレンスから抽出される。ス
テップ720では、適当なインプリメンテーション定義
を発見するために、この抽出されたインプリメンテーシ
ョン識別子を図3のインプリメンテーションレジストリ
へのキーとして用いる。インプリメンテーションレジス
トリの使用は、図3を参照して既に説明した。このステ
ップ720は、図3のインプリメンテーションレジスト
リの列252全体を探索することによって実行すること
ができ、これによりテーブル内にインプリメンテーショ
ン識別子が存在するか否かを判定することができる。ス
テップ722において、インプリメンテーション定義が
ステップ724内に発見されないと判定された場合、こ
の状態に関する例外が投げられ、ディスパッチ関数が終
了する。しかし、インプリメンテーション定義が発見さ
れた場合、このオペレーションは、この定義を用いて継
続する。
【0073】しかしながら、たとえインプリメンテーシ
ョン定義が発見されても、それが必ずしも直ちに使用可
能とは限らない。図6のインプリメンテーション定義準
備ステップ404が既に実行されていれば、インプリメ
ンテーション定義はレディ、すなわち準備が完了してい
る。このステップが実行されると、レディフラグが設定
される。ステップ726は、このレディフラグが設定さ
れているかどうかをテストする。もし設定されていなけ
れば、ステップ727でディスパッチ関数は待機状態に
入り、ディスパッチ関数はインプリメンテーション定義
が準備完了になるのを待つ。このインプリメンテーショ
ン定義が準備完了になると、コントロールはステップ7
26から728へ移行する。ステップ728では、イン
プリメンテーション定義からのルックアップ関数が抽出
される。このルックアップ関数は、図3の列258のコ
ールバック関数の一つであり、サーバントへのローカル
ロケーションインジケータの作成に用いられる。ステッ
プ730では、ユーザキーがマーシャルバッファ内のオ
ブジェクトリファレンスから抽出される。次にステップ
732では、ユーザキーを引数としてルックアップ関数
が呼び出される。この関数が実行されると、この関数は
サーバントへのロケーションインジケータを返す。この
ロケーションインジケータは、サーバのローカル言語で
実行することができる。例えば、このロケーションイン
ジケータは、サーバントC++オブジェクトを参照する
C++オブジェクトポインタであってもよい。
【0074】ここでサーバントオブジェクトへのローカ
ルロケーションインジケータが得られたので、ディスパ
ッチ関数は、当初クライアントがリクエストしたサーバ
ントオブジェクト上に適切なメソッドを実行できる状態
にある。ステップ733では、メソッドデスクリプタ
(method descriptor)がマーシャルバッファから抽出
される。このメソッドデスクリプタは、クライアントが
起動を希望するサーバント上で定義される特定のメソッ
ド名の、クライアントの観点からの表現である。ステッ
プ734では、スケルトンディスパッチ関数がインプリ
メンテーション定義から抽出される。このスケルトンデ
ィスパッチ関数は、図3の列259内のインプリメンテ
ーションレジストリ内で発見することができる。ステッ
プ736では、このスケルトンディスパッチ関数は、サ
ーバントロケーションインジケータ、マーシャルバッフ
ァ、およびメソッドデスクリプタを引数として呼び出さ
れる。この関数については、図14を参照しながら以下
でより詳細に説明する。スケルトンディスパッチ関数
は、クライアントが実行をリクエストしたサーバント上
のメソッドの実行の結果を達成する。このオペレーショ
ンが行われると、クライアントによるサーバオブジェク
トの起動は終了する。しかし、更に別の関数を実行する
ことが可能である。ポストインボーク関数は、開発者が
希望する機能を達成する各インプリメンテーション用の
開発者定義関数である。ステップ738では、このポス
トインボーク関数が、インプリメンテーション定義から
抽出される。ステップ740では、このポストインボー
ク関数が、ユーザキーを引数として呼び出される。この
ポストインボーク関数は、開発者がオブジェクトの起動
の後に特定のアクションを実行するために用いることが
できる。例えば、ルックアップ/ポストインボークは、
ある特定のサーバ上でのアクティブ起動(active invoc
ation)の回数を数えることができる。これは、サーバ
ントオブジェクトのライフサイクルの管理に便利であ
る。
【0075】次に図14を参照して、図13のステップ
736の実装に適したスケルトンディスパッチ関数を更
に詳しく説明する。この関数は、まずステップ802か
ら始まる。このステップ802では、メソッドデスクリ
プタに基づいてアンマーシャリングメカニズムが選択さ
れる。アンマーシャリングメカニズムは、例えば、スイ
ッチ文(switch statement)によって選択されるコード
のシーケンスであっても良い。マーシャルバッファから
は既に他の情報が抽出されているので、この時点でマー
シャルバッファに残っている情報は、呼び出されるべき
メソッドの引数だけである。ステップ804では、選択
されたアンマーシャリングメカニズムを用いてマーシャ
ルバッファの残りを起動引数にアンマーシャリングす
る。ステップ806では、起動引数を用いてサーバ上で
定義されたメソッドをメソッドデスクリプタを用いるこ
とにより起動する。このステップは、当初クライアント
によってリクエストされたメソッドを実行する効果を持
つ。このメソッドが値をまったく返さずに他の関数を実
行する可能性と、このメソッドが一つの値をクライアン
トへ返す可能性とがある。ステップ808は、このメソ
ッドが返信(reply)を作成したか否かを判定する。も
し作成していなければ、この関数は完了する。作成され
ていれば、コントロールはステップ810へ移行する。
ステップ810では、メソッドデスクリプタに対応する
適当なマーシャリングメカニズムが選ばれる。ステップ
812では、選ばれたマーシャリングメカニズムを用い
て返信をマーシャルバッファにマーシャリングする。こ
の時点で、マーシャルバッファは、トランスポート層を
介してクライアントへ返される準備が完了している。こ
のステップの後、この関数は完了し、コントロールは図
13のステップ738へ戻る。
【0076】本発明は、上記のように、コンピュータシ
ステムに格納されたデータを必要とする様々なプロセス
ステップを使用する。これらのステップは、物理量の物
理的操作を必要とするステップである。通常、これらの
量は、格納、転送、合成、比較、その他の操作が可能な
電気的または磁気的信号の形を取る。但し、必ずしもこ
れに該当するわけではない。主として一般的慣行の理由
で、これらの信号をビット、バリュー、エレメント、変
数、キャラクタ、データ構造等と呼ぶと便利な場合があ
る。しかしながら、これらの用語や類似の用語は、すべ
て、適切な物理量に対応付けられるべきであり、また、
これらの量に付された単なる便利なラベルに過ぎない。
【0077】また、実行される操作は、識別、実行、ま
たは比較等の用語で呼ばれることが多い。本発明の一部
を形成する、本明細書に記載のオペレーションでは、こ
れらのオペレーションはマシンオペレーションである。
本発明のオペレーションを実行するために便利なマシン
には、汎用ディジタルコンピュータやその他類似の装置
が含まれる。いずれにしても、コンピュータを操作する
場合のオペレーションの方法と、計算自体の方法との相
違を忘れてはならない。本発明は、電気的またはその他
の物理的信号を処理して他の望ましい物理信号を発生さ
せる際にコンピュータを操作する方法ステップに関する
ものである。
【0078】本発明は、これらのオペレーションを実行
する装置にも関係する。この装置は、要求される目的の
ために特別に製造してもよいし、また、コンピュータに
格納されたコンピュータプログラムによって選択的に作
動又は再構成される汎用コンピュータでもよい。本明細
書で提示されるプロセスは、特定のコンピュータやその
他装置に固有の関係を持つものではない。具体的に述べ
ると、本明細書の開示内容に従って書かれたプログラム
は、様々な汎用マシンで使用することができるし、ま
た、必要な方法ステップを実行するためにより特化した
装置を製造する方が便利な場合もある。これらの種々の
マシンに必要な構造は、上記の説明から明らかであろ
う。
【0079】また、本発明は、様々なコンピュータ実装
オペレーションを実行するためのプログラム命令を含む
コンピュータ読取り可能媒体(メディア)にも関係す
る。媒体とプログラム命令は、本発明の目的のために特
別に設計、製造されたものでよいし、また、コンピュー
タソフトウェア技術の専門家に周知の利用可能な類のも
のでもよい。コンピュータ読取り可能媒体の例として
は、ハードディスク、フロッピーディスク、および磁気
テープ等の磁気メディア、CD−ROMディスク等の光
学メディア、オプティカルディスク等の磁気光学媒体、
およびプログラム命令を格納、実行するために特別に構
成されたハードウェア装置、例えばリードオンリーメモ
リ(ROM)やランダムアクセスメモリ(RAM)が挙
げられる。但し、これらに限定されるわけではない。プ
ログラム命令の例としては、コンパイラによって作成さ
れるようなマシンコード、及びインタプリタを使ってコ
ンピュータによって実行される、よりハイレベルのコー
ドを含んだファイル、の双方が挙げられる。
【0080】図15は、本発明の一実施形態に係る代表
的なコンピュータシステムを示している。このコンピュ
ータシステム100は、プロセッサ102(中央処理装
置、あるいはCPUとも呼ばれる)を含んでいる。この
プロセッサ102は、主記憶装置106(通常、ランダ
ムアクセスメモリ、すなわちRAM)及び主記憶装置1
04(通常、リードオンリーメモリ、すなわちROM)
を含む記憶装置に結合されている。この分野では周知の
ように、04は、データと命令をCPUに一方向的に転
送する働きがあり、主記憶装置106は、通常、データ
と命令を双方向的に転送するために使用される。これら
の主記憶装置の双方は、上述した任意の適切なコンピュ
ータ読取り可能媒体を含んでいても良い。大容量記憶装
置108も、CPU102に双方向的に結合されて、追
加のデータ記憶容量を提供する。大容量記憶装置108
は、プログラム、データ等を格納するために使用され、
通常、主記憶装置よりも遅いハードディスク等の二次記
憶媒体である。大容量記憶装置108内に保持される情
報は、適切な場合に、仮想メモリとしての主記憶装置1
06の一部として標準的な方式で組み込まれる。CD−
ROM114等の特定の大容量記憶装置も、データを一
方向的にCPUに受け渡すことができる。
【0081】CPU102は、インタフェース110に
も結合されている。このインタフェース110は、1個
以上の入出力装置を含んでいる。この入出力装置として
は、例えば、ビデオモニタ、トラックボール、マウス、
キーボード、マイクロホン、タッチセンシティブディス
プレイ、トランスデューサカードリーダ、磁気または紙
テープレコーダ、タブレット、スタイラス、音声又は手
書き認識装置、その他の周知の入力装置(当然のことで
あるが、例えば、別のコンピュータもこれに含まれる)
等を挙げることができる。但し、これらに限定されるわ
けではない。最後に、CPU102は、符号112で全
体的に示されるネットワークコネクションを使用して、
コンピュータや通信ネットワークに任意に連結すること
ができる。上記のネットワークコネクションにより、C
PUは上記の方法ステップを実行する中で、ネットワー
クから情報を受け取ったり、ネットワークに情報を出力
することが可能である。上記の装置や材料は、コンピュ
ータハードウェア及びソフトウェア技術の専門家には周
知のものであろう。
【0082】理解の容易のために本発明をある程度詳細
に説明してきたが、本発明は、特許請求の範囲の趣旨内
で一定の変化や変形が可能である。例えば、本発明は、
任意の適当な分散オブジェクト環境において実施するこ
とが可能である。また、サブコントラクトレジストリテ
ーブルとインプリメンテーションレジストリテーブルと
は、別の形に表現することができ、あるいは一つのデー
タ構造に結合することも可能である。どちらの場合も、
依然として本発明の目標を達成することができる。ま
た、オブジェクトリファレンス作成フローチャート及び
オブジェクト起動フローチャートは、上記低オーバヘッ
ドオブジェクトアダプタ内のサブコントラクトの概念を
用いる一組の関数を記述しているが、他の類似の関数が
上記のサブコントラクトレジストリテーブル及びインプ
リメンテーションレジストリテーブルの形を介してサブ
コントラクトを用いることも考えられる。従って、上記
実施形態は例示であって限定的なものではないと解釈す
べきであり、本発明は、本明細書の詳細な記載事項に限
定されず、特許請求の範囲及びその均等物によって定義
されるべきである。
【図面の簡単な説明】
【図1】オブジェクトリクエストブローカ(ORB)
部、オブジェクト開発ファイリィティ、並びにクライア
ントオブジェクトおよびサーバオブジェクトを有する本
発明の一実施形態に係る分散オブジェクトシステムを示
す図である。
【図2】図1の分散オブジェクトシステム内におけるク
ライアントオブジェクトからサーバオブジェクトへのリ
クエストの流れを示す図である。
【図3】エントリとして種々のサブコントラクトメタオ
ブジェクトを有する本発明の一実施形態に係るサブコン
トラクトレジストリテーブルを示すとともに、エントリ
として種々のインプリメンテーション定義を有する本発
明の一実施形態に係るインプリメンテーションレジスト
リテーブル示す図である。
【図4】図3のサブコントラクトレジストリとインプリ
メンテーションレジストリとの対話を図式的に示す図で
ある。
【図5】図1及び図2の分散オブジェクトシステム内で
の使用に適したオブジェクトリファレンスの形態を示す
図である。
【図6】本発明の一実施形態に係る分散オブジェクトシ
ステム内でのインプリメンテーション初期化と起動ディ
スパッチングのフローチャートである。
【図7】図6のインプリメンテーション定義作成ステッ
プを示す図である。
【図8】図6のインプリメンテーション定義準備ステッ
プを示す図である。
【図9】図6のオブジェクトリファレンス作成ステップ
を示す図である。
【図10】図6のインプリメンテーション非活性化ステ
ップを示す図である。
【図11】図6のシャットダウンステップを示す図であ
る。
【図12】特定のサブコントラクトを用いたサーバオブ
ジェクトのメソッド起動のフローチャートを示す図であ
る。
【図13】特定のサブコントラクトを用いたサーバオブ
ジェクトのメソッド起動のフローチャートを示す図であ
る。
【図14】図13のスケルトンディスパッチ関数ステッ
プを示す図である。
【図15】本発明の実装に適した代表的なコンピュータ
システムを示す図である。
【符号の説明】
10…分散オブジェクトシステム、11…オブジェクト
リクエストブローカ(ORB)、20…クライアント、
21…スタブ、22…サロゲート、24…メソッドテー
ブル、26…動的起動インタフェース、28…標準イン
プリメンテーションスイート、30…動的スケルトン、
32…静的スケルトン、34…ORBインタフェース、
36…サブコントラクト層、38…トランスポート層、
40…フィルタ。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 アラン スナイダー アメリカ合衆国, カリフォルニア州, パロ アルト, ブライアーウッド ウェ イ 4160 (72)発明者 スウィー ブーン リム アメリカ合衆国, カリフォルニア州, マウンテン ヴュー, スティアリン ロ ード 405, アパートメント 50 (72)発明者 クリスチャン ジェイ. コールセン アメリカ合衆国, カリフォルニア州, メンロ パーク, コールマン アヴェニ ュー 744, アパートメント エヌ

Claims (28)

    【特許請求の範囲】
  1. 【請求項1】 分散オブジェクトコンピューティングシ
    ステム内の分散サーバオブジェクトに対するオブジェク
    トリファレンスを作成するためにコンピュータによって
    実装される方法であって、前記分散オブジェクトコンピ
    ューティングシステムは、サーバオブジェクトのインプ
    リメンテーションを起動する特徴レジストリを利用して
    おり、前記分散オブジェクトコンピューティングシステ
    ムは、サーバオブジェクトのインプリメンテーションを
    起動するのに用いる複数の特徴を提供し、 サーバオブジェクトに対してオブジェクトリファレンス
    を作成することのリクエストを受け取るステップと、 前記特徴レジストリ内のサブコントラクトエントリを識
    別するステップであって、前記特徴レジストリは、複数
    のサブコントラクトエントリを含んでおり、これらの各
    エントリは、前記複数の特徴のうちの少なくとも一つを
    含む特徴セットに関連付けられており、前記サブコント
    ラクトエントリは、作成されるべきサーバオブジェクト
    に関連付けられているとともに前記サーバオブジェクト
    のインプリメンテーションの起動に利用されるべき少な
    くとも1個の特徴を有する特徴セットを識別するように
    構成されているステップと、 前記識別されたサブコントラクトエントリに関連付けら
    れた作成関数(createfunction)を識別するステップで
    あって、この作成関数は、前記識別されたサブコントラ
    クトエントリによって識別された特徴セットを用いてサ
    ーバオブジェクトを作成する役割を果たし、 前記作成関数を起動して、前記サーバオブジェクトに対
    するオブジェクトリファレンスを作成するステップと、 この作成されたオブジェクトリファレンスを返すステッ
    プと、を備える方法。
  2. 【請求項2】 各特徴セットは、特徴名と値の対を少な
    くとも一つ含み、特徴名と値の対の各々は、 前記複数の特徴のうちの関連付けられた1個を識別する
    特徴名と、 この関連付けられた特徴を更に修飾する値と、を含んで
    いる、請求項1記載の方法。
  3. 【請求項3】 前記識別された作成関数を起動するステ
    ップは、ユーザ識別キーの前記作成関数への受け渡しを
    含んでいる、請求項1または2記載の方法。
  4. 【請求項4】 前記分散オブジェクトコンピューティン
    グシステムは、インプリメンテーションレジストリを更
    に利用し、前記インプリメンテーションレジストリは、
    複数のインプリメンテーション定義を含み、各インプリ
    メンテーション定義は、インプリメンテーション識別子
    と、前記特徴レジストリ内の固有サブコントラクトエン
    トリを示すサブコントラクトロケーションインジケータ
    と、を含んでおり、 作成されるべきサーバオブジェクトのインプリメンテー
    ションに対するインプリメンテーション定義を作成する
    ステップを更に備える請求項1〜3のいずれかに記載の
    方法。
  5. 【請求項5】 分散オブジェクトコンピューティングシ
    ステム内の分散サーバオブジェクト上で定義されたオブ
    ジェクトメソッドを起動するためにコンピュータによっ
    て実装される方法であって、前記分散オブジェクトコン
    ピューティングシステムは、複数のインプリメンテーシ
    ョン定義を含むインプリメンテーションレジストリを利
    用しており、各インプリメンテーション定義は、前記分
    散オブジェクトコンピューティングシステム内のインタ
    フェースに対するインプリメンテーションを定義してお
    り、各インプリメンテーション定義は、インプリメンテ
    ーション識別子及び関連関数を有しており、 前記サーバオブジェクトへのオブジェクトリファレンス
    を含むマーシャルバッファを受け取るステップと、 前記マーシャルバッファ内のオブジェクトリファレンス
    からインプリメンテーション識別子を抽出するステップ
    と、 前記抽出されたインプリメンテーション識別子をキーと
    して用いてインプリメンテーションレジストリ内のイン
    プリメンテーション定義を判別するステップと、 このインプリメンテーション定義のルックアップ関数を
    呼び出して、前記サーバオブジェクトへのロケーション
    インジケータを作成するステップと、 前記インプリメンテーション定義のスケルトンディスパ
    ッチ関数を呼び出して、前記サーバオブジェクト上で定
    義された前記オブジェクトメソッドを起動するステップ
    と、を備える方法。
  6. 【請求項6】 前記マーシャルバッファ内の前記オブジ
    ェクトリファレンスからサブコントラクト識別子を抽出
    するステップと、 この抽出されたサブコントラクト識別子が現在のサブコ
    ントラクトにマッチすることを確認するステップと、を
    更に備える請求項5に記載の方法。
  7. 【請求項7】 前記マーシャルバッファ内の前記オブジ
    ェクトリファレンスからサーバ識別子を抽出するステッ
    プと、 この抽出されたサーバ識別子が現在のサーバにマッチす
    るかどうかを判定するステップと、を更に備え、 前記抽出されたサーバ識別子が現在のサーバにマッチし
    ないと判定された場合に、サブコントラクトレジストリ
    内で識別されるバッドサーバ識別子ハンドラ関数を呼び
    出すステップを更に備える請求項5または6記載の方
    法。
  8. 【請求項8】 ルックアップ関数を呼び出す前記ステッ
    プは、 前記判定されたインプリメンテーション定義から前記ル
    ックアップ関数を抽出するサブステップと、 前記マーシャルバッファ内の前記オブジェクトリファレ
    ンスからユーザキーを抽出するサブステップと、を含ん
    でいる請求項5〜7のいずれかに記載の方法。
  9. 【請求項9】 スケルトンディスパッチ関数を呼び出す
    前記ステップは、 前記判定されたインプリメンテーション定義から前記ス
    ケルトンディスパッチ関数を抽出するサブステップと、 前記マーシャルバッファ内の前記オブジェクトリファレ
    ンスからメソッドデスクリプタを抽出するサブステップ
    と、を含んでいる請求項5〜8のいずれかに記載の方
    法。
  10. 【請求項10】 コンピュータ読み取り可能媒体内に形
    成された特徴レジストリデータ構造であって、前記特徴
    レジストリは、分散オブジェクトコンピューティングシ
    ステム内でサーバオブジェクトのインプリメンテーショ
    ンを起動するために用いられ、前記分散オブジェクトコ
    ンピューティングシステムは、サーバオブジェクトのイ
    ンプリメンテーションで用いるための複数の特徴を提供
    し、前記特徴レジストリは、複数のサブコントラクトエ
    ントリを含んでおり、各サブコントラクトエントリは、 関連サーバオブジェクトのインプリメンテーションを指
    定するインプリメンテーション識別子と、 前記関連サーバオブジェクトに対するオペレーションを
    定義する前記関連サーバオブジェクトのインタフェース
    を指定するインタフェース識別子と、 前記分散オブジェクトコンピューティングシステムによ
    って提供される前記複数の特徴のうちの1個を識別する
    少なくとも一つの特徴識別子と、 前記特徴識別子にとって適切なコンテキスト内で前記特
    徴識別子により識別された前記特徴を利用することによ
    り、前記関連サーバオブジェクトに対するオブジェクト
    リファレンスを作成する作成関数(create function)
    と、を備えている、特徴レジストリデータ構造。
  11. 【請求項11】 各特徴識別子は、特徴名と値の対を含
    んでおり、特徴名と値の対の各々は、 前記複数の特徴のうちの関連付けられた1個を識別する
    特徴名と、 この関連付けられた特徴を更に修飾する値と、を含んで
    いる、請求項10記載の特徴レジストリデータ構造。
  12. 【請求項12】 コンピュータ読取り可能媒体内に形成
    されたサブコントラクトレジストリデータ構造であっ
    て、前記サブコントラクトレジストリは、分散オブジェ
    クトコンピューティングシステム内でサーバオブジェク
    トに対するオブジェクトリファレンスを作成するために
    用いられ、前記分散オブジェクトコンピューティングシ
    ステムは、サーバオブジェクトに対するオブジェクトリ
    ファレンスの作成に用いるための複数の特徴を提供し、
    前記サブコントラクトレジストリは、複数のサブコント
    ラクトオブジェクトを含んでおり、各サブコントラクト
    オブジェクトは、 対応する前記サブコントラクトオブジェクトを識別する
    サブコントラクト識別子と、 前記分散オブジェクトコンピューティングシステムによ
    って提供される前記複数の特徴のうちの1個を識別する
    少なくとも一つの特徴識別子と、 各サブコントラクトオブジェクトに一意に関連付けられ
    た作成関数(create function)であって、各サブコン
    トラクトオブジェクトに関連付けられた前記特徴識別子
    により識別された前記特徴を用いてサーバオブジェクト
    に対するオブジェクトリファレンスを作成して返すため
    に用いられる作成関数と、を備えている、サブコントラ
    クトレジストリデータ構造。
  13. 【請求項13】 各サブコントラクトオブジェクトの各
    特徴識別子が特徴名と値の対であり、特徴名と値の対の
    各々は、 前記複数の特徴のうちの関連付けられた1個を識別する
    特徴名と、 この関連付けられた特徴を更に修飾する値と、を含んで
    いる、請求項12記載のサブコントラクトレジストリデ
    ータ構造。
  14. 【請求項14】 各サブコントラクトオブジェクトは、
    特定のオブジェクトリファレンスのサーバ識別子がサー
    バプロセスにマッチしないと判定された場合に用いられ
    るバッドサーバ識別ハンドラ関数を更に備えている、請
    求項12または13記載のサブコントラクトレジストリ
    データ構造。
  15. 【請求項15】 コンピュータ読取り可能媒体内に形成
    されたインプリメンテーションレジストリデータ構造で
    あって、 前記インプリメンテーションレジストリは、複数のイン
    プリメンテーション定義を登録するために用いられ、各
    インプリメンテーション定義は、分散オブジェクトコン
    ピューティングシステム内のインタフェースに対するイ
    ンプリメンテーションを定義しており、前記分散オブジ
    ェクトコンピューティングシステムは、複数のサブコン
    トラクトオブジェクトを提供し、各インプリメンテーシ
    ョン定義は、 対応するインプリメンテーション定義を識別するインプ
    リメンテーション識別子と、 前記インプリメンテーション定義に関連付けられたサブ
    コントラクトオブジェクトへのロケーションインジケー
    タと、 前記インプリメンテーション定義に関連付けられたイン
    タフェースを識別するインタフェース識別子と、 前記インプリメンテーション定義を用いるサーバオブジ
    ェクトを作成して起動するために用いられるインプリメ
    ンテーション定義に関連付けられた一組の関数と、を備
    えている、インプリメンテーションレジストリデータ構
    造。
  16. 【請求項16】 前記インプリメンテーション定義に関
    連付けられた前記一組の関数は、リクエストされたメソ
    ッドをサーバオブジェクト上に起動するために用いられ
    るスケルトンディスパッチ関数を含んでいる、請求項1
    5記載のインプリメンテーションレジストリデータ構
    造。
  17. 【請求項17】 分散オブジェクトコンピューティング
    システム内でサーバオブジェクトのインプリメンテーシ
    ョンを起動する際に用いられるコンピュータ装置であっ
    て、 処理装置(processing unit)と、 前記処理装置に結合された入出力装置と、 前記処理装置と通信を行う記憶装置と、を備え、前記記
    憶装置は、前記分散オブジェクトコンピューティングシ
    ステム内でサーバオブジェクトのインプリメンテーショ
    ンを起動するために用いられる特徴レジストリデータ構
    造を含んでおり、 前記分散オブジェクトコンピューティングシステムは、
    サーバオブジェクトのインプリメンテーションに用いる
    複数の特徴を提供し、前記特徴レジストリは、複数のサ
    ブコントラクトエントリを含んでおり、各サブコントラ
    クトエントリは、 関連サーバオブジェクトのインプリメンテーションを指
    定するインプリメンテーション識別子と、 前記関連サーバオブジェクトに対するオペレーションを
    定義する前記関連サーバオブジェクトのインタフェース
    を指定するインタフェース識別子と、 前記分散オブジェクトコンピューティングシステムによ
    って提供される前記複数の特徴のうちの1個を識別する
    少なくとも一つの特徴識別子と、 前記特徴識別子にとって適切なコンテキスト内で前記特
    徴識別子により識別された前記特徴を利用することによ
    り、前記関連サーバオブジェクトに対するオブジェクト
    リファレンスを作成する作成関数(create function)
    と、を含んでいるコンピュータ装置。
  18. 【請求項18】 分散オブジェクトコンピューティング
    システム内の分散サーバオブジェクトに対するオブジェ
    クトリファレンスを作成するコンピュータ読取り可能コ
    ードを有するコンピュータ使用可能媒体を備えたコンピ
    ュータプログラム製品であって、前記分散オブジェクト
    コンピューティングシステムは、サーバオブジェクトの
    インプリメンテーションを起動する特徴レジストリを利
    用しており、前記分散オブジェクトコンピューティング
    システムは、サーバオブジェクトのインプリメンテーシ
    ョン起動するのに用いる複数の特徴を提供し、 サーバオブジェクトに対してオブジェクトリファレンス
    を作成することのリクエストを受け取るステップと、 前記特徴レジストリ内のサブコントラクトエントリを識
    別するステップであって、前記特徴レジストリは、複数
    のサブコントラクトエントリを含んでおり、これらの各
    エントリは、前記複数の特徴のうちの少なくとも一つを
    含む特徴セットに関連付けられており、前記サブコント
    ラクトエントリは、作成されるべきサーバオブジェクト
    に関連付けられているとともに、前記サーバオブジェク
    トのインプリメンテーションの起動に利用されるべき少
    なくとも1個の特徴を有する特徴セットを識別するよう
    に構成されているステップと、 前記識別されたサブコントラクトエントリに関連付けら
    れた作成関数(createfunction)を識別するステップで
    あって、この作成関数は、前記識別されたサブコントラ
    クトエントリによって識別された特徴セットを用いてサ
    ーバオブジェクトを作成する役割を果たし、 前記作成関数を起動して、前記サーバオブジェクトに対
    するオブジェクトリファレンスを作成するステップと、 この作成されたオブジェクトリファレンスを返すステッ
    プと、を前記コンピュータシステム内で行わせるコンピ
    ュータ読取り可能プログラムコードを備えているコンピ
    ュータプログラム製品。
  19. 【請求項19】 各特徴セットは、特徴名と値の対を少
    なくとも一つ含み、特徴名と値の対の各々は、 前記複数の特徴のうちの関連付けられた1個を識別する
    特徴名と、 この関連付けられた特徴を更に修飾する値と、を含んで
    いる、請求項18記載のコンピュータプログラム製品。
  20. 【請求項20】 前記識別された作成関数を起動するス
    テップは、ユーザ識別キーの前記作成関数への受け渡し
    を含んでいる、請求項18または19記載のコンピュー
    タプログラム製品。
  21. 【請求項21】 前記分散オブジェクトコンピューティ
    ングシステムは、インプリメンテーションレジストリを
    更に利用し、前記インプリメンテーションレジストリ
    は、複数のインプリメンテーション定義を含み、各イン
    プリメンテーション定義は、インプリメンテーション識
    別子と、前記特徴レジストリ内の固有サブコントラクト
    エントリを示すサブコントラクトロケーションインジケ
    ータと、を含んでおり、 作成されるべきサーバオブジェクトのインプリメンテー
    ションに対するインプリメンテーション定義を作成する
    プログラムコードを更に備える請求項18〜20のいず
    れかに記載のコンピュータプログラム製品。
  22. 【請求項22】 分散オブジェクトコンピューティング
    システム内の分散サーバオブジェクト上で定義されたオ
    ブジェクトメソッドを起動するコンピュータ読取り可能
    コードを有するコンピュータ使用可能媒体を備えたコン
    ピュータプログラム製品であって、前記分散オブジェク
    トコンピューティングシステムは、複数のインプリメン
    テーション定義を含むインプリメンテーションレジスト
    リを利用しており、各インプリメンテーション定義は、
    前記分散オブジェクトコンピューティングシステム内の
    インタフェースに対するインプリメンテーションを定義
    しており、各インプリメンテーション定義は、インプリ
    メンテーション識別子及び関連関数を有しており、 前記サーバオブジェクトへのオブジェクトリファレンス
    を含むマーシャルバッファを受け取るステップと、 前記マーシャルバッファ内のオブジェクトリファレンス
    からインプリメンテーション識別子を抽出するステップ
    と、 前記抽出されたインプリメンテーション識別子をキーと
    して用いてインプリメンテーションレジストリ内のイン
    プリメンテーション定義を判別するステップと、 このインプリメンテーション定義のルックアップ関数を
    呼び出して、前記サーバオブジェクトへのロケーション
    インジケータを作成するステップと、 前記インプリメンテーション定義のスケルトンディスパ
    ッチ関数を呼び出して、前記サーバオブジェクト上で定
    義された前記オブジェクトメソッドを起動するステップ
    と、を前記コンピュータシステム内で行わせるコンピュ
    ータ読取り可能プログラムコードを備えているコンピュ
    ータプログラム製品。
  23. 【請求項23】 前記マーシャルバッファ内の前記オブ
    ジェクトリファレンスからサブコントラクト識別子を抽
    出するステップと、 この抽出されたサブコントラクト識別子が現在のサブコ
    ントラクトにマッチすることを確認するステップと、を
    行わせるプログラムコードを更に備える請求項22記載
    のコンピュータプログラム製品。
  24. 【請求項24】 前記マーシャルバッファ内の前記オブ
    ジェクトリファレンスからサーバ識別子を抽出するステ
    ップと、 この抽出されたサーバ識別子が現在のサーバにマッチす
    るがどうかを判定するステップと、を行わせるプログラ
    ムコードを更に備え、 前記抽出されたサーバ識別子が現在のサーバにマッチし
    ないと判定された場合に、サブコントラクトレジストリ
    内で識別されるバッドサーバ識別子ハンドラ関数を呼び
    出すステップを行わせるプログラムコードを更に備える
    請求項22または23記載のコンピュータプログラム製
    品。
  25. 【請求項25】 ルックアップ関数を呼び出す前記ステ
    ップは、 前記判定されたインプリメンテーション定義から前記ル
    ックアップ関数を抽出するサブステップと、 前記マーシャルバッファ内の前記オブジェクトリファレ
    ンスからユーザキーを抽出するサブステップと、を含ん
    でいる、請求項22〜24のいずれかに記載のコンピュ
    ータプログラム製品。
  26. 【請求項26】 スケルトンディスパッチ関数を呼び出
    す前記ステップは、前記判定されたインプリメンテーシ
    ョン定義から前記スケルトンディスパッチ関数を抽出す
    るサブステップと、 前記マーシャルバッファ内の前記オブジェクトリファレ
    ンスからメソッドデスクリプタを抽出するサブステップ
    と、を含んでいる、請求項22〜25のいずれかに記載
    のコンピュータプログラム製品。
  27. 【請求項27】 請求項18〜21のいずれかに記載の
    コンピュータ読取り可能プログラムコードを伝送するた
    めにコンピュータにより実装される方法であって、 前記プログラムコードを、コンピュータ使用可能媒体上
    に格納するステップと、 前記プログラムコードの伝送に対するリクエストを受け
    取るステップと、 前記プログラムコードをネットワークを介してネットワ
    ーク上のリモートロケーションに伝送するステップと、
    を備える方法。
  28. 【請求項28】 請求項22〜26のいずれかに記載の
    コンピュータ読取り可能プログラムコードを伝送するた
    めにコンピュータにより実装される方法であって、 前記プログラムコードを、コンピュータ使用可能媒体上
    に格納するステップと、 前記プログラムコードの伝送に対するリクエストを受け
    取るステップと、 前記プログラムコードをネットワークを介してネットワ
    ーク上のリモートロケーションに伝送するステップと、
    を備える方法。
JP9170752A 1996-06-26 1997-06-26 低オーバヘッドオブジェクトアダプタ Pending JPH10133876A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/669782 1996-06-26
US08/669,782 US5991823A (en) 1996-06-26 1996-06-26 Low overhead object adaptor

Publications (1)

Publication Number Publication Date
JPH10133876A true JPH10133876A (ja) 1998-05-22

Family

ID=24687715

Family Applications (1)

Application Number Title Priority Date Filing Date
JP9170752A Pending JPH10133876A (ja) 1996-06-26 1997-06-26 低オーバヘッドオブジェクトアダプタ

Country Status (3)

Country Link
US (1) US5991823A (ja)
EP (1) EP0817025A3 (ja)
JP (1) JPH10133876A (ja)

Families Citing this family (64)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6782538B1 (en) * 1995-12-14 2004-08-24 International Business Machines Corporation Object oriented information handling system including an extensible instance manager
US6438614B2 (en) 1998-02-26 2002-08-20 Sun Microsystems, Inc. Polymorphic token based control
US6466947B2 (en) 1998-03-20 2002-10-15 Sun Microsystems, Inc. Apparatus and method for dynamically verifying information in a distributed system
US6832223B1 (en) 1996-04-23 2004-12-14 Sun Microsystems, Inc. Method and system for facilitating access to a lookup service
US6938263B2 (en) 1996-04-23 2005-08-30 Sun Microsystems, Inc. System and method for facilitating dynamic loading of “stub” information to enable a program operating in one address space to invoke processing of a remote method or procedure in another address space
US6282652B1 (en) 1998-02-26 2001-08-28 Sun Microsystems, Inc. System for separately designating security requirements for methods invoked on a computer
US6560656B1 (en) 1998-02-26 2003-05-06 Sun Microsystems, Inc. Apparatus and method for providing downloadable code for use in communicating with a device in a distributed system
US6226746B1 (en) 1998-03-20 2001-05-01 Sun Microsystems, Inc. Stack-based system and method to combine security requirements of methods
US6138238A (en) 1997-12-11 2000-10-24 Sun Microsystems, Inc. Stack-based access control using code and executor identifiers
US6421704B1 (en) 1998-03-20 2002-07-16 Sun Microsystems, Inc. Method, apparatus, and product for leasing of group membership in a distributed system
US6247026B1 (en) 1996-10-11 2001-06-12 Sun Microsystems, Inc. Method, apparatus, and product for leasing of delegation certificates in a distributed system
US6578044B1 (en) 1997-11-17 2003-06-10 Sun Microsystems, Inc. Method and system for typesafe attribute matching
US6446070B1 (en) 1998-02-26 2002-09-03 Sun Microsystems, Inc. Method and apparatus for dynamic distributed computing over a network
US6393497B1 (en) 1998-03-20 2002-05-21 Sun Microsystems, Inc. Downloadable smart proxies for performing processing associated with a remote procedure call in a distributed system
US6598094B1 (en) 1998-03-20 2003-07-22 Sun Microsystems, Inc. Method and apparatus for determining status of remote objects in a distributed system
US6185611B1 (en) 1998-03-20 2001-02-06 Sun Microsystem, Inc. Dynamic lookup service in a distributed system
US6463446B1 (en) 1998-02-26 2002-10-08 Sun Microsystems, Inc. Method and apparatus for transporting behavior in an event-based distributed system
US6487607B1 (en) 1998-02-26 2002-11-26 Sun Microsystems, Inc. Methods and apparatus for remote method invocation
US5949998A (en) * 1996-07-03 1999-09-07 Sun Microsystems, Inc. Filtering an object interface definition to determine services needed and provided
US6728737B2 (en) 1996-10-11 2004-04-27 Sun Microsystems, Inc. Method and system for leasing storage
US5832529A (en) 1996-10-11 1998-11-03 Sun Microsystems, Inc. Methods, apparatus, and product for distributed garbage collection
US6237009B1 (en) 1996-10-11 2001-05-22 Sun Microsystems, Inc. Lease renewal service
US6687761B1 (en) * 1997-02-20 2004-02-03 Invensys Systems, Inc. Process control methods and apparatus with distributed object management
US7203769B2 (en) * 1997-03-14 2007-04-10 International Business Machines Corporation Bootstrapping technique for distributed object client systems
US6158044A (en) * 1997-05-21 2000-12-05 Epropose, Inc. Proposal based architecture system
US6629153B1 (en) * 1997-09-17 2003-09-30 Trilogy Development Group, Inc. Method and apparatus for providing peer ownership of shared objects
JP3449684B2 (ja) * 1997-12-11 2003-09-22 富士通株式会社 ソフトウェア設定装置及びソフトウェア設定方法及び当該方法を実現するプログラムを記録した記録媒体
US6438616B1 (en) 1997-12-18 2002-08-20 Sun Microsystems, Inc. Method and apparatus for fast, local corba object references
US6516354B2 (en) 1997-12-18 2003-02-04 Sun Microsystems, Inc. Method and apparatus for efficient representation of variable length identifiers in a distributed object system
US6405264B1 (en) 1997-12-18 2002-06-11 Sun Microsystems, Inc. Marshaling and unmarshaling framework for supporting filters in a distributed object system
US6510460B1 (en) 1997-12-18 2003-01-21 Sun Microsystems, Inc. Method and apparatus for enforcing locking invariants in multi-threaded systems
US6249803B1 (en) * 1997-12-18 2001-06-19 Sun Microsystems, Inc. Method and apparatus for executing code during method invocation
US6167565A (en) * 1998-01-08 2000-12-26 Microsoft Corporation Method and system of custom marshaling of inter-language parameters
US6604127B2 (en) 1998-03-20 2003-08-05 Brian T. Murphy Dynamic lookup service in distributed system
EP1058884A1 (en) * 1998-02-26 2000-12-13 Sun Microsystems, Inc. Method and system for facilitating access to a lookup service
CN1298514A (zh) 1998-02-26 2001-06-06 太阳微系统公司 确定性散列识别远程方法的方法和系统
US6629126B1 (en) * 1998-03-13 2003-09-30 Genuity Inc. Framework for providing quality of service requirements in a distributed object-oriented computer system
US6154747A (en) * 1998-08-26 2000-11-28 Hunt; Rolf G. Hash table implementation of an object repository
US6857123B1 (en) * 1998-12-18 2005-02-15 International Business Machines Corporation Method and apparatus for a Meta Data Service in a data processing system
US7039673B1 (en) * 1998-12-24 2006-05-02 Computer Associates Think, Inc. Method and apparatus for dynamic command extensibility in an intelligent agent
US6907609B1 (en) * 1999-02-01 2005-06-14 Iona Technologies Plc. Object request dispatch using matching of a segmented object key
JP4146983B2 (ja) * 1999-02-26 2008-09-10 インターナショナル・ビジネス・マシーンズ・コーポレーション サーバ・オブジェクトのメソッドを呼び出すプロセス方法及びデータ処理システム
US6526412B1 (en) * 1999-04-22 2003-02-25 International Business Machines Corporation Use of adapter key to increase performance when updating a value referenced by a data access object
US6792605B1 (en) * 1999-06-10 2004-09-14 Bow Street Software, Inc. Method and apparatus for providing web based services using an XML Runtime model to store state session data
US6581094B1 (en) * 1999-11-02 2003-06-17 Sun Microsystems, Inc. Apparatus and method for identifying a digital device based on the device's uniform device descriptor file that specifies the attributes of the device in a XML document in a networked environment
US6862594B1 (en) 2000-05-09 2005-03-01 Sun Microsystems, Inc. Method and apparatus to discover services using flexible search criteria
US8082491B1 (en) 2000-05-09 2011-12-20 Oracle America, Inc. Dynamic displays in a distributed computing environment
US7577834B1 (en) * 2000-05-09 2009-08-18 Sun Microsystems, Inc. Message authentication using message gates in a distributed computing environment
US6934755B1 (en) 2000-06-02 2005-08-23 Sun Microsystems, Inc. System and method for migrating processes on a network
US7543304B2 (en) * 2000-12-14 2009-06-02 Borland Software Corporation Method for efficient location of corba objects based on an unmarshaled object key in a request
US7051333B1 (en) * 2001-07-24 2006-05-23 The Mathworks, Inc. System and method for extending a programming language to include multiple dissimilar object systems
US7756969B1 (en) 2001-09-07 2010-07-13 Oracle America, Inc. Dynamic provisioning of identification services in a distributed system
US7660887B2 (en) 2001-09-07 2010-02-09 Sun Microsystems, Inc. Systems and methods for providing dynamic quality of service for a distributed system
US20030133554A1 (en) * 2002-01-11 2003-07-17 Nokia Corporation System and method for facilitating access to network based services
US20030192038A1 (en) * 2002-04-09 2003-10-09 Thomas Hagmann Linking data objects to a project development system
US7353521B1 (en) * 2002-10-19 2008-04-01 Borland Software Corporation Object oriented distributed software system with methodology for piggybacked reflective callbacks
US7792874B1 (en) 2004-01-30 2010-09-07 Oracle America, Inc. Dynamic provisioning for filtering and consolidating events
US8239877B2 (en) * 2007-08-28 2012-08-07 International Business Machines Corporation Pre-population of meta data cache for resolution of data marshaling issues
US8595103B1 (en) 2008-09-30 2013-11-26 Accenture Global Services Limited Deployment and release component system
US8332870B2 (en) * 2008-09-30 2012-12-11 Accenture Global Services Limited Adapter services
US8719119B1 (en) 2008-09-30 2014-05-06 Accenture Global Services Limited Post deployment query system
US8788295B1 (en) 2008-09-30 2014-07-22 Accenture Global Services Limited Reusable product system
US20110302217A1 (en) * 2010-06-08 2011-12-08 Robert Heidasch Semantic user interface data assembling
US9063673B2 (en) * 2011-08-30 2015-06-23 Uniquesoft, Llc System and method for implementing application code from application requirements

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5307490A (en) * 1992-08-28 1994-04-26 Tandem Computers, Inc. Method and system for implementing remote procedure calls in a distributed computer system
US5566302A (en) * 1992-12-21 1996-10-15 Sun Microsystems, Inc. Method for executing operation call from client application using shared memory region and establishing shared memory region when the shared memory region does not exist
EP0604010B1 (en) * 1992-12-21 1999-12-29 Sun Microsystems, Inc. Method and apparatus for subcontracts in distributed processing systems
US5724503A (en) * 1995-03-31 1998-03-03 Sun Microsystems, Inc. Method and apparatus for interpreting exceptions in a distributed object system
US5737607A (en) * 1995-09-28 1998-04-07 Sun Microsystems, Inc. Method and apparatus for allowing generic stubs to marshal and unmarshal data in object reference specific data formats

Also Published As

Publication number Publication date
US5991823A (en) 1999-11-23
EP0817025A3 (en) 2003-11-12
EP0817025A2 (en) 1998-01-07

Similar Documents

Publication Publication Date Title
JPH10133876A (ja) 低オーバヘッドオブジェクトアダプタ
US6272557B1 (en) Framework for marshaling and unmarshaling argument object references
US6718550B1 (en) Method and apparatus for improving the performance of object invocation
US6044224A (en) Mechanism for dynamically associating a service dependent representation with objects at run time
US6687831B1 (en) Method and apparatus for multiple security service enablement in a data processing system
US6976261B2 (en) Method and apparatus for fast, local CORBA object references
US5787251A (en) Method and apparatus for subcontracts in distributed processing systems
US6189046B1 (en) Mechanism and method for merging cached location information in a distributed object environment
US6260078B1 (en) Using a distributed object system to find and download java-based applications
EP0817027B1 (en) Transport independent invocation and servant interfaces that permit both typecode interpreted and compiled marshaling
US6282581B1 (en) Mechanism for resource allocation and for dispatching incoming calls in a distributed object environment
US5566302A (en) Method for executing operation call from client application using shared memory region and establishing shared memory region when the shared memory region does not exist
US5727145A (en) Mechanism for locating objects in a secure fashion
US6185609B1 (en) Method, apparatus and program to provide client access to a management information service residing on a server in a computer network system
EP0737922B1 (en) Method and apparatus for managing computer processes
EP0911732A2 (en) A method, apparatus and program product for interfacing a multi-threaded- to a single-treaded application programmer interface
JPH0926890A (ja) オブジェクトを管理するための方法、装置、および、データ構造
JPH0922392A (ja) オブジェクト間のコンスピラシのための方法および装置
JPH0926925A (ja) オブジェクトの集合を管理する方法および装置
US6189048B1 (en) Mechanism for dispatching requests in a distributed object system
US6205491B1 (en) Method and apparatus for deferred throwing of exceptions in C++
US6769125B2 (en) Methods and apparatus for managing computer processes