JPH1063505A - 引数オブジェクトリファレンスをマーシャリングおよびアンマーシャリングするフレームワーク - Google Patents
引数オブジェクトリファレンスをマーシャリングおよびアンマーシャリングするフレームワークInfo
- Publication number
- JPH1063505A JPH1063505A JP9167663A JP16766397A JPH1063505A JP H1063505 A JPH1063505 A JP H1063505A JP 9167663 A JP9167663 A JP 9167663A JP 16766397 A JP16766397 A JP 16766397A JP H1063505 A JPH1063505 A JP H1063505A
- Authority
- JP
- Japan
- Prior art keywords
- subcontract
- identifier
- argument
- object reference
- identified
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
- G06F9/548—Object 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)
- Computer And Data Communications (AREA)
Abstract
(57)【要約】
【課題】 分散クライアント/サーバベースのコンピュ
ーティングシステムにおけるコンピューティングオーバ
ーヘッドを削減する方法及び装置を提供する。 【解決手段】 本発明は、引数オブジェクトリファレン
スをマーシャリングおよびアンマーシャリングする効率
的なフレームワークを利用した方法及び装置である。本
発明の一側面によれば、マーシャルバッファ内にカプセ
ル化された引数の一部であるサブコントラクト識別子を
含んだ引数オブジェクトリファレンスをアンマーシャリ
ングする方法は、引数オブジェクトリファレンスに関連
付けられたサブコントラクト識別子を識別するステッ
プ、この識別されたサブコントラクト識別子を用いて適
切な関連アンマーシャルメソッドを識別するステップ、
およびその関連アンマーシャルメソッドを呼び出すステ
ップを含んでいる。
ーティングシステムにおけるコンピューティングオーバ
ーヘッドを削減する方法及び装置を提供する。 【解決手段】 本発明は、引数オブジェクトリファレン
スをマーシャリングおよびアンマーシャリングする効率
的なフレームワークを利用した方法及び装置である。本
発明の一側面によれば、マーシャルバッファ内にカプセ
ル化された引数の一部であるサブコントラクト識別子を
含んだ引数オブジェクトリファレンスをアンマーシャリ
ングする方法は、引数オブジェクトリファレンスに関連
付けられたサブコントラクト識別子を識別するステッ
プ、この識別されたサブコントラクト識別子を用いて適
切な関連アンマーシャルメソッドを識別するステップ、
およびその関連アンマーシャルメソッドを呼び出すステ
ップを含んでいる。
Description
【0001】
【発明の属する技術分野】本発明は、分散コンピューテ
ィングシステム、クライアント−サーバコンピューティ
ング、およびオブジェクト指向プログラミングの分野に
関する。本発明は、特に、引数オブジェクトリファレン
スをマーシャリングおよびアンマーシャリングしてサー
バントの起動を容易にする方法及び装置に関する。
ィングシステム、クライアント−サーバコンピューティ
ング、およびオブジェクト指向プログラミングの分野に
関する。本発明は、特に、引数オブジェクトリファレン
スをマーシャリングおよびアンマーシャリングしてサー
バントの起動を容易にする方法及び装置に関する。
【0002】
【従来の技術】異なるコンピュータ上に配置されたオブ
ジェクトがネットワークによって接続されるコンピュー
ティング環境は、通常、クライアント−サーバコンピュ
ーティング環境と呼ばれている。コンピュータは、他の
コンピュータに対するサービスや機能(functionalit
y)の提供者として働くものもあれば、サービスや機能
の消費者として働くものもある。サービスや機能の提供
者は「サーバ」として知られ、サービスや機能の消費者
は「クライアント」として知られている。クライアント
−サーバモデルは、同一コンピュータ上で動作する異な
るプログラムが、或る保護されたメカニズムを介して互
いに通信しており、かつサービスや機能の提供者および
消費者として働いているケースに一般化することもでき
る。
ジェクトがネットワークによって接続されるコンピュー
ティング環境は、通常、クライアント−サーバコンピュ
ーティング環境と呼ばれている。コンピュータは、他の
コンピュータに対するサービスや機能(functionalit
y)の提供者として働くものもあれば、サービスや機能
の消費者として働くものもある。サービスや機能の提供
者は「サーバ」として知られ、サービスや機能の消費者
は「クライアント」として知られている。クライアント
−サーバモデルは、同一コンピュータ上で動作する異な
るプログラムが、或る保護されたメカニズムを介して互
いに通信しており、かつサービスや機能の提供者および
消費者として働いているケースに一般化することもでき
る。
【0003】このような分散システムを提供する試み
は、従来、クライアント−サーバモデルに基づくオブジ
ェクト指向方法論を使って行なわれている。クライアン
ト−サーバモデルでは、サーバオブジェクト(しばしば
サーバントと呼ばれる)が、サーバオブジェクトのリク
エストを作成するクライアントオブジェクトにインタフ
ェースを提供する。通常、そのような分散システムで
は、サーバントは、データと関連付けメソッドとを含む
オブジェクトである。クライアントオブジェクトは、サ
ーバオブジェクトの呼び出し(call)(これは、分散シ
ステムによって媒介される)を実行することによって、
そのサーバオブジェクトの機能に対するアクセスを獲得
する。サーバオブジェクトは、呼び出しを受け取ると、
適切なメソッドを実行し、その結果をクライアントオブ
ジェクトに送り返す。クライアントオブジェクトとサー
バオブジェクトは、オブジェクトリクエストブローカ
(ORB)を介して通信する。このオブジェクトリクエ
ストブローカは、各種分散オブジェクトを配置してオブ
ジェクト間の通信を確立するために使用される。分散オ
ブジェクトは、ネットワーク内の任意の場所、例えばク
ライアントのアドレス空間やクライアントマシン上の多
数のアドレス空間やネットワーク中の多数のマシンの中
に存在することができる。
は、従来、クライアント−サーバモデルに基づくオブジ
ェクト指向方法論を使って行なわれている。クライアン
ト−サーバモデルでは、サーバオブジェクト(しばしば
サーバントと呼ばれる)が、サーバオブジェクトのリク
エストを作成するクライアントオブジェクトにインタフ
ェースを提供する。通常、そのような分散システムで
は、サーバントは、データと関連付けメソッドとを含む
オブジェクトである。クライアントオブジェクトは、サ
ーバオブジェクトの呼び出し(call)(これは、分散シ
ステムによって媒介される)を実行することによって、
そのサーバオブジェクトの機能に対するアクセスを獲得
する。サーバオブジェクトは、呼び出しを受け取ると、
適切なメソッドを実行し、その結果をクライアントオブ
ジェクトに送り返す。クライアントオブジェクトとサー
バオブジェクトは、オブジェクトリクエストブローカ
(ORB)を介して通信する。このオブジェクトリクエ
ストブローカは、各種分散オブジェクトを配置してオブ
ジェクト間の通信を確立するために使用される。分散オ
ブジェクトは、ネットワーク内の任意の場所、例えばク
ライアントのアドレス空間やクライアントマシン上の多
数のアドレス空間やネットワーク中の多数のマシンの中
に存在することができる。
【0004】ソフトウェア産業は、これまで、オブジェ
クトマネージメントグループ(OMG)を形成すること
によって分散オブジェクトテクノロジーに対するニーズ
に対応してきた。OMGの目標は、オブジェクトマネー
ジメントアーキテクチャ(OMA)を定義することあ
る。このオブジェクトマネージメントアーキテクチャ
は、4つの大きなコンポーネント、すなわちオブジェク
トリクエストブローカ(ORB)、オブジェクトサービ
ス、共通ファシリティ、およびアプリケーションオブジ
ェクトを有している。オブジェクトリクエストブローカ
は、基本的なオブジェクト通信と管理サービスとを提供
し、それによって分散オブジェクトシステムの基礎を形
成する。オブジェクトリクエストブローカの規格は、共
通オブジェクトリクエストブローカアーキテクチャ(C
ORBA)仕様に含まれている。
クトマネージメントグループ(OMG)を形成すること
によって分散オブジェクトテクノロジーに対するニーズ
に対応してきた。OMGの目標は、オブジェクトマネー
ジメントアーキテクチャ(OMA)を定義することあ
る。このオブジェクトマネージメントアーキテクチャ
は、4つの大きなコンポーネント、すなわちオブジェク
トリクエストブローカ(ORB)、オブジェクトサービ
ス、共通ファシリティ、およびアプリケーションオブジ
ェクトを有している。オブジェクトリクエストブローカ
は、基本的なオブジェクト通信と管理サービスとを提供
し、それによって分散オブジェクトシステムの基礎を形
成する。オブジェクトリクエストブローカの規格は、共
通オブジェクトリクエストブローカアーキテクチャ(C
ORBA)仕様に含まれている。
【0005】典型的なクライアント−サーバシステムで
は、パフォーマンスオーバーヘッドが高価な場合があ
る。すなわち、プロセスからの収集情報(gathering in
formation)やプロセス内のルーティング情報に関連付
けられたメソッドとアプリケーションコードの非効率的
な使用によって、システム内のプロセスの速度と品質が
損なわれる可能性がある。例えば、ターゲットオブジェ
クトリファレンスに対する引数(argument)であるオブ
ジェクトリファレンスのマーシャリング及びアンマーシ
ャリングに伴うパフォーマンスオーバーヘッドは比較的
高いことが多い。当業者にはよく理解されるように、オ
ブジェクトリファレンスをマーシャリングおよびアンマ
ーシャリングするためには、そのオブジェクトリファレ
ンスに対応するマーシャルメソッドまたはアンマーシャ
ルメソッドを識別しなければならない。例えば、単純な
整数である引数、すなわち「整数」タイプの引数、をマ
ーシャリングおよびアンマーシャリングするために使用
されるマーシャリングおよびアンマーシャリング関数
は、「文字列(srring)」タイプの引数を取り扱うため
に使用されるマーシャリングおよびアンマーシャリング
関数とは異なるし、この関数も、「オブジェクトリファ
レンス」タイプの引数を取り扱うために使用されるマー
シャリングおよびアンマーシャリング関数とは異なる。
は、パフォーマンスオーバーヘッドが高価な場合があ
る。すなわち、プロセスからの収集情報(gathering in
formation)やプロセス内のルーティング情報に関連付
けられたメソッドとアプリケーションコードの非効率的
な使用によって、システム内のプロセスの速度と品質が
損なわれる可能性がある。例えば、ターゲットオブジェ
クトリファレンスに対する引数(argument)であるオブ
ジェクトリファレンスのマーシャリング及びアンマーシ
ャリングに伴うパフォーマンスオーバーヘッドは比較的
高いことが多い。当業者にはよく理解されるように、オ
ブジェクトリファレンスをマーシャリングおよびアンマ
ーシャリングするためには、そのオブジェクトリファレ
ンスに対応するマーシャルメソッドまたはアンマーシャ
ルメソッドを識別しなければならない。例えば、単純な
整数である引数、すなわち「整数」タイプの引数、をマ
ーシャリングおよびアンマーシャリングするために使用
されるマーシャリングおよびアンマーシャリング関数
は、「文字列(srring)」タイプの引数を取り扱うため
に使用されるマーシャリングおよびアンマーシャリング
関数とは異なるし、この関数も、「オブジェクトリファ
レンス」タイプの引数を取り扱うために使用されるマー
シャリングおよびアンマーシャリング関数とは異なる。
【0006】
【発明が解決しようとする課題】正しいマーシャリング
またはアンマーシャルメソッドの識別には、通常、すべ
ての利用可能なマーシャリングおよびアンマーシャルメ
ソッドの探索が含まれる。これらの探索に伴うパフォー
マンスオーバーヘッドは、通常、比較的高い。特に、引
数オブジェクトリファレンスに関連付けられたマーシャ
ル及びアンマーシャルメソッドの識別に伴うパフォーマ
ンスオーバーヘッドは、高い場合が多い。これは、最初
に引数オブジェクトリファレンスを「オブジェクトリフ
ァレンス」タイプであると識別する必要があり、この
後、適切なマーシャルまたはアンマーシャルメソッドを
求めて探索を行わなければならないためである。様々な
トランスポートメカニズムとプロトコルを利用する分散
オブジェクトシステムでは、通常、オブジェクトリファ
レンスのコード化に使用される多数のエンコーディング
フォーマット、すなわちマーシャルメソッドが存在す
る。また、同様に、コード化されたオブジェクトリファ
レンスのデコードに使用するための多くのデコーディン
グフォーマット、すなわちアンマーシャルメソッドが存
在する。かくして、適切なマーシャルおよびアンマーシ
ャルメソッドを求める探索は、比較的高いコンピューテ
ィングオーバーヘッドを必要とする可能性が大きい。高
いパフォーマンスオーバーヘッドは、しばしば、システ
ム資源の非効率な使用という結果をもたらす。従って、
引数オブジェクトリファレンスのマーシャリング及びア
ンマーシャリングに関するパフォーマンスオーバーヘッ
ドを削減する方法及び装置の提供が望まれている。
またはアンマーシャルメソッドの識別には、通常、すべ
ての利用可能なマーシャリングおよびアンマーシャルメ
ソッドの探索が含まれる。これらの探索に伴うパフォー
マンスオーバーヘッドは、通常、比較的高い。特に、引
数オブジェクトリファレンスに関連付けられたマーシャ
ル及びアンマーシャルメソッドの識別に伴うパフォーマ
ンスオーバーヘッドは、高い場合が多い。これは、最初
に引数オブジェクトリファレンスを「オブジェクトリフ
ァレンス」タイプであると識別する必要があり、この
後、適切なマーシャルまたはアンマーシャルメソッドを
求めて探索を行わなければならないためである。様々な
トランスポートメカニズムとプロトコルを利用する分散
オブジェクトシステムでは、通常、オブジェクトリファ
レンスのコード化に使用される多数のエンコーディング
フォーマット、すなわちマーシャルメソッドが存在す
る。また、同様に、コード化されたオブジェクトリファ
レンスのデコードに使用するための多くのデコーディン
グフォーマット、すなわちアンマーシャルメソッドが存
在する。かくして、適切なマーシャルおよびアンマーシ
ャルメソッドを求める探索は、比較的高いコンピューテ
ィングオーバーヘッドを必要とする可能性が大きい。高
いパフォーマンスオーバーヘッドは、しばしば、システ
ム資源の非効率な使用という結果をもたらす。従って、
引数オブジェクトリファレンスのマーシャリング及びア
ンマーシャリングに関するパフォーマンスオーバーヘッ
ドを削減する方法及び装置の提供が望まれている。
【0007】
【課題を解決するための手段】本発明は、分散クライア
ント/サーバベースのコンピューティングシステムにお
いて、引数オブジェクトリファレンスをマーシャリング
およびアンマーシャリングする効率的なフレームワーク
を利用することにより、コンピューティングオーバーヘ
ッドを削減する方法及び装置を提供する。本発明の一側
面では、サブコントラクト識別子を含む引数オブジェク
トリファレンスをアンマーシャリングする方法が提供さ
れる。ここで、サブコントラクト識別子は、マーシャル
バッファ内にカプセル化された引数オブジェクトリファ
レンスの一部である。マーシャルバッファは、その内部
にカプセル化された引数オブジェクトリファレンスに埋
め込まれたサブコントラクト識別子を識別する能力を提
供する。識別されたサブコントラクトは、次に、関連付
けアンマーシャルメソッドを識別するために利用され
る。適切なアンマーシャルメソッドが識別されると、そ
の適切なアンマーシャルメソッドが呼び出される。
ント/サーバベースのコンピューティングシステムにお
いて、引数オブジェクトリファレンスをマーシャリング
およびアンマーシャリングする効率的なフレームワーク
を利用することにより、コンピューティングオーバーヘ
ッドを削減する方法及び装置を提供する。本発明の一側
面では、サブコントラクト識別子を含む引数オブジェク
トリファレンスをアンマーシャリングする方法が提供さ
れる。ここで、サブコントラクト識別子は、マーシャル
バッファ内にカプセル化された引数オブジェクトリファ
レンスの一部である。マーシャルバッファは、その内部
にカプセル化された引数オブジェクトリファレンスに埋
め込まれたサブコントラクト識別子を識別する能力を提
供する。識別されたサブコントラクトは、次に、関連付
けアンマーシャルメソッドを識別するために利用され
る。適切なアンマーシャルメソッドが識別されると、そ
の適切なアンマーシャルメソッドが呼び出される。
【0008】好ましい態様の一つでは、検出されたサブ
コントラクト識別子が、期待されたサブコントラクト識
別子と比較される。識別されたサブコントラクト識別子
が期待されたサブコントラクト識別子と同一であると判
定されたときは、期待されたサブコントラクト識別子に
対応する所定の期待アンマーシャルメソッドが呼び出さ
れる。識別されたサブコントラクト識別子が期待された
サブコントラクト識別子と同一でないときは、適切なア
ンマーシャルメソッドを識別するために、サブコントラ
クトレジストリがアクセスを受ける。
コントラクト識別子が、期待されたサブコントラクト識
別子と比較される。識別されたサブコントラクト識別子
が期待されたサブコントラクト識別子と同一であると判
定されたときは、期待されたサブコントラクト識別子に
対応する所定の期待アンマーシャルメソッドが呼び出さ
れる。識別されたサブコントラクト識別子が期待された
サブコントラクト識別子と同一でないときは、適切なア
ンマーシャルメソッドを識別するために、サブコントラ
クトレジストリがアクセスを受ける。
【0009】本発明の別の側面では、引数オブジェクト
リファレンスをマーシャリングする方法が提供される。
これは、引数オブジェクトリファレンス内で識別された
クライアント表現のマーシャルメソッドを起動(invok
e)し、所望のマーシャルバッファを引数としてそのマ
ーシャルメソッドに受け渡すことにより達成される。ク
ライアント表現は、ORBオブジェクトを表現し、この
オブジェクトに関連付けられたサブコントラクトのクラ
イアント側の機能(functionality)と特徴を実装す
る。この実装には、このオブジェクトに対するオブジェ
クトリファレンスを引数としてマーシャリングすること
が含まれる。引数オブジェクトリファレンス内のサブコ
ントラクト識別子によって識別されるサブコントラクト
が既知の場合、引数オブジェクトリファレンスは、識別
されたマーシャルバッファタイプに適した形にコード化
される。ある態様で、引数オブジェクトリファレンス
が、識別されたマーシャルバッファタイプに適した形に
コード化されると、そのマーシャルメソッドは、引数オ
ブジェクトリファレンスをそのマーシャルバッファにマ
ーシャリングする。
リファレンスをマーシャリングする方法が提供される。
これは、引数オブジェクトリファレンス内で識別された
クライアント表現のマーシャルメソッドを起動(invok
e)し、所望のマーシャルバッファを引数としてそのマ
ーシャルメソッドに受け渡すことにより達成される。ク
ライアント表現は、ORBオブジェクトを表現し、この
オブジェクトに関連付けられたサブコントラクトのクラ
イアント側の機能(functionality)と特徴を実装す
る。この実装には、このオブジェクトに対するオブジェ
クトリファレンスを引数としてマーシャリングすること
が含まれる。引数オブジェクトリファレンス内のサブコ
ントラクト識別子によって識別されるサブコントラクト
が既知の場合、引数オブジェクトリファレンスは、識別
されたマーシャルバッファタイプに適した形にコード化
される。ある態様で、引数オブジェクトリファレンス
が、識別されたマーシャルバッファタイプに適した形に
コード化されると、そのマーシャルメソッドは、引数オ
ブジェクトリファレンスをそのマーシャルバッファにマ
ーシャリングする。
【0010】
【発明の実施の形態】本発明は、添付の図面に関する下
記説明を参照することによって、その更なる利点ととも
に最もよく理解されるであろう。
記説明を参照することによって、その更なる利点ととも
に最もよく理解されるであろう。
【0011】本発明は、分散オブジェクトシステム用の
ものである。以下では、添付の図面に示される幾つかの
好適な実施形態を参照しながら本発明を説明する。本発
明は、CORBAによって定義されたもの、あるいは他
の任意の適切な仕様を含む任意の適切な分散オブジェク
トシステムのコンテキスト内で実施することができる。
しかしながら、説明のため、本発明は、主として199
5年7月のOMG改訂版2.0(これは、参照文献とし
て本明細書に組み込まれる)からのCORBA仕様に基
づいて実装されたオブジェクトリクエストブローカ(O
RB)のコンテキスト内で述べられる。図1は、本発明
の実施に適した代表的な分散オブジェクトシステムの全
体アーキテクチャを示す概略図である。図2は、3レベ
ルのディスパッチメカニズムを含むようなアーキテクチ
ャ内においてクライアントからサーバントオブジェクト
へのリクエストが辿り得るいくつかの可能な流れ経路を
示す概略図である。図3は、サーバントオブジェクトを
参照するためにクライアントが使用できるオブジェクト
リファレンスデータ構造の一つを示す。
ものである。以下では、添付の図面に示される幾つかの
好適な実施形態を参照しながら本発明を説明する。本発
明は、CORBAによって定義されたもの、あるいは他
の任意の適切な仕様を含む任意の適切な分散オブジェク
トシステムのコンテキスト内で実施することができる。
しかしながら、説明のため、本発明は、主として199
5年7月のOMG改訂版2.0(これは、参照文献とし
て本明細書に組み込まれる)からのCORBA仕様に基
づいて実装されたオブジェクトリクエストブローカ(O
RB)のコンテキスト内で述べられる。図1は、本発明
の実施に適した代表的な分散オブジェクトシステムの全
体アーキテクチャを示す概略図である。図2は、3レベ
ルのディスパッチメカニズムを含むようなアーキテクチ
ャ内においてクライアントからサーバントオブジェクト
へのリクエストが辿り得るいくつかの可能な流れ経路を
示す概略図である。図3は、サーバントオブジェクトを
参照するためにクライアントが使用できるオブジェクト
リファレンスデータ構造の一つを示す。
【0012】分散オブジェクトシステム10は、図1に
模式的に示すように、通常、オブジェクトリクエストブ
ローカ(ORB)11を含む。ORB11は、クライア
ントからの呼び出し(call)をサーバント(ターゲット
オブジェクト)に配布してそのクライアントに応答を返
すのに必要なロケーション並びにトランスポートメカニ
ズム及びファシリティのすべてを提供するが、これにつ
いては図2を参照しながら後述する。クライアントとサ
ーバントは、同一プロセス内、同一マシン上の異なるプ
ロセス内、または全く異なるマシン上に配置できる。こ
こでの議論のためには、クライアント20は、分散オブ
ジェクトに対するオペレーションを起動する任意のコー
ドでよいので、クライアント20は、分散オブジェクト
またはプロセスの形を取ることもできるし、取らなくて
もよい。ノーマルオブジェクトインプリメンテーション
14は、C++等の従来のオブジェクトプログラミング
言語で定義されるオブジェクトタイプの表現である。多
様な表現が可能である。例えば、オブジェクトインプリ
メンテーション14は、アプリケーション開発者によっ
て提供された単純なC++オブジェクトタイプであって
もよい。そのほか、オブジェクトタイプ用のインプリメ
ンテーションは、ビジュアルアプリケーションビルダ1
5内で開発することもできる。このビジュアルアプリケ
ーションビルダによって、開発者は、既存のオブジェク
トタイプをカタログから目視で選択し、あるオブジェク
トタイプ用の新しいインプリメンテーションを作成する
ため、一つのオブジェクトによって提供されたサービス
を別のオブジェクト(属性、引数等)によって必要とさ
れるサービスにグラフィカルに接続することが可能とな
る。
模式的に示すように、通常、オブジェクトリクエストブ
ローカ(ORB)11を含む。ORB11は、クライア
ントからの呼び出し(call)をサーバント(ターゲット
オブジェクト)に配布してそのクライアントに応答を返
すのに必要なロケーション並びにトランスポートメカニ
ズム及びファシリティのすべてを提供するが、これにつ
いては図2を参照しながら後述する。クライアントとサ
ーバントは、同一プロセス内、同一マシン上の異なるプ
ロセス内、または全く異なるマシン上に配置できる。こ
こでの議論のためには、クライアント20は、分散オブ
ジェクトに対するオペレーションを起動する任意のコー
ドでよいので、クライアント20は、分散オブジェクト
またはプロセスの形を取ることもできるし、取らなくて
もよい。ノーマルオブジェクトインプリメンテーション
14は、C++等の従来のオブジェクトプログラミング
言語で定義されるオブジェクトタイプの表現である。多
様な表現が可能である。例えば、オブジェクトインプリ
メンテーション14は、アプリケーション開発者によっ
て提供された単純なC++オブジェクトタイプであって
もよい。そのほか、オブジェクトタイプ用のインプリメ
ンテーションは、ビジュアルアプリケーションビルダ1
5内で開発することもできる。このビジュアルアプリケ
ーションビルダによって、開発者は、既存のオブジェク
トタイプをカタログから目視で選択し、あるオブジェク
トタイプ用の新しいインプリメンテーションを作成する
ため、一つのオブジェクトによって提供されたサービス
を別のオブジェクト(属性、引数等)によって必要とさ
れるサービスにグラフィカルに接続することが可能とな
る。
【0013】オブジェクト開発ファシリティ(object d
evelopment facility)16は、分散オブジェクトの作
成とインストレーションを簡略化するために使用でき
る。これは、ディベロッパオブジェクトを分散オブジェ
クトコードの中に「包む」、すなわちカプセル化するた
めに用いられる。このように、オブジェクト開発ファシ
リティ16は、ディベロッパオブジェクトをORBオブ
ジェクトインプリメンテーション14に変換するために
使用できる。この例ではORBオブジェクトインプリメ
ンテーション14は、図中のその場所で示されるよう
に、サーバとして提示される。ディベロッパはインタフ
ェース定義言語を使ってORBオブジェクト用インタフ
ェースを定義し、そのオブジェクトの振る舞いを実装す
るオブジェクトインプリメンテーションを開発者に提供
した後、そのオブジェクトの開発ファシリティを使って
ORBオブジェクトインプリメンテーション14を作成
する。ランタイムでは、このORBオブジェクト(サー
バントオブジェクト)のインスタンスが作成される。こ
のインスタンスは、ORBオブジェクトインプリメンテ
ーション14を利用する。幾つかの時点でクライアント
の役割を担うようなオブジェクトを、このオブジェクト
開発ファシリティを用いて作成することもできる。
evelopment facility)16は、分散オブジェクトの作
成とインストレーションを簡略化するために使用でき
る。これは、ディベロッパオブジェクトを分散オブジェ
クトコードの中に「包む」、すなわちカプセル化するた
めに用いられる。このように、オブジェクト開発ファシ
リティ16は、ディベロッパオブジェクトをORBオブ
ジェクトインプリメンテーション14に変換するために
使用できる。この例ではORBオブジェクトインプリメ
ンテーション14は、図中のその場所で示されるよう
に、サーバとして提示される。ディベロッパはインタフ
ェース定義言語を使ってORBオブジェクト用インタフ
ェースを定義し、そのオブジェクトの振る舞いを実装す
るオブジェクトインプリメンテーションを開発者に提供
した後、そのオブジェクトの開発ファシリティを使って
ORBオブジェクトインプリメンテーション14を作成
する。ランタイムでは、このORBオブジェクト(サー
バントオブジェクト)のインスタンスが作成される。こ
のインスタンスは、ORBオブジェクトインプリメンテ
ーション14を利用する。幾つかの時点でクライアント
の役割を担うようなオブジェクトを、このオブジェクト
開発ファシリティを用いて作成することもできる。
【0014】クライアント20は、スタブ21、サブコ
ントラクト層36、場合によりフィルタ40、およびト
ランスポート層38を介してサーバントと通信する。ス
タブ21はサロゲート22、メソッドテーブル24、お
よおびスタブ関数25を含む。クライアント20は、最
初、サロゲート22と通信する。このサロゲート22
は、クライアントにはサーバオブジェクトに見える。こ
のほか、クライアント20は、サロゲート22、メソッ
ドテーブル24、およびスタブ関数25の代わりに、動
的起動インタフェース(DII)26を介してサーバオ
ブジェクトと直接通信してもよい。クライアント、例え
ばクライアント20は、動的起動インタフェース26を
使用して動的リクエストを構築することができる。上記
の層を利用してクライアントがサーバントに対する呼び
出しを行う一つの手順を、図2を参照しながら以下によ
り詳しく説明する。
ントラクト層36、場合によりフィルタ40、およびト
ランスポート層38を介してサーバントと通信する。ス
タブ21はサロゲート22、メソッドテーブル24、お
よおびスタブ関数25を含む。クライアント20は、最
初、サロゲート22と通信する。このサロゲート22
は、クライアントにはサーバオブジェクトに見える。こ
のほか、クライアント20は、サロゲート22、メソッ
ドテーブル24、およびスタブ関数25の代わりに、動
的起動インタフェース(DII)26を介してサーバオ
ブジェクトと直接通信してもよい。クライアント、例え
ばクライアント20は、動的起動インタフェース26を
使用して動的リクエストを構築することができる。上記
の層を利用してクライアントがサーバントに対する呼び
出しを行う一つの手順を、図2を参照しながら以下によ
り詳しく説明する。
【0015】サブコントラクト層36は、サブコントラ
クトを利用して特定のサブコントラクトによって名前付
けされた各種サービス(または特徴やオブジェクトメカ
ニズム)を実装するため、オブジェクトによって要求さ
れた機能を提供する。サブコントラクトは、個々のオブ
ジェクトが利用可能な分散オブジェクトシステムによっ
て提供されるサービスの品質を識別する。例えば、サブ
コントラクトは、特定のオブジェクトのためにセキュリ
ティ特徴が使用されることを識別することができる。フ
ィルタ40が使用される場合、フィルタ40は、オブジ
ェクトに出入りする通信に適用すべき様々なタスク、例
えば圧縮、暗号化、トレース、またはデバッグ等、を実
行する。
クトを利用して特定のサブコントラクトによって名前付
けされた各種サービス(または特徴やオブジェクトメカ
ニズム)を実装するため、オブジェクトによって要求さ
れた機能を提供する。サブコントラクトは、個々のオブ
ジェクトが利用可能な分散オブジェクトシステムによっ
て提供されるサービスの品質を識別する。例えば、サブ
コントラクトは、特定のオブジェクトのためにセキュリ
ティ特徴が使用されることを識別することができる。フ
ィルタ40が使用される場合、フィルタ40は、オブジ
ェクトに出入りする通信に適用すべき様々なタスク、例
えば圧縮、暗号化、トレース、またはデバッグ等、を実
行する。
【0016】トランスポート層38は、クライアントと
同一のプロセスを通常は共有しないサーバントに出入り
する情報を、マーシャリング、アンマーシャリング、お
よび物理的に輸送するように動作する。
同一のプロセスを通常は共有しないサーバントに出入り
する情報を、マーシャリング、アンマーシャリング、お
よび物理的に輸送するように動作する。
【0017】標準インプリメンテーションスイート28
(またはオブジェクトアダプタ)は、同一の方式でOR
Bオブジェクト14と対話(interact)する一組のサブ
コントラクト、例えばオブジェクトキーマネージメン
ト、を表す。当然のことながら、サブコントラクトは、
多数のインプリメンテーションスイートに属することが
できる。従って、異なるサブコントラクトを利用する他
のインプリメンテーションスイートが可能である。スケ
ルトンは、静的スケルトン32や動的スケルトン30の
形を取り得るが、これは、サーバントオブジェクト14
によって要求されるフォーマットにリクエストを変換す
るために使用される。かくして、スケルトン32、30
は適切なサーバントオブジェクト14を呼び出す。静的
スケルトン32はインタフェース固有のオブジェクトイ
ンプリメンテーション14を呼び出すために使用され、
動的スケルトン30は、一般に、インタフェース固有の
オブジェクトが利用できないときに使用される。ORB
デーモン46は、オブジェクトサーバがクライアントに
よって起動されたときにアクティブであることを保証す
る責任を負っている。
(またはオブジェクトアダプタ)は、同一の方式でOR
Bオブジェクト14と対話(interact)する一組のサブ
コントラクト、例えばオブジェクトキーマネージメン
ト、を表す。当然のことながら、サブコントラクトは、
多数のインプリメンテーションスイートに属することが
できる。従って、異なるサブコントラクトを利用する他
のインプリメンテーションスイートが可能である。スケ
ルトンは、静的スケルトン32や動的スケルトン30の
形を取り得るが、これは、サーバントオブジェクト14
によって要求されるフォーマットにリクエストを変換す
るために使用される。かくして、スケルトン32、30
は適切なサーバントオブジェクト14を呼び出す。静的
スケルトン32はインタフェース固有のオブジェクトイ
ンプリメンテーション14を呼び出すために使用され、
動的スケルトン30は、一般に、インタフェース固有の
オブジェクトが利用できないときに使用される。ORB
デーモン46は、オブジェクトサーバがクライアントに
よって起動されたときにアクティブであることを保証す
る責任を負っている。
【0018】セキュアプロトコル(Secure Protocol)
42は、インターネットORB間プロトコルを保証し
て、トランスポート層38を介して安全に情報を伝送す
るのに役立つセキュアインタオペラビリティプロトコル
である。これは完全性保護(integrity protection)や
機密性等を意味する場合がある。インターネットORB
間プロトコルは、通常、異なるマシン上でのプロセス間
で通信を行うプロトコルである。しかしながら、場合に
よっては、インターネットORB間プロトコルは、同一
マシン上のプロセス間で通信を行うこともできる。セキ
ュリティサーバ54は、異なるコンピュータ上のプロセ
ス間で使用されるサービスを保証するセキュリティアド
ミニストレーションサーバである。
42は、インターネットORB間プロトコルを保証し
て、トランスポート層38を介して安全に情報を伝送す
るのに役立つセキュアインタオペラビリティプロトコル
である。これは完全性保護(integrity protection)や
機密性等を意味する場合がある。インターネットORB
間プロトコルは、通常、異なるマシン上でのプロセス間
で通信を行うプロトコルである。しかしながら、場合に
よっては、インターネットORB間プロトコルは、同一
マシン上のプロセス間で通信を行うこともできる。セキ
ュリティサーバ54は、異なるコンピュータ上のプロセ
ス間で使用されるサービスを保証するセキュリティアド
ミニストレーションサーバである。
【0019】タイプコード/Anyモジュール44は、
タイプコードと「Any」オブジェクトを実装する。タ
イプコードは、インタフェース定義言語(IDL)デー
タタイプを記述し、クライアント及びサーバ間における
タイプ記述の伝達を可能にする。IDLデータタイプの
インスタンスは、「Any」オブジェクトによってカプ
セル化することができる。Anyオブジェクトは、カプ
セル化されたデータのタイプコード及びこのデータのジ
ェネリックエンコーディングを参照する。
タイプコードと「Any」オブジェクトを実装する。タ
イプコードは、インタフェース定義言語(IDL)デー
タタイプを記述し、クライアント及びサーバ間における
タイプ記述の伝達を可能にする。IDLデータタイプの
インスタンスは、「Any」オブジェクトによってカプ
セル化することができる。Anyオブジェクトは、カプ
セル化されたデータのタイプコード及びこのデータのジ
ェネリックエンコーディングを参照する。
【0020】インプリメンテーションレポジトリ50
は、オブジェクトサーバに関する情報を格納するために
使用される。具体的には、インプリメンテーションレポ
ジトリ50は、サーバプロセスを開始するのに必要な情
報を格納する。例えば、インプリメンテーションレポジ
トリ50は、サーバプログラムの場所、プログラムに対
する任意の引数、プログラムに渡すべき任意の環境変数
等の情報を格納する。
は、オブジェクトサーバに関する情報を格納するために
使用される。具体的には、インプリメンテーションレポ
ジトリ50は、サーバプロセスを開始するのに必要な情
報を格納する。例えば、インプリメンテーションレポジ
トリ50は、サーバプログラムの場所、プログラムに対
する任意の引数、プログラムに渡すべき任意の環境変数
等の情報を格納する。
【0021】単一永続性(simple persistence)56
は、インタフェース定義言語(IDL)定義タイプと、
IDLコンパイラを介してそのIDLタイプを実行する
ことによる出力と、を使用し、IDL定義タイプをディ
スクから読み取ったりディスクへ書き込むことができる
ように追加コードの一部も併せて使用する。ネームサー
バ52は、ORBオブジェクトを名前付け(name)する
ために使用される。あるクライアント、例えばクライア
ント20は、ネームサーバ52を使って名前により希望
のオブジェクトを発見することができる。ネームサーバ
52は、オブジェクトリファレンスを返却する。このオ
ブジェクトリファレンスは、そのオブジェクトにリクエ
ストを送るために使用することができる。インタフェー
スレポジトリ48(IFR)は、分散オブジェクトシス
テム内のすべてのオブジェクトに対するすべてのインタ
フェースについて知識を持っている。
は、インタフェース定義言語(IDL)定義タイプと、
IDLコンパイラを介してそのIDLタイプを実行する
ことによる出力と、を使用し、IDL定義タイプをディ
スクから読み取ったりディスクへ書き込むことができる
ように追加コードの一部も併せて使用する。ネームサー
バ52は、ORBオブジェクトを名前付け(name)する
ために使用される。あるクライアント、例えばクライア
ント20は、ネームサーバ52を使って名前により希望
のオブジェクトを発見することができる。ネームサーバ
52は、オブジェクトリファレンスを返却する。このオ
ブジェクトリファレンスは、そのオブジェクトにリクエ
ストを送るために使用することができる。インタフェー
スレポジトリ48(IFR)は、分散オブジェクトシス
テム内のすべてのオブジェクトに対するすべてのインタ
フェースについて知識を持っている。
【0022】メソッドテーブル(「m−テーブル」)デ
ィスパッチを使ってクライアントにより作成されたリク
エストは、図2に図示するように、途中、前述したアー
キテクチャの様々な層を通ってサーバントに至る。リク
エストはクライアントによって始められ、任意の適切な
形を取ることができる。リクエストの形は、クライアン
トを作成するために使用されるプログラミング言語の性
質に大きく依存する。例えば、クライアントがC++言
語で書かれている場合、リクエストはC++メソッド呼
び出し(method call)62の形を取ることができる。
この呼び出しは、サロゲートの形を取りつつ指定のオブ
ジェクトリファレンスに対して行なわれる。このサロゲ
ートは、オブジェクトのインタフェースに適合するメソ
ッドを含んでいる。当業者にはよく理解されるように、
分散オブジェクトシステム内の異なる場所で使用される
オブジェクトリファレンスは外観が大きく変わる場合が
ある。本実施形態では、クライアント側オブジェクトリ
ファレンスは、デュアルポインタである(本明細書では
「ファットポインタ(fat pointer)」と呼ぶ)。ファ
ットポインタは、性質の異なる2つのポインタを含む。
第1のポインタは、参照されるオブジェクトに関連付け
られたクライアント表現(“client rep”)を指す。第
2のポインタは、参照されるオブジェクトに関連付けら
れたメソッドテーブルディスパッチのメソッドテーブル
を指す。クライアント表現は、起動とCORBA定義
「疑似」オブジェクトリファレンスオペレーションとを
支援するメソッドを有するオブジェクトである。これら
のオペレーションには、duplicateメソッド、releaseメ
ソッド、narrowメソッド、hashメソッド、およびis_equ
ivalentメソッドが含まれる。但し、これらに限定され
るわけではない。
ィスパッチを使ってクライアントにより作成されたリク
エストは、図2に図示するように、途中、前述したアー
キテクチャの様々な層を通ってサーバントに至る。リク
エストはクライアントによって始められ、任意の適切な
形を取ることができる。リクエストの形は、クライアン
トを作成するために使用されるプログラミング言語の性
質に大きく依存する。例えば、クライアントがC++言
語で書かれている場合、リクエストはC++メソッド呼
び出し(method call)62の形を取ることができる。
この呼び出しは、サロゲートの形を取りつつ指定のオブ
ジェクトリファレンスに対して行なわれる。このサロゲ
ートは、オブジェクトのインタフェースに適合するメソ
ッドを含んでいる。当業者にはよく理解されるように、
分散オブジェクトシステム内の異なる場所で使用される
オブジェクトリファレンスは外観が大きく変わる場合が
ある。本実施形態では、クライアント側オブジェクトリ
ファレンスは、デュアルポインタである(本明細書では
「ファットポインタ(fat pointer)」と呼ぶ)。ファ
ットポインタは、性質の異なる2つのポインタを含む。
第1のポインタは、参照されるオブジェクトに関連付け
られたクライアント表現(“client rep”)を指す。第
2のポインタは、参照されるオブジェクトに関連付けら
れたメソッドテーブルディスパッチのメソッドテーブル
を指す。クライアント表現は、起動とCORBA定義
「疑似」オブジェクトリファレンスオペレーションとを
支援するメソッドを有するオブジェクトである。これら
のオペレーションには、duplicateメソッド、releaseメ
ソッド、narrowメソッド、hashメソッド、およびis_equ
ivalentメソッドが含まれる。但し、これらに限定され
るわけではない。
【0023】クライアントが呼び出し開始した後、この
呼び出しはメソッドテーブルディスパッチメカニズム2
4を用いて処理される。このメソッドテーブルディスパ
ッチメカニズムは、スタブ関数25へのポインタのリス
トを含んだメソッドテーブルを使用する。これらのポイ
ンタの一つは、起動されるべきメソッドに関連付けられ
ている。スタブ関数25は、クライアントプロセスの
「ネイティブ」言語で関数又は手続き呼び出し(proced
ure call)を受け取った後、サブコントラクト層36か
ネイティブ呼び出しのいずれかを使って、対応するサー
バントオブジェクトを最後に呼び出す。このネイティブ
言語は、任意の適切な言語、例えばC++のような言語
とすることができる。
呼び出しはメソッドテーブルディスパッチメカニズム2
4を用いて処理される。このメソッドテーブルディスパ
ッチメカニズムは、スタブ関数25へのポインタのリス
トを含んだメソッドテーブルを使用する。これらのポイ
ンタの一つは、起動されるべきメソッドに関連付けられ
ている。スタブ関数25は、クライアントプロセスの
「ネイティブ」言語で関数又は手続き呼び出し(proced
ure call)を受け取った後、サブコントラクト層36か
ネイティブ呼び出しのいずれかを使って、対応するサー
バントオブジェクトを最後に呼び出す。このネイティブ
言語は、任意の適切な言語、例えばC++のような言語
とすることができる。
【0024】メソッドテーブルディスパッチ24は、そ
のメソッド呼び出しを処理する適切なスタブ関数25を
決定した後、そのメソッド呼び出しをこの適切なスタブ
関数25と対にする。メソッド呼び出しを行なったクラ
イアントがサーバントオブジェクトと同一プロセスにあ
る場合、ローカルスタブ関数が呼び出される。このロー
カルスタブ関数は、そのメソッド呼び出しをサーバント
オブジェクト78に直接送る。そのほか、サーバントオ
ブジェクトが異なるプロセス、すなわちリモートプロセ
スにある場合、リモートスタブ関数が呼び出される。リ
モートスタブ関数はクライアント表現を起動し、このク
ライアント表現がその起動をサーバントオブジェクト7
8に伝達する。
のメソッド呼び出しを処理する適切なスタブ関数25を
決定した後、そのメソッド呼び出しをこの適切なスタブ
関数25と対にする。メソッド呼び出しを行なったクラ
イアントがサーバントオブジェクトと同一プロセスにあ
る場合、ローカルスタブ関数が呼び出される。このロー
カルスタブ関数は、そのメソッド呼び出しをサーバント
オブジェクト78に直接送る。そのほか、サーバントオ
ブジェクトが異なるプロセス、すなわちリモートプロセ
スにある場合、リモートスタブ関数が呼び出される。リ
モートスタブ関数はクライアント表現を起動し、このク
ライアント表現がその起動をサーバントオブジェクト7
8に伝達する。
【0025】サブコントラクト層36によって実装され
るサブコントラクトは、分散オブジェクトシステムで重
要なオブジェクトの起動(object invocation)及び引
数の受け渡し(argument passing)の基本メカニズムを
制御する論理モジュールである。サブコントラクト層3
6によって実装されるサブコントラクトは、オブジェク
トによって使用されるサービスの特定の品質(qualit
y)を決定する。サブコントラクトは、サブコントラク
ト識別子によって一対一に識別される。この識別子は、
通常、オブジェクトリファレンスに埋め込まれている。
サービスの品質は、一組のサービスプロパティである。
選択可能なサービスプロパティの中には、サーバ活性
化、セキュリティ、トランザクション、フィルタラビリ
ティ(filterability)、およびクリーンシャットダウ
ンに関する品質がある。サブコントラクトは、一定の品
質のサービスが利用できるように構成されている。予め
定められたサービスの品質によって、個々のサービスプ
ロパティの処理に伴うオーバーヘッドが削減される。現
実的には、「妥当な」、または一般的に使用されるサー
ビスプロパティの組合せが、サブコントラクトによって
サポートされる。しかしながら、所定の分散オブジェク
トシステムの特定の要求を満たすようにサブコントラク
トを作成してもよい。
るサブコントラクトは、分散オブジェクトシステムで重
要なオブジェクトの起動(object invocation)及び引
数の受け渡し(argument passing)の基本メカニズムを
制御する論理モジュールである。サブコントラクト層3
6によって実装されるサブコントラクトは、オブジェク
トによって使用されるサービスの特定の品質(qualit
y)を決定する。サブコントラクトは、サブコントラク
ト識別子によって一対一に識別される。この識別子は、
通常、オブジェクトリファレンスに埋め込まれている。
サービスの品質は、一組のサービスプロパティである。
選択可能なサービスプロパティの中には、サーバ活性
化、セキュリティ、トランザクション、フィルタラビリ
ティ(filterability)、およびクリーンシャットダウ
ンに関する品質がある。サブコントラクトは、一定の品
質のサービスが利用できるように構成されている。予め
定められたサービスの品質によって、個々のサービスプ
ロパティの処理に伴うオーバーヘッドが削減される。現
実的には、「妥当な」、または一般的に使用されるサー
ビスプロパティの組合せが、サブコントラクトによって
サポートされる。しかしながら、所定の分散オブジェク
トシステムの特定の要求を満たすようにサブコントラク
トを作成してもよい。
【0026】サブコントラクト層36内の適切なサブコ
ントラクトの識別は、そのサブコントラクトに固有の所
望の関数の識別と見做すことができる。例えば、マーシ
ャル関数やアンマーシャル関数は、各サブコントラクト
毎に定義される。サブコントラクトマーシャル関数は、
別のアドレス空間やドメインにオブジェクトリファレン
スを伝送できるようにオブジェクトリファレンスをマー
シャリングするため、スタブによって使用される。オブ
ジェクトリファレンスは、通常、トランスポート層38
内のトランスポートメカニズムによって処理される。
ントラクトの識別は、そのサブコントラクトに固有の所
望の関数の識別と見做すことができる。例えば、マーシ
ャル関数やアンマーシャル関数は、各サブコントラクト
毎に定義される。サブコントラクトマーシャル関数は、
別のアドレス空間やドメインにオブジェクトリファレン
スを伝送できるようにオブジェクトリファレンスをマー
シャリングするため、スタブによって使用される。オブ
ジェクトリファレンスは、通常、トランスポート層38
内のトランスポートメカニズムによって処理される。
【0027】T1、T2等のトランスポートメカニズム
は、トランスポート層38の一部だがサーバントオブジ
ェクトに出入りする情報をマーシャリングして物理的に
輸送するために使用される。情報、すなわちオブジェク
トリファレンスやリクエストは、所定のドメインに適し
たプロトコルに変換される。例えば、プロトコルは、イ
ーサーネットプロトコルやインターネットインタオペラ
ブルプロトコル(IIOP)を含んでいてもよい。但
し、これらに限定されるわけではない。希なケースで
は、プロトコルは、サーバ上で実装されるべき命令を伝
送するために電子メールの使用を必要とすることもあ
る。情報がマーシャリングされた後、そのトランスポー
トメカニズムは、オペレーティングシステム、デバイス
ドライバ、またはネットワーク(これらは、すべて、分
散オブジェクトシステムのクライアント側によって使用
されるハードウェア70の一部)の任意の組合せを介し
て情報を輸送する。トランスポートメカニズムでは、情
報を所定ドメインに適したプロトコルに変換する必要が
あるが、中には異なるドメインに対する情報のコード化
を必要としないトランスポートメカニズムもある。情報
が発生したドメイン以外のドメインに適したプロトコル
への情報の変換を必要としないトランスポートメカニズ
ムは「ドア」と呼ばれる。ドアは、本質的に、同一ホス
ト上の2つの異なるプロセス間のゲートウェイである。
ドアの使用によって、トランスポート層38内の標準イ
ンプリメンテーションに情報を変換する必要がなくな
る。というのも、情報が同一ホストに残っているのでド
メインを変更する必要がないため、異なるマシンによっ
て使用され得るプロトコルに情報をコード化する必要が
ないからである。従って、情報は、単に「平坦化(flatt
ened out) 」されるか、あるいは異なるマシンによる使
用のためにコード化されることのないストリームの中に
マーシャリングされて、ホスト上の2つのプロセス間で
受け渡しされても良い。
は、トランスポート層38の一部だがサーバントオブジ
ェクトに出入りする情報をマーシャリングして物理的に
輸送するために使用される。情報、すなわちオブジェク
トリファレンスやリクエストは、所定のドメインに適し
たプロトコルに変換される。例えば、プロトコルは、イ
ーサーネットプロトコルやインターネットインタオペラ
ブルプロトコル(IIOP)を含んでいてもよい。但
し、これらに限定されるわけではない。希なケースで
は、プロトコルは、サーバ上で実装されるべき命令を伝
送するために電子メールの使用を必要とすることもあ
る。情報がマーシャリングされた後、そのトランスポー
トメカニズムは、オペレーティングシステム、デバイス
ドライバ、またはネットワーク(これらは、すべて、分
散オブジェクトシステムのクライアント側によって使用
されるハードウェア70の一部)の任意の組合せを介し
て情報を輸送する。トランスポートメカニズムでは、情
報を所定ドメインに適したプロトコルに変換する必要が
あるが、中には異なるドメインに対する情報のコード化
を必要としないトランスポートメカニズムもある。情報
が発生したドメイン以外のドメインに適したプロトコル
への情報の変換を必要としないトランスポートメカニズ
ムは「ドア」と呼ばれる。ドアは、本質的に、同一ホス
ト上の2つの異なるプロセス間のゲートウェイである。
ドアの使用によって、トランスポート層38内の標準イ
ンプリメンテーションに情報を変換する必要がなくな
る。というのも、情報が同一ホストに残っているのでド
メインを変更する必要がないため、異なるマシンによっ
て使用され得るプロトコルに情報をコード化する必要が
ないからである。従って、情報は、単に「平坦化(flatt
ened out) 」されるか、あるいは異なるマシンによる使
用のためにコード化されることのないストリームの中に
マーシャリングされて、ホスト上の2つのプロセス間で
受け渡しされても良い。
【0028】クライアント側によって使用されるハード
ウェア70を介して情報が送られると、その情報は、分
散オブジェクトシステムのサーバ側のハードウェア70
に送られる。情報がハードウェア70を通じて送られる
と、分散オブジェクトシステムのサーバ側は、トランス
ポート層38の一部であるエンドポイントで情報を受け
取るために、T1、T2等のトランスポートメカニズム
を呼び出す。トランスポート層38によってエンドポイ
ントが作成されない場合、トランスポート層38は、そ
のエンドポイントがサブコントラクト層36によって作
成されるのに必要な機能を提供する。例えば、ドアエン
ドポイントは、通常、サブコントラクト層36によって
作成され、一方、ネットワーク及びTCP/IPエンド
ポイントを含む他のエンドポイントは、通常、トランス
ポート層38によって作成される。エンドポイントの作
成がサブコントラクト層36によるかトランスポート層
38によるかにかかわらず、エンドポイントはトランス
ポート層38の中に「住む(live in) 」、すなわちト
ランスポート層38の一部である。エンドポイントは、
基本的に、異なるドメインから情報を受け取るポートで
ある。トランスポート層38内のエンドポイントが、異
なるドメインから送られた情報を受け取った後、そのエ
ンドポイントは、その情報をトランスポート層38から
サブコントラクト層36にディスパッチする。この後、
サブコントラクト層36、特にその情報を受け取るサブ
コントラクト層36内のサブコントラクトが、その情報
をスケルトン及びサーバントにディスパッチする。
ウェア70を介して情報が送られると、その情報は、分
散オブジェクトシステムのサーバ側のハードウェア70
に送られる。情報がハードウェア70を通じて送られる
と、分散オブジェクトシステムのサーバ側は、トランス
ポート層38の一部であるエンドポイントで情報を受け
取るために、T1、T2等のトランスポートメカニズム
を呼び出す。トランスポート層38によってエンドポイ
ントが作成されない場合、トランスポート層38は、そ
のエンドポイントがサブコントラクト層36によって作
成されるのに必要な機能を提供する。例えば、ドアエン
ドポイントは、通常、サブコントラクト層36によって
作成され、一方、ネットワーク及びTCP/IPエンド
ポイントを含む他のエンドポイントは、通常、トランス
ポート層38によって作成される。エンドポイントの作
成がサブコントラクト層36によるかトランスポート層
38によるかにかかわらず、エンドポイントはトランス
ポート層38の中に「住む(live in) 」、すなわちト
ランスポート層38の一部である。エンドポイントは、
基本的に、異なるドメインから情報を受け取るポートで
ある。トランスポート層38内のエンドポイントが、異
なるドメインから送られた情報を受け取った後、そのエ
ンドポイントは、その情報をトランスポート層38から
サブコントラクト層36にディスパッチする。この後、
サブコントラクト層36、特にその情報を受け取るサブ
コントラクト層36内のサブコントラクトが、その情報
をスケルトン及びサーバントにディスパッチする。
【0029】サブコントラクト層36は、受け取った情
報の少なくとも一部をアンマーシャリングする機能を提
供する。すなわち、サブコントラクト層36は、リクエ
ストの少なくとも一部をアンマーシャリングする。次
に、リクエストがスケルトン31にディスパッチされ、
スケルトンがそのリクエストを、サーバントオブジェク
ト78によって要求されるインプリメンテーション固有
フォーマットに変換する。上記のように、スケルトン
は、静的スケルトンでも動的スケルトンでもよい。
報の少なくとも一部をアンマーシャリングする機能を提
供する。すなわち、サブコントラクト層36は、リクエ
ストの少なくとも一部をアンマーシャリングする。次
に、リクエストがスケルトン31にディスパッチされ、
スケルトンがそのリクエストを、サーバントオブジェク
ト78によって要求されるインプリメンテーション固有
フォーマットに変換する。上記のように、スケルトン
は、静的スケルトンでも動的スケルトンでもよい。
【0030】一般に、リモートリクエストは、上記のよ
うに、クライアント側及びサーバ側を通じて送られなけ
ればならない。メソッド呼び出し62が受け取られる
と、リクエストをマーシャリングしてそれを別のドメイ
ンに送る準備を行うトランスポート層38内のトランス
ポートメカニズムを選択する前に、メソッドテーブルデ
ィスパッチ層24を用いて適切なサブコントラクトが識
別される。マーシャリングされたリクエストは、ハード
ウェア70を介してサーバ側に送られ、そこでそのリク
エストがトランスポート層38の一部であるエンドポイ
ント上で受け取られる。適切なエンドポイントがワイヤ
を通じて送られた情報を受け取り、情報がトランスポー
ト層38からサブコントラクト層36にディスパッチさ
れるので、受け取った情報を少なくとも部分的にアンマ
ーシャリングする機能が提供される。次に、サブコント
ラクトは、そのリクエストをスケルトン31にディスパ
ッチし、スケルトンはそのリクエストを、サーバントオ
ブジェクト78によって要求される固有のフォーマット
に変換する。この経路を矢印77で示すが、これはリモ
ート及びローカルリクエストが共に取り得る経路であ
る。
うに、クライアント側及びサーバ側を通じて送られなけ
ればならない。メソッド呼び出し62が受け取られる
と、リクエストをマーシャリングしてそれを別のドメイ
ンに送る準備を行うトランスポート層38内のトランス
ポートメカニズムを選択する前に、メソッドテーブルデ
ィスパッチ層24を用いて適切なサブコントラクトが識
別される。マーシャリングされたリクエストは、ハード
ウェア70を介してサーバ側に送られ、そこでそのリク
エストがトランスポート層38の一部であるエンドポイ
ント上で受け取られる。適切なエンドポイントがワイヤ
を通じて送られた情報を受け取り、情報がトランスポー
ト層38からサブコントラクト層36にディスパッチさ
れるので、受け取った情報を少なくとも部分的にアンマ
ーシャリングする機能が提供される。次に、サブコント
ラクトは、そのリクエストをスケルトン31にディスパ
ッチし、スケルトンはそのリクエストを、サーバントオ
ブジェクト78によって要求される固有のフォーマット
に変換する。この経路を矢印77で示すが、これはリモ
ート及びローカルリクエストが共に取り得る経路であ
る。
【0031】しかしながら、クライアントとサーバがロ
ーカルプロセスにある場合、すなわちクライアントとサ
ーバが共に同一プロセスにある場合、上記の矢印77で
示される経路の使用は必要以上に複雑である。クライア
ントとサーバが同一プロセスにあることが分かっていれ
ば、サービスのリクエストの起動経路、すなわち流れ経
路(flow path)を短縮することができる。オブジェク
トリファレンスを作成するときにローカルプロセスが識
別されると、クライアントであるものから同一ホスト上
のサーバにリクエストを送るために、短縮流れ経路、つ
まり矢印75及び76で示される経路を取ることができ
る。矢印76で示される経路を取る可能性の方が大き
い。というのは、それが適切なサブコントラクトを識別
するためにサブコントラクト層36を使用しているから
である。しかしながら、適切なサブコントラクトをはっ
きり識別する必要のない状況では矢印75で示される経
路を取ることもできる。
ーカルプロセスにある場合、すなわちクライアントとサ
ーバが共に同一プロセスにある場合、上記の矢印77で
示される経路の使用は必要以上に複雑である。クライア
ントとサーバが同一プロセスにあることが分かっていれ
ば、サービスのリクエストの起動経路、すなわち流れ経
路(flow path)を短縮することができる。オブジェク
トリファレンスを作成するときにローカルプロセスが識
別されると、クライアントであるものから同一ホスト上
のサーバにリクエストを送るために、短縮流れ経路、つ
まり矢印75及び76で示される経路を取ることができ
る。矢印76で示される経路を取る可能性の方が大き
い。というのは、それが適切なサブコントラクトを識別
するためにサブコントラクト層36を使用しているから
である。しかしながら、適切なサブコントラクトをはっ
きり識別する必要のない状況では矢印75で示される経
路を取ることもできる。
【0032】ここで、図3を使って、オブジェクトリフ
ァレンスの一形態を説明する。当業者にはよく知られて
いるように、オブジェクトリファレンスは、それらが任
意の所定時点で占めているプロセス内の位置によって様
々な形を取ることができる。しかしながら、背景とし
て、低オーバーヘッドのオブジェクトアダプタを利用す
るシステムで使用するための代表的なオブジェクトリフ
ァレンスを図3に示す。ここで示されるインプリメンテ
ーションでは、オブジェクトリファレンス150は、ホ
スト識別子152、ポート指定(port designation)1
54、およびオブジェクトキー156を含む。オブジェ
クトキー156は、サブコントラクト識別子158、サ
ーバ識別子160、インプリメンテーション識別子16
2、およびユーザーキー164を含む。ホスト識別子1
52は、ネットワーク内の特定のコンピュータを示し、
ポート指定154は、通信用に使用すべき選ばれたコン
ピュータのポートを識別する。オブジェクトキー156
は、望ましいサーバントオブジェクトをホストマシン上
に配置するために使用される別の識別用情報を提供す
る。
ァレンスの一形態を説明する。当業者にはよく知られて
いるように、オブジェクトリファレンスは、それらが任
意の所定時点で占めているプロセス内の位置によって様
々な形を取ることができる。しかしながら、背景とし
て、低オーバーヘッドのオブジェクトアダプタを利用す
るシステムで使用するための代表的なオブジェクトリフ
ァレンスを図3に示す。ここで示されるインプリメンテ
ーションでは、オブジェクトリファレンス150は、ホ
スト識別子152、ポート指定(port designation)1
54、およびオブジェクトキー156を含む。オブジェ
クトキー156は、サブコントラクト識別子158、サ
ーバ識別子160、インプリメンテーション識別子16
2、およびユーザーキー164を含む。ホスト識別子1
52は、ネットワーク内の特定のコンピュータを示し、
ポート指定154は、通信用に使用すべき選ばれたコン
ピュータのポートを識別する。オブジェクトキー156
は、望ましいサーバントオブジェクトをホストマシン上
に配置するために使用される別の識別用情報を提供す
る。
【0033】サーバ識別子160は、サーバントオブジ
ェクトが常駐する特定のプロセスやプログラムを指定
し、一方、ユーザーキー164は、サーバ識別子160
によって指定されたプロセス内にサーバントを配置する
ために使用される固有の数または文字列である。サブコ
ントラクト識別子158は、特定サブコントラクトのプ
ロトコル及びその関連サービスをサーバントと共に生成
するために使用され、インプリメンテーション識別子1
62は、そのサーバントオブジェクトと共に使用すべき
インタフェースのインプリメンテーションを指定する。
ェクトが常駐する特定のプロセスやプログラムを指定
し、一方、ユーザーキー164は、サーバ識別子160
によって指定されたプロセス内にサーバントを配置する
ために使用される固有の数または文字列である。サブコ
ントラクト識別子158は、特定サブコントラクトのプ
ロトコル及びその関連サービスをサーバントと共に生成
するために使用され、インプリメンテーション識別子1
62は、そのサーバントオブジェクトと共に使用すべき
インタフェースのインプリメンテーションを指定する。
【0034】当業者にはよく理解されるように、別々の
プロセスに呼び出しを受け渡すときは、異なるドメイン
への転送用の呼び出しの各エレメントをコード化するた
めに使用すべきマーシャル関数を識別することが必要で
ある。既に指摘したように、オブジェクトリファレンス
をマーシャリングするために使用されるマーシャリング
関数は、そのオブジェクトリファレンスのタイプに依存
する。同様に、オブジェクトリファレンスを別々のプロ
セスから受け取るときは、アンマーシャリング関数を識
別して、異なるドメインから受け取られたオブジェクト
リファレンスをデコードするために使用することが必要
である。異なるタイプのオブジェクトリファレンスは、
一般に、異なるタイプのマーシャル及びアンマーシャル
関数に関連付けられる。例えば、単純な整数である引
数、すなわち「整数」型の引数をマーシャリングおよび
アンマーシャリングするために使用されるマーシャル及
びアンマーシャル関数は、文字列、すなわち「文字列」
型の引数を扱うために使用されるマーシャル及びアンマ
ーシャル関数とは異なる。同様に、文字列型の引数を扱
うために使用されるマーシャル及びアンマーシャル関数
は、配列(array)等を扱うために使用されるマーシャ
ル及びアンマーシャル関数とは異なる。
プロセスに呼び出しを受け渡すときは、異なるドメイン
への転送用の呼び出しの各エレメントをコード化するた
めに使用すべきマーシャル関数を識別することが必要で
ある。既に指摘したように、オブジェクトリファレンス
をマーシャリングするために使用されるマーシャリング
関数は、そのオブジェクトリファレンスのタイプに依存
する。同様に、オブジェクトリファレンスを別々のプロ
セスから受け取るときは、アンマーシャリング関数を識
別して、異なるドメインから受け取られたオブジェクト
リファレンスをデコードするために使用することが必要
である。異なるタイプのオブジェクトリファレンスは、
一般に、異なるタイプのマーシャル及びアンマーシャル
関数に関連付けられる。例えば、単純な整数である引
数、すなわち「整数」型の引数をマーシャリングおよび
アンマーシャリングするために使用されるマーシャル及
びアンマーシャル関数は、文字列、すなわち「文字列」
型の引数を扱うために使用されるマーシャル及びアンマ
ーシャル関数とは異なる。同様に、文字列型の引数を扱
うために使用されるマーシャル及びアンマーシャル関数
は、配列(array)等を扱うために使用されるマーシャ
ル及びアンマーシャル関数とは異なる。
【0035】分散オブジェクト指向システム、すなわち
分散オペレーティング環境におけるオペレーションの実
行に伴うオーバーヘッドを、システムの性能を損なうこ
となく比較的低いレベルに保つことは、システムにおけ
る総合効率の然るべきレベルを提供するために重要な設
計目標である。オペレーションの実行に伴うオーバーヘ
ッドを削減する一つの方法は、引数としてターゲットオ
ブジェクトリファレンスに受け渡されるオブジェクトリ
ファレンスをそれぞれマーシャリングまたはアンマーシ
ャリングするために使用すべき適切な関数をすべてのタ
イプのマーシャル関数やアンマーシャリング関数を探索
することにより発見する必要をなくすことである。引数
オブジェクトリファレンスに関連付けられたクライアン
ト表現のマーシャルメソッドを使用することによって、
適切なマーシャルメソッドを求める包括的な探索を回避
することができる。従って、マーシャルメソッドの探索
に伴うパフォーマンスオーバーヘッドは、除去されない
までも削減することが可能である。図1を参照して上述
した分散オブジェクト指向システムでは、サブコントラ
クトは、各サブコントラクトがそれに関連付けられたア
ンマーシャルメソッドを持つので、引数オブジェクトリ
ファレンスをアンマーシャリングするために使用すべき
適切なアンマーシャルメソッドの識別に伴うパフォーマ
ンスオーバーヘッドを削減できるようになる。引数オブ
ジェクトリファレンスに関連付けられたサブコントラク
トを識別することによって、引数オブジェクトリファレ
ンスのアンマーシャリングに使用するための適切なアン
マーシャルメソッドを明確に識別することができる。一
般に、分散オブジェクト指向システムの総合効率は、マ
ーシャリング及びアンマーシャリングフレームワークを
起動することによって改善することができる。このフレ
ームワークは、引数オブジェクトリファレンスをそれぞ
れマーシャリング及びアンマーシャリングする際に使用
するためのマーシャル及びアンマーシャルメソッドの探
索に伴うパフォーマンスオーバーヘッドを削減する。
分散オペレーティング環境におけるオペレーションの実
行に伴うオーバーヘッドを、システムの性能を損なうこ
となく比較的低いレベルに保つことは、システムにおけ
る総合効率の然るべきレベルを提供するために重要な設
計目標である。オペレーションの実行に伴うオーバーヘ
ッドを削減する一つの方法は、引数としてターゲットオ
ブジェクトリファレンスに受け渡されるオブジェクトリ
ファレンスをそれぞれマーシャリングまたはアンマーシ
ャリングするために使用すべき適切な関数をすべてのタ
イプのマーシャル関数やアンマーシャリング関数を探索
することにより発見する必要をなくすことである。引数
オブジェクトリファレンスに関連付けられたクライアン
ト表現のマーシャルメソッドを使用することによって、
適切なマーシャルメソッドを求める包括的な探索を回避
することができる。従って、マーシャルメソッドの探索
に伴うパフォーマンスオーバーヘッドは、除去されない
までも削減することが可能である。図1を参照して上述
した分散オブジェクト指向システムでは、サブコントラ
クトは、各サブコントラクトがそれに関連付けられたア
ンマーシャルメソッドを持つので、引数オブジェクトリ
ファレンスをアンマーシャリングするために使用すべき
適切なアンマーシャルメソッドの識別に伴うパフォーマ
ンスオーバーヘッドを削減できるようになる。引数オブ
ジェクトリファレンスに関連付けられたサブコントラク
トを識別することによって、引数オブジェクトリファレ
ンスのアンマーシャリングに使用するための適切なアン
マーシャルメソッドを明確に識別することができる。一
般に、分散オブジェクト指向システムの総合効率は、マ
ーシャリング及びアンマーシャリングフレームワークを
起動することによって改善することができる。このフレ
ームワークは、引数オブジェクトリファレンスをそれぞ
れマーシャリング及びアンマーシャリングする際に使用
するためのマーシャル及びアンマーシャルメソッドの探
索に伴うパフォーマンスオーバーヘッドを削減する。
【0036】次に、図4を参照して、本発明の一実施形
態に係るオブジェクトの起動方法を説明する。この図に
は、invokeメソッドに対する呼び出しがなされたときに
発生するステップが示されている。始めに、オブジェク
トリファレンスを使用する呼び出し(call)またはリク
エストが、クライアントによって受け取られる。この呼
び出しは任意の適切なコンピュータ言語でよいが、本実
施形態では、この呼び出しはC++呼び出しである。本
実施形態のオブジェクトリファレンスは、ファットポイ
ンタである。ファットポインタは「大きな」ポインタ、
あるいはポインタ構造と見做されるが、それは少なくと
も2つの「ノーマル」ポインタを含む。ファットポイン
タは、CORBAオブジェクトリファレンスと見做すこ
ともできる。2つの「ノーマル」ポインタを持つファッ
トポインタでは、ファットポインタは、通常、8バイト
を持つが、ノーマルポインタは、通常、それぞれが4バ
イトを持つ。ファットポインタは、それぞれがノーマル
ポインタである表現ポインタ“rep”およびメソッドテ
ーブルポインタ、すなわちmテーブルポインタ、から構
成される。表現ポインタは、クライアント表現(client
representation)、つまりクライアント“rep”を指し
ており、クライアント上のサーバントオブジェクトを表
すサブコントラクトオブジェクトへのポインタであると
見做すことができる。サブコントラクトオブジェクト
は、クライアントからサーバントを起動(invoke)する
ために必要な特徴と機能(functionality)を提供す
る。クライアント表現は、ORBオブジェクトを表して
おり、このオブジェクトに関連付けられたサブコントラ
クトのクライアント側の機能と特徴を実装するために使
用でき、このオブジェクトに対するオブジェクトリファ
レンスを引数としてマーシャリングするような関数(fu
nction)を含んでいる。
態に係るオブジェクトの起動方法を説明する。この図に
は、invokeメソッドに対する呼び出しがなされたときに
発生するステップが示されている。始めに、オブジェク
トリファレンスを使用する呼び出し(call)またはリク
エストが、クライアントによって受け取られる。この呼
び出しは任意の適切なコンピュータ言語でよいが、本実
施形態では、この呼び出しはC++呼び出しである。本
実施形態のオブジェクトリファレンスは、ファットポイ
ンタである。ファットポインタは「大きな」ポインタ、
あるいはポインタ構造と見做されるが、それは少なくと
も2つの「ノーマル」ポインタを含む。ファットポイン
タは、CORBAオブジェクトリファレンスと見做すこ
ともできる。2つの「ノーマル」ポインタを持つファッ
トポインタでは、ファットポインタは、通常、8バイト
を持つが、ノーマルポインタは、通常、それぞれが4バ
イトを持つ。ファットポインタは、それぞれがノーマル
ポインタである表現ポインタ“rep”およびメソッドテ
ーブルポインタ、すなわちmテーブルポインタ、から構
成される。表現ポインタは、クライアント表現(client
representation)、つまりクライアント“rep”を指し
ており、クライアント上のサーバントオブジェクトを表
すサブコントラクトオブジェクトへのポインタであると
見做すことができる。サブコントラクトオブジェクト
は、クライアントからサーバントを起動(invoke)する
ために必要な特徴と機能(functionality)を提供す
る。クライアント表現は、ORBオブジェクトを表して
おり、このオブジェクトに関連付けられたサブコントラ
クトのクライアント側の機能と特徴を実装するために使
用でき、このオブジェクトに対するオブジェクトリファ
レンスを引数としてマーシャリングするような関数(fu
nction)を含んでいる。
【0037】ステップ100では、呼び出されたメソッ
ドが、ファットポインタによって指示されたmテーブル
に配置される。呼び出されたメソッドがローカルメソッ
ドである場合、ファットポインタによって指示されるm
テーブルはローカルmテーブルである。同様に、呼び出
されたメソッドがリモートメソッドである場合、ファッ
トポインタによって指示されるmテーブルはリモートm
テーブルである。ステップ105では、オブジェクトリ
ファレンス(本実施形態ではファットポインタ)及び呼
び出しに対する引数によって識別されたクライアント表
現を用いて指示された関数に対する呼び出しが行なわれ
る。関数が呼び出された後、プロセスコントロールは、
指示された関数がローカルプロセスにあるかリモートプ
ロセスにあるかによって、異なる関数に分岐する。指示
された関数がローカルプロセスにある場合、プロセスコ
ントロールはステップ110に進み、そこでローカルス
タブ関数(local stub function)が実行される。この
明細書では、「ローカルスタブ関数」を指すために用語
「ローカルスタブ」が使用され、用語「リモートスタ
ブ」は「リモートスタブ関数(remote stub functio
n)」を指すために使用される。ローカルスタブがステ
ップ110で実行された後、プロセスはステップ120
の関数呼び出しから戻る。ファットポインタによって指
示された関数がリモートプロセスにあってローカルプロ
セスにない場合、プロセスコントロールは、ステップ1
05で関数が呼び出された後、ステップ115に進む。
ステップ115ではリモートスタブが実行される。リモ
ートスタブを実行するプロセスは以下で更に詳しく説明
する。リモートスタブがステップ115で実行された
後、プロセスコントロールは、この関数呼び出しから戻
るステップ120に進む。
ドが、ファットポインタによって指示されたmテーブル
に配置される。呼び出されたメソッドがローカルメソッ
ドである場合、ファットポインタによって指示されるm
テーブルはローカルmテーブルである。同様に、呼び出
されたメソッドがリモートメソッドである場合、ファッ
トポインタによって指示されるmテーブルはリモートm
テーブルである。ステップ105では、オブジェクトリ
ファレンス(本実施形態ではファットポインタ)及び呼
び出しに対する引数によって識別されたクライアント表
現を用いて指示された関数に対する呼び出しが行なわれ
る。関数が呼び出された後、プロセスコントロールは、
指示された関数がローカルプロセスにあるかリモートプ
ロセスにあるかによって、異なる関数に分岐する。指示
された関数がローカルプロセスにある場合、プロセスコ
ントロールはステップ110に進み、そこでローカルス
タブ関数(local stub function)が実行される。この
明細書では、「ローカルスタブ関数」を指すために用語
「ローカルスタブ」が使用され、用語「リモートスタ
ブ」は「リモートスタブ関数(remote stub functio
n)」を指すために使用される。ローカルスタブがステ
ップ110で実行された後、プロセスはステップ120
の関数呼び出しから戻る。ファットポインタによって指
示された関数がリモートプロセスにあってローカルプロ
セスにない場合、プロセスコントロールは、ステップ1
05で関数が呼び出された後、ステップ115に進む。
ステップ115ではリモートスタブが実行される。リモ
ートスタブを実行するプロセスは以下で更に詳しく説明
する。リモートスタブがステップ115で実行された
後、プロセスコントロールは、この関数呼び出しから戻
るステップ120に進む。
【0038】次に図5を参照して、本発明の一実施形態
に係るリモートスタブの実行方法を説明する。すなわ
ち、図4に関して、リモートスタブを実行するステップ
であるステップ115を更に詳しく説明する。引数のリ
ストとコンテキスト(使用される場合)によるリモート
スタブからの起動の開始は、ステップ190で始まる。
このステップは、return及びoutパラメタ、すなわちret
urn処理方向(processing direction)を持つパラメタ
及びout処理方向を持つパラメタ、の記憶領域(storag
e)、つまりメモリ、の割当てである。コンテキスト
は、一般に、起動すべきメソッドに関連する情報を含む
関連文字列の配列である。ある実施形態、例えばC++
の実施形態では、記憶領域の割当てステップ190にお
いて、記憶領域はinout処理方向を持つパラメタに対し
てコーラー(caller)によって予め割り当てられている
ので、inout処理方向を持つパラメタに対する記憶領域
の割当てはない。記憶領域が割り当てられた後、in処理
方向を持つパラメタ、すなわちinパラメタがステップ1
92で設定される。invokeメソッドが呼び出される度毎
に、リモートスタブからの起動で使用される引数に関連
付けられたinパラメタを設定しなければならない。inパ
ラメタの設定は、リモートスタブからの起動の開始時に
使用される引数のリストで識別されたIN_PARAM
によって指示されるパラメタ記憶場所ディスクリプタ
(parameter storage location descriptor)の構築を
必要とする。パラメタ記憶場所ディスクリプタは、パラ
メタの常駐する記憶域へのポインタを含む。inパラメタ
が設定された後、outパラメタがreturnパラメタと共に
ステップ194で設定される。すなわち、outおよびret
urnパラメタ記憶場所へのポインタを含むパラメタ記憶
場所ディスクリプタが構築される。outパラメタの設定
に使用されるメソッドは、inパラメタの設定に使用され
るメソッドと同様である。
に係るリモートスタブの実行方法を説明する。すなわ
ち、図4に関して、リモートスタブを実行するステップ
であるステップ115を更に詳しく説明する。引数のリ
ストとコンテキスト(使用される場合)によるリモート
スタブからの起動の開始は、ステップ190で始まる。
このステップは、return及びoutパラメタ、すなわちret
urn処理方向(processing direction)を持つパラメタ
及びout処理方向を持つパラメタ、の記憶領域(storag
e)、つまりメモリ、の割当てである。コンテキスト
は、一般に、起動すべきメソッドに関連する情報を含む
関連文字列の配列である。ある実施形態、例えばC++
の実施形態では、記憶領域の割当てステップ190にお
いて、記憶領域はinout処理方向を持つパラメタに対し
てコーラー(caller)によって予め割り当てられている
ので、inout処理方向を持つパラメタに対する記憶領域
の割当てはない。記憶領域が割り当てられた後、in処理
方向を持つパラメタ、すなわちinパラメタがステップ1
92で設定される。invokeメソッドが呼び出される度毎
に、リモートスタブからの起動で使用される引数に関連
付けられたinパラメタを設定しなければならない。inパ
ラメタの設定は、リモートスタブからの起動の開始時に
使用される引数のリストで識別されたIN_PARAM
によって指示されるパラメタ記憶場所ディスクリプタ
(parameter storage location descriptor)の構築を
必要とする。パラメタ記憶場所ディスクリプタは、パラ
メタの常駐する記憶域へのポインタを含む。inパラメタ
が設定された後、outパラメタがreturnパラメタと共に
ステップ194で設定される。すなわち、outおよびret
urnパラメタ記憶場所へのポインタを含むパラメタ記憶
場所ディスクリプタが構築される。outパラメタの設定
に使用されるメソッドは、inパラメタの設定に使用され
るメソッドと同様である。
【0039】プロセスコントロールは、outパラメタを
設定するステップであるステップ194からステップ1
96に移り、そこでクライアント表現用のinvokeメソッ
ドに対する呼び出しが行なわれる。各クライアント表現
は、関連付けられたinvokeメソッドを持つ。クライアン
ト表現用のinvokeメソッドの呼び出しに関連するステッ
プを、図6を参照しながら以下で説明する。ステップ1
97では、ステップ196のinvokeメソッドに対する呼
び出しが例外となったか否かについて判定が行なわれ
る。例外が存在したと判定された場合、プロセスコント
ロールはステップ198に進み、そこで、ステップ19
0においてretureおよびoutパラメタの記憶のために割
り当てられたメモリが割当て解除される。この後、プロ
セスコントロールは、呼び出しの結果をinvokeメソッド
に返却する。例外が存在しなかったとステップ197で
判定された場合は、プロセスコントロールは単に呼び出
しの結果をinvokeメソッドに返却するだけである。或る
実施形態では、割り当てられたメモリは、呼び出しが返
却される前に解放される。別の実施形態では、割り当て
られたメモリは、呼び出しが返却された後、直ちに解放
される。
設定するステップであるステップ194からステップ1
96に移り、そこでクライアント表現用のinvokeメソッ
ドに対する呼び出しが行なわれる。各クライアント表現
は、関連付けられたinvokeメソッドを持つ。クライアン
ト表現用のinvokeメソッドの呼び出しに関連するステッ
プを、図6を参照しながら以下で説明する。ステップ1
97では、ステップ196のinvokeメソッドに対する呼
び出しが例外となったか否かについて判定が行なわれ
る。例外が存在したと判定された場合、プロセスコント
ロールはステップ198に進み、そこで、ステップ19
0においてretureおよびoutパラメタの記憶のために割
り当てられたメモリが割当て解除される。この後、プロ
セスコントロールは、呼び出しの結果をinvokeメソッド
に返却する。例外が存在しなかったとステップ197で
判定された場合は、プロセスコントロールは単に呼び出
しの結果をinvokeメソッドに返却するだけである。或る
実施形態では、割り当てられたメモリは、呼び出しが返
却される前に解放される。別の実施形態では、割り当て
られたメモリは、呼び出しが返却された後、直ちに解放
される。
【0040】次に図6を参照して、リモートスタブを使
用してクライアント表現のinvokeメソッドを呼び出す本
発明の一実施形態に係る方法を説明する。すなわち、図
5に関して、クライアント表現用のinvokeメソッドを呼
び出すステップであるステップ196を更に詳しく説明
する。このプロセスは、ステップ201で開始する。ス
テップ201では、リモートスタブが、複数のディスク
リプタ(descriptor)、すなわちメソッドディスクリプ
タ、起動ディスクリプタ、一又は複数のパラメタ記憶場
所ディスクリプタ、および例外ディスクリプタ、を引数
として用いてクライアント表現のinvokeメソッドを呼び
出す。言い換えると、リモートスタブは、引数としてデ
ィスクリプタを使用して適切なサブコントラクトを起動
する。ステップ202では、トランスポートが選択され
る。サブコントラクトがトランスポートを一つだけサポ
ートする場合は、そのトランスポートが選択される。サ
ブコントラクトが複数のトランスポートを持つ場合、そ
れらのトランスポートに関連付けられたメトリクス(met
rics) が、選択すべき最も適切なトランスポートを指定
する情報を提供する。トランスポートが選択されると、
ステップ204でターゲットオブジェクトリファレンス
に基づいてエンドポイントが識別される。エンドポイン
トは「ポートホール(porthole)」、すなわちコネクシ
ョンであり、起動の受け取りとメッセージの送付のため
に使用される。エンドポイントの識別は、クライアント
のトランスポート層又はクライアントのサブコントラク
ト層のいずれでも起こり得る。エンドポイントが識別さ
れた後、ステップ202で選択されたトランスポートに
適したマーシャルバッファがステップ206で作成され
る。マーシャルバッファの選択は、クライアント側のト
ランスポート層で起こる。マーシャルバッファは、基本
的に、輸送すべき情報をカプセル化するネットワークバ
ッファであり、輸送に適した原子データ(atomic dat
a)をコード化する能力がある。マーシャルバッファ
は、それが実行するプロトコルデータのコード化のタイ
プを指定する識別子またはタグを持つ。すなわち、マー
シャルバッファは、トランスポート、あるいはトランス
ポートプロトコルに固有のものである。これは、トラン
スポートが、通常、マーシャルバッファによって実行さ
れるデータコード化のタイプを決定する特別なプロトコ
ルを意味するからである。多くのトランスポートが同一
プロトコルを持つことができ、従って、同一マーシャル
バッファタイプを使用することができる。サブコントラ
クトは、選択されたトランスポートに適したマーシャル
バッファを識別子によって識別する能力を有している。
用してクライアント表現のinvokeメソッドを呼び出す本
発明の一実施形態に係る方法を説明する。すなわち、図
5に関して、クライアント表現用のinvokeメソッドを呼
び出すステップであるステップ196を更に詳しく説明
する。このプロセスは、ステップ201で開始する。ス
テップ201では、リモートスタブが、複数のディスク
リプタ(descriptor)、すなわちメソッドディスクリプ
タ、起動ディスクリプタ、一又は複数のパラメタ記憶場
所ディスクリプタ、および例外ディスクリプタ、を引数
として用いてクライアント表現のinvokeメソッドを呼び
出す。言い換えると、リモートスタブは、引数としてデ
ィスクリプタを使用して適切なサブコントラクトを起動
する。ステップ202では、トランスポートが選択され
る。サブコントラクトがトランスポートを一つだけサポ
ートする場合は、そのトランスポートが選択される。サ
ブコントラクトが複数のトランスポートを持つ場合、そ
れらのトランスポートに関連付けられたメトリクス(met
rics) が、選択すべき最も適切なトランスポートを指定
する情報を提供する。トランスポートが選択されると、
ステップ204でターゲットオブジェクトリファレンス
に基づいてエンドポイントが識別される。エンドポイン
トは「ポートホール(porthole)」、すなわちコネクシ
ョンであり、起動の受け取りとメッセージの送付のため
に使用される。エンドポイントの識別は、クライアント
のトランスポート層又はクライアントのサブコントラク
ト層のいずれでも起こり得る。エンドポイントが識別さ
れた後、ステップ202で選択されたトランスポートに
適したマーシャルバッファがステップ206で作成され
る。マーシャルバッファの選択は、クライアント側のト
ランスポート層で起こる。マーシャルバッファは、基本
的に、輸送すべき情報をカプセル化するネットワークバ
ッファであり、輸送に適した原子データ(atomic dat
a)をコード化する能力がある。マーシャルバッファ
は、それが実行するプロトコルデータのコード化のタイ
プを指定する識別子またはタグを持つ。すなわち、マー
シャルバッファは、トランスポート、あるいはトランス
ポートプロトコルに固有のものである。これは、トラン
スポートが、通常、マーシャルバッファによって実行さ
れるデータコード化のタイプを決定する特別なプロトコ
ルを意味するからである。多くのトランスポートが同一
プロトコルを持つことができ、従って、同一マーシャル
バッファタイプを使用することができる。サブコントラ
クトは、選択されたトランスポートに適したマーシャル
バッファを識別子によって識別する能力を有している。
【0041】選択されたトランスポートに適したマーシ
ャルバッファが作成された後、ステップ208で、ター
ゲットオブジェクトリファレンス及びオペレーション、
すなわちメソッド記述(method description)、がマー
シャリングされる。他の方法では導き得ないターゲット
オブジェクトリファレンスの部分だけがこのステップで
マーシャリングされる。通常は、オブジェクトキーだけ
がマーシャリングされる。ステップ209では、コンテ
キストが使用された場合、そのコンテキストがマーシャ
リングされる。invokeメソッドに対して重要なコンテキ
スト内の情報のみが選出される。コンテキストをマーシ
ャリングするステップから、プロセスコントロールはス
テップ210に移り、そこで、引数がディスクリプタを
用いてマーシャリングされる。オブジェクトリファレン
スが引数の一つとして受け渡される場合、このオブジェ
クトリファレンスは、ターゲットオブジェクトリファレ
ンスに関連付けられたクライアント表現によってマーシ
ャリングされる。引数オブジェクトリファレンスをマー
シャリングするプロセスを、図8を参照して後述する。
コンテキストと引数がマーシャリングされる順序は、逆
にすることもできる。コンテキストが使用されない場合
には、ステップ209は全く発生しなくても良い。とい
うのは、コンテキストが使用されない場合、それをマー
シャリングする必要が全くないからである。
ャルバッファが作成された後、ステップ208で、ター
ゲットオブジェクトリファレンス及びオペレーション、
すなわちメソッド記述(method description)、がマー
シャリングされる。他の方法では導き得ないターゲット
オブジェクトリファレンスの部分だけがこのステップで
マーシャリングされる。通常は、オブジェクトキーだけ
がマーシャリングされる。ステップ209では、コンテ
キストが使用された場合、そのコンテキストがマーシャ
リングされる。invokeメソッドに対して重要なコンテキ
スト内の情報のみが選出される。コンテキストをマーシ
ャリングするステップから、プロセスコントロールはス
テップ210に移り、そこで、引数がディスクリプタを
用いてマーシャリングされる。オブジェクトリファレン
スが引数の一つとして受け渡される場合、このオブジェ
クトリファレンスは、ターゲットオブジェクトリファレ
ンスに関連付けられたクライアント表現によってマーシ
ャリングされる。引数オブジェクトリファレンスをマー
シャリングするプロセスを、図8を参照して後述する。
コンテキストと引数がマーシャリングされる順序は、逆
にすることもできる。コンテキストが使用されない場合
には、ステップ209は全く発生しなくても良い。とい
うのは、コンテキストが使用されない場合、それをマー
シャリングする必要が全くないからである。
【0042】コンテキストと引数がマーシャリングされ
た後、プロセスコントロールはステップ212に進み、
そこで、マーシャルバッファの内容が、選択されたトラ
ンスポートによって、識別されたエンドポイントまで伝
送される。選択されたトランスポートのほとんどについ
て、このステップでは、マーシャルバッファ内の内容が
ワイヤを介して送られる。伝送ステップ212は、クラ
イアントからサーバへの通信のステップとして解釈する
ことができる。伝送ステップ212から、プロセスコン
トロールはステップ214に移り、そこでクライアント
はサーバからの返信(reply)を待つ。ステップ216
では、クライアントがサーバからの返信を受け取り、そ
の返信をマーシャルバッファ内でカプセル化する。返信
がリクエストよりも大きい場合、返信をカプセル化する
ために新しいマーシャルバッファが作成される。しかし
ながら、返信がリクエストより大きくない場合、ステッ
プ206で作成されたマーシャルバッファを用いてステ
ップ216で返信がカプセル化される。
た後、プロセスコントロールはステップ212に進み、
そこで、マーシャルバッファの内容が、選択されたトラ
ンスポートによって、識別されたエンドポイントまで伝
送される。選択されたトランスポートのほとんどについ
て、このステップでは、マーシャルバッファ内の内容が
ワイヤを介して送られる。伝送ステップ212は、クラ
イアントからサーバへの通信のステップとして解釈する
ことができる。伝送ステップ212から、プロセスコン
トロールはステップ214に移り、そこでクライアント
はサーバからの返信(reply)を待つ。ステップ216
では、クライアントがサーバからの返信を受け取り、そ
の返信をマーシャルバッファ内でカプセル化する。返信
がリクエストよりも大きい場合、返信をカプセル化する
ために新しいマーシャルバッファが作成される。しかし
ながら、返信がリクエストより大きくない場合、ステッ
プ206で作成されたマーシャルバッファを用いてステ
ップ216で返信がカプセル化される。
【0043】返信がマーシャルバッファ内でカプセル化
されると、トランスポート固有ヘッダは、ステップ22
0において、マーシャルバッファ内にカプセル化された
返信からアンマーシャリングされる。トランスポート固
有ヘッダは、ステップ202で選択されたトランスポー
トに関係する情報を含む。他のヘッダには、リクエスト
識別子を指定する引数、及びヘッダを識別するヘッダが
含まれる。マーシャルバッファに関連付けられたポイン
タを使って、読取り中のヘッダの始めと終わりを判別す
ることができる。このポインタは、データがマーシャル
バッファからデコードされるにつれて、マーシャルバッ
ファ内でバイト間を移動する。トランスポート固有ヘッ
ダが返信からアンマーシャリングされた後、プロセスコ
ントロールはステップ222に進む。ステップ222で
は、ディスクリプタを用いて引数が当初の呼び出し(or
iginal call)からアンマーシャリングされる。引数が
引数オブジェクトリファレンスを含む場合、その引数オ
ブジェクトリファレンスは、起動ディスクリプタに関連
付けられたOUT_PARAMディスクリプタによって
提供される情報を用いてアンマーシャリングすることが
できる。引数オブジェクトリファレンスのアンマーシャ
リングについては、図9を参照しながら後述する。引数
がディスクリプタを用いてアンマーシャリングされた
後、プロセスはリモートスタブに戻る。
されると、トランスポート固有ヘッダは、ステップ22
0において、マーシャルバッファ内にカプセル化された
返信からアンマーシャリングされる。トランスポート固
有ヘッダは、ステップ202で選択されたトランスポー
トに関係する情報を含む。他のヘッダには、リクエスト
識別子を指定する引数、及びヘッダを識別するヘッダが
含まれる。マーシャルバッファに関連付けられたポイン
タを使って、読取り中のヘッダの始めと終わりを判別す
ることができる。このポインタは、データがマーシャル
バッファからデコードされるにつれて、マーシャルバッ
ファ内でバイト間を移動する。トランスポート固有ヘッ
ダが返信からアンマーシャリングされた後、プロセスコ
ントロールはステップ222に進む。ステップ222で
は、ディスクリプタを用いて引数が当初の呼び出し(or
iginal call)からアンマーシャリングされる。引数が
引数オブジェクトリファレンスを含む場合、その引数オ
ブジェクトリファレンスは、起動ディスクリプタに関連
付けられたOUT_PARAMディスクリプタによって
提供される情報を用いてアンマーシャリングすることが
できる。引数オブジェクトリファレンスのアンマーシャ
リングについては、図9を参照しながら後述する。引数
がディスクリプタを用いてアンマーシャリングされた
後、プロセスはリモートスタブに戻る。
【0044】分散オブジェクト指向システムのサーバ側
は、エンドポイントで受け取ったリクエストに応答す
る。リクエストは、通常、マーシャルバッファのコンテ
ンツ(contents)として伝送される。マーシャルバッフ
ァのコンテンツは、それを受け取るエンドポイントまで
ワイヤで伝送することができる。図2に関して上述した
ように、2つのタイプのエンドポイントとは、デディケ
ーテッドエンドポイント(dedicated end point)とク
ラスタエンドポイント(cluster end point)である。
デディケーテッド、つまり単一のエンドポイントは、単
一のサブコントラクトに関連付けられている。従って、
デディケーテッドエンドポイントは、常に、どのサブコ
ントラクトを利用すべきかを「知って」いる。デディケ
ーテッドエンドポイントを作成するのに必要な機能はト
ランスポート層によって提供されるが、デディケーテッ
ドエンドポイント自体はサブコントラクト層によって実
際に作成される。それに対して、クラスタエンドポイン
トは、一つ以上のサブコントラクトによって使用され、
トランスポート層内で作成される。サブコントラクト層
は、クラスタエンドポイントに関連付けられるべきトラ
ンスポート固有クロージャ(transport specific closu
re)を作成する。クロージャは、関数へのポインタと、
データエレメントへのポインタであるクッキーへのポイ
ンタと、を含む構造体である。クラスタエンドポイント
の例は、ネットワークエンドポイントやTCP/IPエ
ンドポイントである。一般に、デディケーテッドエンド
ポイントは、その使用によって必要計算量が少なくなる
ので、クラスタエンドポイントよりも早く情報を受け取
って処理する。しかし、デディケーテッドエンドポイン
トの使用は、デマルチプレクスプロセス(demultiplexi
ng process)に要求されるよりも多くのリソースを使用
することになるので、リソースの節約のためにクラスタ
エンドポイントを使用してもよい。
は、エンドポイントで受け取ったリクエストに応答す
る。リクエストは、通常、マーシャルバッファのコンテ
ンツ(contents)として伝送される。マーシャルバッフ
ァのコンテンツは、それを受け取るエンドポイントまで
ワイヤで伝送することができる。図2に関して上述した
ように、2つのタイプのエンドポイントとは、デディケ
ーテッドエンドポイント(dedicated end point)とク
ラスタエンドポイント(cluster end point)である。
デディケーテッド、つまり単一のエンドポイントは、単
一のサブコントラクトに関連付けられている。従って、
デディケーテッドエンドポイントは、常に、どのサブコ
ントラクトを利用すべきかを「知って」いる。デディケ
ーテッドエンドポイントを作成するのに必要な機能はト
ランスポート層によって提供されるが、デディケーテッ
ドエンドポイント自体はサブコントラクト層によって実
際に作成される。それに対して、クラスタエンドポイン
トは、一つ以上のサブコントラクトによって使用され、
トランスポート層内で作成される。サブコントラクト層
は、クラスタエンドポイントに関連付けられるべきトラ
ンスポート固有クロージャ(transport specific closu
re)を作成する。クロージャは、関数へのポインタと、
データエレメントへのポインタであるクッキーへのポイ
ンタと、を含む構造体である。クラスタエンドポイント
の例は、ネットワークエンドポイントやTCP/IPエ
ンドポイントである。一般に、デディケーテッドエンド
ポイントは、その使用によって必要計算量が少なくなる
ので、クラスタエンドポイントよりも早く情報を受け取
って処理する。しかし、デディケーテッドエンドポイン
トの使用は、デマルチプレクスプロセス(demultiplexi
ng process)に要求されるよりも多くのリソースを使用
することになるので、リソースの節約のためにクラスタ
エンドポイントを使用してもよい。
【0045】次に図7を参照して、本発明の一実施形態
に従ってリクエストが特定の受取エンドポイント上で受
け取られたときに分散オブジェクト指向システムのサー
バ側で起こるステップを示すプロセスフローチャートを
説明する。受け取ったリクエストをカプセル化するた
め、リクエストに固有のマーシャルバッファがステップ
250で作成される。作成されるマーシャルバッファの
タイプは、リクエストを受取中のエンドポイントによっ
て決定される。エンドポイントタイプ及びターゲットオ
ブジェクトリファレンスに基づくサブコントラクトレベ
ルディスパッチルーチンがステップ252で選択され
る。サブコントラクトレベルディスパッチルーチンは、
トランスポート−サブコントラクトクロージャディスパ
ッチとしても知られている。関連サブコントラクト及び
トランスポートは、サブコントラクトレベルディスパッ
チルーチンを選択する際の要因でもある。例えば、サブ
コントラクトレベルディスパッチルーチンは、複数のサ
ブコントラクトを複数のクロージャに関連付けるエンド
ポイント固有ディスパッチレジストリの使用によって選
択することができる。ここで、各クロージャは、サブコ
ントラクトレベルディスパッチルーチンへのポインタを
含んでいる。サブコントラクトレベルディスパッチルー
チンがステップ252で選択された後、プロセスコント
ロールはステップ254に移り、そこで、ステップ25
2で選択されたサブコントラクトレベルディスパッチル
ーチンが呼び出される。ステップ250で作成されたマ
ーシャルバッファは、「クッキー」と共に、サブコント
ラクトレベルディスパッチルーチンへの呼び出しに受け
渡される。クッキーは、データエレメントへのポインタ
であり、クロージャ内に格納される。
に従ってリクエストが特定の受取エンドポイント上で受
け取られたときに分散オブジェクト指向システムのサー
バ側で起こるステップを示すプロセスフローチャートを
説明する。受け取ったリクエストをカプセル化するた
め、リクエストに固有のマーシャルバッファがステップ
250で作成される。作成されるマーシャルバッファの
タイプは、リクエストを受取中のエンドポイントによっ
て決定される。エンドポイントタイプ及びターゲットオ
ブジェクトリファレンスに基づくサブコントラクトレベ
ルディスパッチルーチンがステップ252で選択され
る。サブコントラクトレベルディスパッチルーチンは、
トランスポート−サブコントラクトクロージャディスパ
ッチとしても知られている。関連サブコントラクト及び
トランスポートは、サブコントラクトレベルディスパッ
チルーチンを選択する際の要因でもある。例えば、サブ
コントラクトレベルディスパッチルーチンは、複数のサ
ブコントラクトを複数のクロージャに関連付けるエンド
ポイント固有ディスパッチレジストリの使用によって選
択することができる。ここで、各クロージャは、サブコ
ントラクトレベルディスパッチルーチンへのポインタを
含んでいる。サブコントラクトレベルディスパッチルー
チンがステップ252で選択された後、プロセスコント
ロールはステップ254に移り、そこで、ステップ25
2で選択されたサブコントラクトレベルディスパッチル
ーチンが呼び出される。ステップ250で作成されたマ
ーシャルバッファは、「クッキー」と共に、サブコント
ラクトレベルディスパッチルーチンへの呼び出しに受け
渡される。クッキーは、データエレメントへのポインタ
であり、クロージャ内に格納される。
【0046】サブコントラクトレベルディスパッチルー
チンは、トランスポート及びサブコントラクトの双方に
固有のものである。サブコントラクトレベルディスパッ
チルーチンは、オブジェクト及び起動すべきメソッドを
決定するために、リクエストのヘッダをアンマーシャリ
ングする。通常、オブジェクトを決定するためには、オ
ブジェクトキーをリクエストヘッダからアンマーシャリ
ングしなければならない。サブコントラクトによって要
求される他の情報、例えばトランザクションやセキュリ
ティの情報もアンマーシャリングされる。サブコントラ
クトに適したサーバ起動オブジェクトは、起動すべきメ
ソッドに関する情報を含んでいる。
チンは、トランスポート及びサブコントラクトの双方に
固有のものである。サブコントラクトレベルディスパッ
チルーチンは、オブジェクト及び起動すべきメソッドを
決定するために、リクエストのヘッダをアンマーシャリ
ングする。通常、オブジェクトを決定するためには、オ
ブジェクトキーをリクエストヘッダからアンマーシャリ
ングしなければならない。サブコントラクトによって要
求される他の情報、例えばトランザクションやセキュリ
ティの情報もアンマーシャリングされる。サブコントラ
クトに適したサーバ起動オブジェクトは、起動すべきメ
ソッドに関する情報を含んでいる。
【0047】リクエストのヘッダのアンマーシャリング
に加えて、サブコントラクトレベルディスパッチルーチ
ンは、ヘッダからアンマーシャリングされたオブジェク
トキーを用いて適切なスケルトンディスパッチクロージ
ャを配置する。サブコントラクトレベルディスパッチル
ーチンは、起動すべきメソッドのスケルトンコードを実
行するスケルトンクロージャの中にそのメソッドを起動
する。このスケルトンメソッドは、起動ディスクリプタ
ポインタをサーバ起動オブジェクト内にセットすること
によって、パラメタタイピング情報を提供する。この起
動ディスクリプタは、起動に使用されるin及びoutパラ
メタを記述するディスクリプタに関連付けられている。
に加えて、サブコントラクトレベルディスパッチルーチ
ンは、ヘッダからアンマーシャリングされたオブジェク
トキーを用いて適切なスケルトンディスパッチクロージ
ャを配置する。サブコントラクトレベルディスパッチル
ーチンは、起動すべきメソッドのスケルトンコードを実
行するスケルトンクロージャの中にそのメソッドを起動
する。このスケルトンメソッドは、起動ディスクリプタ
ポインタをサーバ起動オブジェクト内にセットすること
によって、パラメタタイピング情報を提供する。この起
動ディスクリプタは、起動に使用されるin及びoutパラ
メタを記述するディスクリプタに関連付けられている。
【0048】スケルトンディスパッチメソッドは、関連
付けられたパラメタディスクリプタに供給された情報を
使って、サーバ起動オブジェクト上のアンマーシャルメ
ソッドを起動し、inパラメタをアンマーシャリングす
る。一部のinパラメタは、引数オブジェクトリファレン
スであっても良い。アンマーシャルメソッドが起動され
てinパラメタがアンマーシャリングされた後、サーバン
トオブジェクトの呼び出されたメソッド(called metho
d)が起動される。サーバントオブジェクトの呼び出さ
れたメソッドが正常に戻る場合、すなわち呼び出された
メソッドの起動に誤りがない場合、呼び出されたメソッ
ドは、サーバ起動オブジェクトのマーシャルメソッドを
起動する。この後、このマーシャルメソッドは、関連付
けられたreturnパラメタディスクリプタ及びoutパラメ
タディスクリプタに固有の任意のreturnパラメタ及びou
tパラメタをマーシャリングする。再度述べるが、retur
n及びoutパラメタの一部は、引数オブジェクトリファレ
ンスであっても良い。スケルトンディスパッチメソッド
は、サブコントラクトレベルディスパッチルーチンに戻
る。この後、このルーチンは、コーラー(caller)に戻
る前に、更に別のサブコントラクト固有処理を実行して
も良い。
付けられたパラメタディスクリプタに供給された情報を
使って、サーバ起動オブジェクト上のアンマーシャルメ
ソッドを起動し、inパラメタをアンマーシャリングす
る。一部のinパラメタは、引数オブジェクトリファレン
スであっても良い。アンマーシャルメソッドが起動され
てinパラメタがアンマーシャリングされた後、サーバン
トオブジェクトの呼び出されたメソッド(called metho
d)が起動される。サーバントオブジェクトの呼び出さ
れたメソッドが正常に戻る場合、すなわち呼び出された
メソッドの起動に誤りがない場合、呼び出されたメソッ
ドは、サーバ起動オブジェクトのマーシャルメソッドを
起動する。この後、このマーシャルメソッドは、関連付
けられたreturnパラメタディスクリプタ及びoutパラメ
タディスクリプタに固有の任意のreturnパラメタ及びou
tパラメタをマーシャリングする。再度述べるが、retur
n及びoutパラメタの一部は、引数オブジェクトリファレ
ンスであっても良い。スケルトンディスパッチメソッド
は、サブコントラクトレベルディスパッチルーチンに戻
る。この後、このルーチンは、コーラー(caller)に戻
る前に、更に別のサブコントラクト固有処理を実行して
も良い。
【0049】次に、図8を参照して、本発明の一実施形
態に係る引数オブジェクトリファレンスのマーシャリン
グ方法、すなわち図6のステップ210の一例を説明す
る。この例では、オブジェクトリファレンスは、ファッ
トポインタ、つまりメソッドテーブル(mテーブル)へ
のポインタとクライアント表現へのポインタとを持つデ
ュアルポインタ、である。invokeメソッドに対する呼び
出しの中の引数の一つまたは一部であるオブジェクトリ
ファレンスをマーシャリングするため、引数オブジェク
トリファレンス中のクライアント表現のマーシャルメソ
ッドが、引数として受け渡されるマーシャルバッファを
用いてステップ303で呼び出される。関連付けクライ
アント表現がサーバントオブジェクトのサブコントラク
トに固有なコードを用いて作成されることから、呼び出
されるマーシャルメソッドは、引数オブジェクトリファ
レンスに関連付けられたサブコントラクトに依存する。
異なるサブコントラクトによって作成された異なるクラ
イアント表現は、異なるマーシャルメソッドを持ち、各
サブコントラクトはそのマーシャリングされたオブジェ
クトリファレンスの中で異なる情報をコード化すること
ができる。この明細書では、用語「引数オブジェクトリ
ファレンス」は、引数であるオブジェクトリファレンス
を指すために使用されるが、用語「ターゲットオブジェ
クトリファレンス]は、起動すべきターゲットオブジェ
クトを識別するオブジェクトリファレンスを指すために
使用される。パラメタディスクリプタ及び他のディスク
リプタデータ構造、すなわちディスクリプタは、メソッ
ドディスクリプタ、起動ディスクリプタ、および例外記
憶場所ディスクリプタを含んでいる。
態に係る引数オブジェクトリファレンスのマーシャリン
グ方法、すなわち図6のステップ210の一例を説明す
る。この例では、オブジェクトリファレンスは、ファッ
トポインタ、つまりメソッドテーブル(mテーブル)へ
のポインタとクライアント表現へのポインタとを持つデ
ュアルポインタ、である。invokeメソッドに対する呼び
出しの中の引数の一つまたは一部であるオブジェクトリ
ファレンスをマーシャリングするため、引数オブジェク
トリファレンス中のクライアント表現のマーシャルメソ
ッドが、引数として受け渡されるマーシャルバッファを
用いてステップ303で呼び出される。関連付けクライ
アント表現がサーバントオブジェクトのサブコントラク
トに固有なコードを用いて作成されることから、呼び出
されるマーシャルメソッドは、引数オブジェクトリファ
レンスに関連付けられたサブコントラクトに依存する。
異なるサブコントラクトによって作成された異なるクラ
イアント表現は、異なるマーシャルメソッドを持ち、各
サブコントラクトはそのマーシャリングされたオブジェ
クトリファレンスの中で異なる情報をコード化すること
ができる。この明細書では、用語「引数オブジェクトリ
ファレンス」は、引数であるオブジェクトリファレンス
を指すために使用されるが、用語「ターゲットオブジェ
クトリファレンス]は、起動すべきターゲットオブジェ
クトを識別するオブジェクトリファレンスを指すために
使用される。パラメタディスクリプタ及び他のディスク
リプタデータ構造、すなわちディスクリプタは、メソッ
ドディスクリプタ、起動ディスクリプタ、および例外記
憶場所ディスクリプタを含んでいる。
【0050】マーシャルメソッドが起動された後、ステ
ップ306でマーシャルバッファタイプが識別される。
マーシャルバッファタイプは、マーシャルバッファ上の
“id”メソッドを起動することによって識別できる。
“id”メソッドは、マーシャルバッファタイプを取得
するために使用される。マーシャルバッファタイプが識
別された後、プロセスコントロールはステップ309に
移り、そこで、ステップ306で識別されたマーシャル
バッファタイプが、引数オブジェクトリファレンスに関
連付けられたサブコントラクトに知られたタイプか否か
が判定される。マーシャルバッファタイプは、サポート
されたプロトコル及び可能なオブジェクトリファレンス
コード化フォーマットの両者を指す。通常、マーシャル
バッファには、4つか5つのタイプがある。これらのタ
イプには、インターネットインタオペラブルプロトコル
(IIOP)トランスポート用に使用される共通データ
表現(CDR)タイプや、ドアトランスポート用に使用
されるドアタイプが含まれる。但し、これらに限定され
るわけではない。
ップ306でマーシャルバッファタイプが識別される。
マーシャルバッファタイプは、マーシャルバッファ上の
“id”メソッドを起動することによって識別できる。
“id”メソッドは、マーシャルバッファタイプを取得
するために使用される。マーシャルバッファタイプが識
別された後、プロセスコントロールはステップ309に
移り、そこで、ステップ306で識別されたマーシャル
バッファタイプが、引数オブジェクトリファレンスに関
連付けられたサブコントラクトに知られたタイプか否か
が判定される。マーシャルバッファタイプは、サポート
されたプロトコル及び可能なオブジェクトリファレンス
コード化フォーマットの両者を指す。通常、マーシャル
バッファには、4つか5つのタイプがある。これらのタ
イプには、インターネットインタオペラブルプロトコル
(IIOP)トランスポート用に使用される共通データ
表現(CDR)タイプや、ドアトランスポート用に使用
されるドアタイプが含まれる。但し、これらに限定され
るわけではない。
【0051】サブコントラクトは、各オブジェクトリフ
ァレンス内で伝送されるある情報を要求する。この情報
は、通常、サブコントラクト関係のサービスの品質に関
係する。サブコントラクトは、異なるドメインに情報を
伝送するために使用すべきトランスポートプロトコルに
適したコード化フォーマットで情報をコード化しなけれ
ばならない。従って、サブコントラクトはマーシャルバ
ッファタイプを使用して、情報をコード化するために使
用すべきコード化フォーマットを決定する。
ァレンス内で伝送されるある情報を要求する。この情報
は、通常、サブコントラクト関係のサービスの品質に関
係する。サブコントラクトは、異なるドメインに情報を
伝送するために使用すべきトランスポートプロトコルに
適したコード化フォーマットで情報をコード化しなけれ
ばならない。従って、サブコントラクトはマーシャルバ
ッファタイプを使用して、情報をコード化するために使
用すべきコード化フォーマットを決定する。
【0052】識別されたマーシャルバッファタイプが未
知の場合、プロセスフローはステップ315に移り、そ
こで例外が投げられる。投げられた例外は、例外記憶場
所ディスクリプタを介して指定された場所に戻すことが
できる。この例外は、特定の引数オブジェクトリファレ
ンスをマーシャリングできないことを示す。例外が投げ
られる場合は、引数オブジェクトリファレンスをマーシ
ャリングする試みは行なわれない。従って、マーシャリ
ングしてはならないオブジェクトリファレンスをマーシ
ャリングしようとすることによって生じる潜在的なエラ
ーが回避される。識別されたマーシャルバッファタイプ
が引数オブジェクトリファレンス関連のサブコントラク
トに知られているとステップ309で判定された場合、
その引数オブジェクトリファレンスは、ステップ312
において、識別されたマーシャルバッファに適した形で
コード化される。
知の場合、プロセスフローはステップ315に移り、そ
こで例外が投げられる。投げられた例外は、例外記憶場
所ディスクリプタを介して指定された場所に戻すことが
できる。この例外は、特定の引数オブジェクトリファレ
ンスをマーシャリングできないことを示す。例外が投げ
られる場合は、引数オブジェクトリファレンスをマーシ
ャリングする試みは行なわれない。従って、マーシャリ
ングしてはならないオブジェクトリファレンスをマーシ
ャリングしようとすることによって生じる潜在的なエラ
ーが回避される。識別されたマーシャルバッファタイプ
が引数オブジェクトリファレンス関連のサブコントラク
トに知られているとステップ309で判定された場合、
その引数オブジェクトリファレンスは、ステップ312
において、識別されたマーシャルバッファに適した形で
コード化される。
【0053】マーシャルバッファタイプに適するフォー
マットで情報をコード化することによって、受取ドメイ
ン上の同一マーシャルバッファタイプのインスタンス
は、引数オブジェクトリファレンスに関連付けられたサ
ブコントラクト、より具体的にはサブコントラクト識別
子、を決定することができる。このサブコントラクト識
別子は、マーシャルルーチンによってコード化された情
報をデコード、すなわちアンマーシャリングするのに適
切なサブコントラクト固有アンマーシャルルーチンを選
択するために用いられる。異なるサブコントラクトは異
なる情報を同一マーシャルバッファ内にコード化できる
ので、サブコントラクトは、アンマーシャリングを実行
して情報を抽出することになる。マーシャルバッファが
コード化されたオブジェクトリファレンス中にサブコン
トラクト識別子を発見できるように、各サブコントラク
トは、一組の周知のエンコーディングフォーマットを使
って情報をコード化する。エンコーディングフォーマッ
トはマーシャルバッファによってサポートされたプロト
コルから決定されるのに対し、サブコントラクトは実際
にコード化される情報を決定する。
マットで情報をコード化することによって、受取ドメイ
ン上の同一マーシャルバッファタイプのインスタンス
は、引数オブジェクトリファレンスに関連付けられたサ
ブコントラクト、より具体的にはサブコントラクト識別
子、を決定することができる。このサブコントラクト識
別子は、マーシャルルーチンによってコード化された情
報をデコード、すなわちアンマーシャリングするのに適
切なサブコントラクト固有アンマーシャルルーチンを選
択するために用いられる。異なるサブコントラクトは異
なる情報を同一マーシャルバッファ内にコード化できる
ので、サブコントラクトは、アンマーシャリングを実行
して情報を抽出することになる。マーシャルバッファが
コード化されたオブジェクトリファレンス中にサブコン
トラクト識別子を発見できるように、各サブコントラク
トは、一組の周知のエンコーディングフォーマットを使
って情報をコード化する。エンコーディングフォーマッ
トはマーシャルバッファによってサポートされたプロト
コルから決定されるのに対し、サブコントラクトは実際
にコード化される情報を決定する。
【0054】次に図9を参照して、起動されたメソッド
に対する引数の一つまたは一部であるオブジェクトリフ
ァレンスをアンマーシャリングする方法を本発明の一実
施形態として説明する。すなわち、オブジェクトリファ
レンスである引数をアンマーシャリングする例を、図6
のステップ222の一部として説明する。引数の一つま
たは一部であるオブジェクトリファレンスをアンマーシ
ャリングするプロセスは、ステップ320から開始す
る。ステップ320では、ピークメソッド、より具体的
にはPEEK_SCIDメソッドがマーシャルバッファ
上に起動され、引数オブジェクトリファレンスに関連付
けられたサブコントラクトを識別する。各マーシャルバ
ッファは、マーシャルバッファタイプに固有な関連PE
EK_SCIDメソッドまたは関数を持つ。従って、マ
ーシャルバッファタイプは、図6のステップ202で選
択されたトランスポートまたはプロトコルのモードに依
存するので、PEEK_SCIDメソッドもまた、使用
されるトランスポートのモードに依存することになる。
引数オブジェクトリファレンスのサブコントラクトは、
サブコントラクト識別子(SCID)がマーシャルバッ
ファに関連付けられたPEEK_SCIDメソッドを使
ってマーシャルバッファから読み取られるときに判別さ
れる。一般に、PEEK_SCIDメソッドは、マーシ
ャルバッファ内にカプセル化されたオブジェクトリファ
レンスのオブジェクトキーの最初の4バイトを見るか読
み取ることによって、オブジェクトリファレンス用のサ
ブコントラクト識別子を判別する。オブジェクトリファ
レンスのオブジェクトキーは、オブジェクトキーの最初
の4バイトが、通常、サブコントラクト識別子を含むよ
うになっている。しかしながら、コード化されたオブジ
ェクトリファレンス、すなわちマーシャルバッファ内に
カプセル化されたオブジェクトリファレンス、の内部の
オブジェクトキーの場所は、使用されるプロトコルやト
ランスポートによって変わる可能性がある。マーシャル
バッファは、オブジェクトキーがオブジェクトリファレ
ンスの何処に配置されるかにかかわらず、オブジェクト
リファレンス内にオブジェクトキーを配置する方法を
「知って」いる。
に対する引数の一つまたは一部であるオブジェクトリフ
ァレンスをアンマーシャリングする方法を本発明の一実
施形態として説明する。すなわち、オブジェクトリファ
レンスである引数をアンマーシャリングする例を、図6
のステップ222の一部として説明する。引数の一つま
たは一部であるオブジェクトリファレンスをアンマーシ
ャリングするプロセスは、ステップ320から開始す
る。ステップ320では、ピークメソッド、より具体的
にはPEEK_SCIDメソッドがマーシャルバッファ
上に起動され、引数オブジェクトリファレンスに関連付
けられたサブコントラクトを識別する。各マーシャルバ
ッファは、マーシャルバッファタイプに固有な関連PE
EK_SCIDメソッドまたは関数を持つ。従って、マ
ーシャルバッファタイプは、図6のステップ202で選
択されたトランスポートまたはプロトコルのモードに依
存するので、PEEK_SCIDメソッドもまた、使用
されるトランスポートのモードに依存することになる。
引数オブジェクトリファレンスのサブコントラクトは、
サブコントラクト識別子(SCID)がマーシャルバッ
ファに関連付けられたPEEK_SCIDメソッドを使
ってマーシャルバッファから読み取られるときに判別さ
れる。一般に、PEEK_SCIDメソッドは、マーシ
ャルバッファ内にカプセル化されたオブジェクトリファ
レンスのオブジェクトキーの最初の4バイトを見るか読
み取ることによって、オブジェクトリファレンス用のサ
ブコントラクト識別子を判別する。オブジェクトリファ
レンスのオブジェクトキーは、オブジェクトキーの最初
の4バイトが、通常、サブコントラクト識別子を含むよ
うになっている。しかしながら、コード化されたオブジ
ェクトリファレンス、すなわちマーシャルバッファ内に
カプセル化されたオブジェクトリファレンス、の内部の
オブジェクトキーの場所は、使用されるプロトコルやト
ランスポートによって変わる可能性がある。マーシャル
バッファは、オブジェクトキーがオブジェクトリファレ
ンスの何処に配置されるかにかかわらず、オブジェクト
リファレンス内にオブジェクトキーを配置する方法を
「知って」いる。
【0055】サブコントラクトが識別された後、プロセ
スコントロールはステップ322へ進み、そこで、この
識別されたサブコントラクトが期待されたサブコントラ
クトであるか否かが判定される。期待されたサブコント
ラクトは、スタートアップ時にアプリケーションコード
の中にコンパイルされるが、これは、特定の引数オブジ
ェクトリファレンスに対して期待された「デフォルト」
のサブコントラクトと見做すことができる。識別された
サブコントラクトが期待されたサブコントラクトである
場合、マーシャルバッファ及び対応するサブコントラク
ト識別子が引数として受け渡されて、その期待されたサ
ブコントラクトのアンマーシャルメソッドがステップ3
24で呼び出される。これにより、invokeメソッドに対
する引数の一つまたは一部であるオブジェクトリファレ
ンスをアンマーシャリングするプロセスが完了する。一
方、識別されたサブコントラクトが期待されたサブコン
トラクトでないとステップ322で判定された場合、ス
テップ326で、サブコントラクトレジストリから識別
されたサブコントラクトに対応するアンマーシャルメソ
ッドの探索が行なわれる。ステップ320でPEEK_
SCIDメソッドによって配置されたサブコントラクト
識別子をキーとして使用して、適切なアンマーシャルメ
ソッドがサブコントラクトレジストリに配置される。サ
ブコントラクトレジストリについては、図11を参照し
ながら後述する。
スコントロールはステップ322へ進み、そこで、この
識別されたサブコントラクトが期待されたサブコントラ
クトであるか否かが判定される。期待されたサブコント
ラクトは、スタートアップ時にアプリケーションコード
の中にコンパイルされるが、これは、特定の引数オブジ
ェクトリファレンスに対して期待された「デフォルト」
のサブコントラクトと見做すことができる。識別された
サブコントラクトが期待されたサブコントラクトである
場合、マーシャルバッファ及び対応するサブコントラク
ト識別子が引数として受け渡されて、その期待されたサ
ブコントラクトのアンマーシャルメソッドがステップ3
24で呼び出される。これにより、invokeメソッドに対
する引数の一つまたは一部であるオブジェクトリファレ
ンスをアンマーシャリングするプロセスが完了する。一
方、識別されたサブコントラクトが期待されたサブコン
トラクトでないとステップ322で判定された場合、ス
テップ326で、サブコントラクトレジストリから識別
されたサブコントラクトに対応するアンマーシャルメソ
ッドの探索が行なわれる。ステップ320でPEEK_
SCIDメソッドによって配置されたサブコントラクト
識別子をキーとして使用して、適切なアンマーシャルメ
ソッドがサブコントラクトレジストリに配置される。サ
ブコントラクトレジストリについては、図11を参照し
ながら後述する。
【0056】識別されたサブコントラクトが期待された
サブコントラクトであるか否かを判定するステップと、
識別されたサブコントラクトが期待されたサブコントラ
クトであると判定された場合に期待されたサブコントラ
クトのアンマーシャルメソッドを呼び出すステップと
が、任意的なステップ321を構成する。期待されたサ
ブコントラクトを使用するのは、識別されたサブコント
ラクトが期待されたサブコントラクトである場合、識別
されたサブコントラクトに対応するアンマーシャルメソ
ッドを探索する必要をなくすためである。識別されたサ
ブコントラクトが期待されたサブコントラクトである場
合は、識別されたサブコントラクトのアンマーシャルメ
ソッドが分かる。しかしながら、或る実施形態では、識
別されたサブコントラクトと期待されたサブコントラク
トとの比較や、ステップ321における期待サブコント
ラクトの使用を除去することができる。期待されたサブ
コントラクトの使用が除去された場合、プロセスフロー
は、サブコントラクトを識別するステップから直接ステ
ップ326に移り、そこで、識別されたサブコントラク
トに対応するアンマーシャルメソッドがサブコントラク
トレジストリを用いて発見される。
サブコントラクトであるか否かを判定するステップと、
識別されたサブコントラクトが期待されたサブコントラ
クトであると判定された場合に期待されたサブコントラ
クトのアンマーシャルメソッドを呼び出すステップと
が、任意的なステップ321を構成する。期待されたサ
ブコントラクトを使用するのは、識別されたサブコント
ラクトが期待されたサブコントラクトである場合、識別
されたサブコントラクトに対応するアンマーシャルメソ
ッドを探索する必要をなくすためである。識別されたサ
ブコントラクトが期待されたサブコントラクトである場
合は、識別されたサブコントラクトのアンマーシャルメ
ソッドが分かる。しかしながら、或る実施形態では、識
別されたサブコントラクトと期待されたサブコントラク
トとの比較や、ステップ321における期待サブコント
ラクトの使用を除去することができる。期待されたサブ
コントラクトの使用が除去された場合、プロセスフロー
は、サブコントラクトを識別するステップから直接ステ
ップ326に移り、そこで、識別されたサブコントラク
トに対応するアンマーシャルメソッドがサブコントラク
トレジストリを用いて発見される。
【0057】サブコントラクトレジストリにおける適切
なアンマーシャルメソッドの探索の後、プロセスコント
ロールはステップ328に進む。ステップ328では、
識別されたサブコントラクトに対応するアンマーシャル
メソッドがサブコントラクトレジストリで発見されたか
否かが判定される。判定が肯定的な場合、すなわち適切
なアンマーシャルメソッドが発見された場合、識別され
たアンマーシャルメソッドが、マーシャルバッファを引
数として用いてステップ330で呼び出される。各サブ
コントラクトは各々が提供するサービスの個々の品質に
従って情報をコード化することから、異なるサブコント
ラクトは、異なるアンマーシャルメソッドを持つ。サブ
コントラクト固有のアンマーシャルルーチンの一実施形
態は、図10を参照しながら後述する。アンマーシャル
メソッドに対する呼び出しの後、引数オブジェクトリフ
ァレンスをアンマーシャリングするプロセスが完了す
る。他方、適切なアンマーシャルメソッドがサブコント
ラクトレジストリで発見されなかったとステップ328
で判定された場合、ステップ332で例外が投げられ
る。例外は、invokeメソッドに対する当初の呼び出しに
関連付けられた例外記憶場所ディスクリプタで指定され
た記憶場所に戻される。
なアンマーシャルメソッドの探索の後、プロセスコント
ロールはステップ328に進む。ステップ328では、
識別されたサブコントラクトに対応するアンマーシャル
メソッドがサブコントラクトレジストリで発見されたか
否かが判定される。判定が肯定的な場合、すなわち適切
なアンマーシャルメソッドが発見された場合、識別され
たアンマーシャルメソッドが、マーシャルバッファを引
数として用いてステップ330で呼び出される。各サブ
コントラクトは各々が提供するサービスの個々の品質に
従って情報をコード化することから、異なるサブコント
ラクトは、異なるアンマーシャルメソッドを持つ。サブ
コントラクト固有のアンマーシャルルーチンの一実施形
態は、図10を参照しながら後述する。アンマーシャル
メソッドに対する呼び出しの後、引数オブジェクトリフ
ァレンスをアンマーシャリングするプロセスが完了す
る。他方、適切なアンマーシャルメソッドがサブコント
ラクトレジストリで発見されなかったとステップ328
で判定された場合、ステップ332で例外が投げられ
る。例外は、invokeメソッドに対する当初の呼び出しに
関連付けられた例外記憶場所ディスクリプタで指定され
た記憶場所に戻される。
【0058】次に図10を参照して、オブジェクトリフ
ァレンス、すなわちファットポインタまたはCORBA
オブジェクトリファレンス、を作成するサブコントラク
ト固有アンマーシャルルーチンの実装方法を本発明の一
実施形態として説明する。すなわち、図9のステップ3
30におけるアンマーシャルメソッドの呼び出しを説明
する。このプロセスは、ステップ350で開始し、マー
シャルバッファ識別子(ID)が、実装すべきサブコン
トラクト固有アンマーシャルルーチンによって認識され
るか否かの判定が行われる。マーシャルバッファIDが
認識可能でない場合、ステップ351で例外が投げられ
る。マーシャルバッファIDが認識可能でないという事
実は、サブコントラクトが、マーシャルバッファのコー
ド化フォーマットを使って必要な情報をデコードする方
法に関する知識を持っていないことを示している。マー
シャルバッファIDが認識可能であると判定された場
合、プロセスコントロールはステップ352に進み、そ
こで、オブジェクトリファレンスデータがマーシャルバ
ッファから抽出される。抽出されたオブジェクトリファ
レンスデータ、具体的には引数オブジェクトリファレン
スデータは、マーシャルバッファタイプに基づく。すな
わち、マーシャルバッファタイプは、抽出すべきオブジ
ェクトリファレンスデータのタイプを指示すると共に、
更に重要なことに、必要な情報を所定のエンコーディン
グフォーマットから抽出する方法を指示する。
ァレンス、すなわちファットポインタまたはCORBA
オブジェクトリファレンス、を作成するサブコントラク
ト固有アンマーシャルルーチンの実装方法を本発明の一
実施形態として説明する。すなわち、図9のステップ3
30におけるアンマーシャルメソッドの呼び出しを説明
する。このプロセスは、ステップ350で開始し、マー
シャルバッファ識別子(ID)が、実装すべきサブコン
トラクト固有アンマーシャルルーチンによって認識され
るか否かの判定が行われる。マーシャルバッファIDが
認識可能でない場合、ステップ351で例外が投げられ
る。マーシャルバッファIDが認識可能でないという事
実は、サブコントラクトが、マーシャルバッファのコー
ド化フォーマットを使って必要な情報をデコードする方
法に関する知識を持っていないことを示している。マー
シャルバッファIDが認識可能であると判定された場
合、プロセスコントロールはステップ352に進み、そ
こで、オブジェクトリファレンスデータがマーシャルバ
ッファから抽出される。抽出されたオブジェクトリファ
レンスデータ、具体的には引数オブジェクトリファレン
スデータは、マーシャルバッファタイプに基づく。すな
わち、マーシャルバッファタイプは、抽出すべきオブジ
ェクトリファレンスデータのタイプを指示すると共に、
更に重要なことに、必要な情報を所定のエンコーディン
グフォーマットから抽出する方法を指示する。
【0059】引数オブジェクトリファレンスデータが抽
出された後、プロセスコントロールはステップ354に
進み、そこで、アンマーシャリングすべきオブジェクト
リファレンスのためのクライアント表現が存在するか否
かが判定される。クライアント表現は一つ以上のオブジ
ェクトリファレンスに関連付けられているので、すでに
存在するクライアント表現がアンマーシャリングすべき
オブジェクトリファレンスに対して適切な場合もある。
クライアント表現は、それが関連付けられたサブコント
ラクトに応じて異なる。すなわち、クライアント表現は
オブジェクトリファレンスがマーシャリングされる方法
を決定するために使用することができるので、クライア
ント表現は、提供されるサービスの品質に応じて変化
し、従って、関連サブコントラクトに応じて変化する。
クライアント表現がアンマーシャリングすべきオブジェ
クトリファレンスに対して存在すると判定された場合、
オブジェクトリファレンスは、すでに存在するクライア
ント表現を用いてステップ355で作成される。オブジ
ェクトリファレンスが作成された後、サブコントラクト
固有アンマーシャルルーチンを実装するプロセスが完了
する。アンマーシャリングすべきオブジェクトリファレ
ンスに対してクライアント表現が存在しないとステップ
354で判定された場合、プロセスコントロールはステ
ップ360に進み、そこで、クライアント表現が、抽出
されたオブジェクトリファレンスデータから作成され
る。新しいクライアント表現が作成された後、オブジェ
クトリファレンスが新クライアント表現を用いてステッ
プ362で作成される。ステップ362の後、サブコン
トラクト固有アンマーシャルルーチンを実装するプロセ
スが完了する。
出された後、プロセスコントロールはステップ354に
進み、そこで、アンマーシャリングすべきオブジェクト
リファレンスのためのクライアント表現が存在するか否
かが判定される。クライアント表現は一つ以上のオブジ
ェクトリファレンスに関連付けられているので、すでに
存在するクライアント表現がアンマーシャリングすべき
オブジェクトリファレンスに対して適切な場合もある。
クライアント表現は、それが関連付けられたサブコント
ラクトに応じて異なる。すなわち、クライアント表現は
オブジェクトリファレンスがマーシャリングされる方法
を決定するために使用することができるので、クライア
ント表現は、提供されるサービスの品質に応じて変化
し、従って、関連サブコントラクトに応じて変化する。
クライアント表現がアンマーシャリングすべきオブジェ
クトリファレンスに対して存在すると判定された場合、
オブジェクトリファレンスは、すでに存在するクライア
ント表現を用いてステップ355で作成される。オブジ
ェクトリファレンスが作成された後、サブコントラクト
固有アンマーシャルルーチンを実装するプロセスが完了
する。アンマーシャリングすべきオブジェクトリファレ
ンスに対してクライアント表現が存在しないとステップ
354で判定された場合、プロセスコントロールはステ
ップ360に進み、そこで、クライアント表現が、抽出
されたオブジェクトリファレンスデータから作成され
る。新しいクライアント表現が作成された後、オブジェ
クトリファレンスが新クライアント表現を用いてステッ
プ362で作成される。ステップ362の後、サブコン
トラクト固有アンマーシャルルーチンを実装するプロセ
スが完了する。
【0060】この他に、既存のクライアント表現を探索
し、既存のクライアント表現を使ってオブジェクトリフ
ァレンスを作成するステップ、すなわちステップ354
と355(これらは、全体ステップ351を構成してい
る)を除去してもよい。全体ステップ351において既
存のクライアント表現を探索して使用する目的は、適切
なクライアント表現がすでに存在する場合に、クライア
ント表現を作成するステップを、抽出されたオブジェク
トリファレンスデータから除去することである。既存の
クライアント表現の探索と使用は、それらを利用できる
場合には、「余分な」クライアント表現の作成を除去す
るが、実施形態の中には、既存のクライアント表現に対
する探索を含まないものもある。クライアント表現の探
索と使用が含まれない場合、すなわちステップ351が
除去される場合は、ステップ352でオブジェクトリフ
ァレンスデータがマーシャルバッファから抽出された
後、プロセスコントロールはステップ360に進み、そ
こで、クライアント表現が、抽出されたオブジェクトリ
ファレンスデータから作成される。その後、ステップ3
62において、オブジェクトリファレンスが新クライア
ント表現を用いて作成され、サブコントラクト固有アン
マーシャルルーチンを実装するプロセスが完了する。
し、既存のクライアント表現を使ってオブジェクトリフ
ァレンスを作成するステップ、すなわちステップ354
と355(これらは、全体ステップ351を構成してい
る)を除去してもよい。全体ステップ351において既
存のクライアント表現を探索して使用する目的は、適切
なクライアント表現がすでに存在する場合に、クライア
ント表現を作成するステップを、抽出されたオブジェク
トリファレンスデータから除去することである。既存の
クライアント表現の探索と使用は、それらを利用できる
場合には、「余分な」クライアント表現の作成を除去す
るが、実施形態の中には、既存のクライアント表現に対
する探索を含まないものもある。クライアント表現の探
索と使用が含まれない場合、すなわちステップ351が
除去される場合は、ステップ352でオブジェクトリフ
ァレンスデータがマーシャルバッファから抽出された
後、プロセスコントロールはステップ360に進み、そ
こで、クライアント表現が、抽出されたオブジェクトリ
ファレンスデータから作成される。その後、ステップ3
62において、オブジェクトリファレンスが新クライア
ント表現を用いて作成され、サブコントラクト固有アン
マーシャルルーチンを実装するプロセスが完了する。
【0061】クライアント−サーバシステムのサーバ側
では、エンドポイント上で受け取られたリクエストをサ
ブコントラクトへディスパッチする際に使用するのに適
したディスパッチルーチンが、エンドポイント固有ディ
スパッチレジストリを使用することによって選択され
る。図7を参照して上述したように、エンドポイント固
有ディスパッチレジストリ、つまりエンドポイントレジ
ストリが、クロージャにサブコントラクトを関連付け
る。このクロージャは、適切なサブコントラクトへのリ
クエストをディスパッチするために使用されるディスパ
ッチルーチンへのポインタを含んでいる。一般に、エン
ドポイントレジストリは、各クロージャに関連付けられ
たサブコントラクトを用いて索引付けされたクロージャ
のリストと見做すことができる。
では、エンドポイント上で受け取られたリクエストをサ
ブコントラクトへディスパッチする際に使用するのに適
したディスパッチルーチンが、エンドポイント固有ディ
スパッチレジストリを使用することによって選択され
る。図7を参照して上述したように、エンドポイント固
有ディスパッチレジストリ、つまりエンドポイントレジ
ストリが、クロージャにサブコントラクトを関連付け
る。このクロージャは、適切なサブコントラクトへのリ
クエストをディスパッチするために使用されるディスパ
ッチルーチンへのポインタを含んでいる。一般に、エン
ドポイントレジストリは、各クロージャに関連付けられ
たサブコントラクトを用いて索引付けされたクロージャ
のリストと見做すことができる。
【0062】図9を参照して上述したように、サブコン
トラクト識別子が与えられると、オブジェクトリファレ
ンスをアンマーシャリングするために使用すべき適切な
アンマーシャリング関数がサブコントラクトレジストリ
を用いて選択される。図11は、本発明の一実施形態に
係るサブコントラクトレジストリデータ構造600の模
式図である。サブコントラクトレジストリデータ構造6
00、または略してサブコントラクトレジストリ600
は、サービスの特定の品質を固有のサブコントラクト識
別子とサブコントラクトクライアント表現作成関数(su
bcontract client representation create function)
に関連付ける情報を格納する。サブコントラクトレジス
トリ600は、表形式のサブコントラクトに関係する情
報を登録すると共に、探索に利用可能なシステム内に利
用可能なサブコントラクトを作成する。表形式は、任意
の数のインプリメンテーションを特定サブコントラクト
に関連付けることを可能にする点で有利である。システ
ム内では所定数の特徴の置換(permutation)が可能だ
が、サブコントラクトレジストリ600は、分散オブジ
ェクトシステム内で実装されたこれらの可能なサブコン
トラクトのサブセットしか識別できない。サブコントラ
クトレジストリ600は、ハッシュテーブル(hash tab
le)、リンクされたリスト、またはその他の任意の適切
なデータ構造として実装することができる。
トラクト識別子が与えられると、オブジェクトリファレ
ンスをアンマーシャリングするために使用すべき適切な
アンマーシャリング関数がサブコントラクトレジストリ
を用いて選択される。図11は、本発明の一実施形態に
係るサブコントラクトレジストリデータ構造600の模
式図である。サブコントラクトレジストリデータ構造6
00、または略してサブコントラクトレジストリ600
は、サービスの特定の品質を固有のサブコントラクト識
別子とサブコントラクトクライアント表現作成関数(su
bcontract client representation create function)
に関連付ける情報を格納する。サブコントラクトレジス
トリ600は、表形式のサブコントラクトに関係する情
報を登録すると共に、探索に利用可能なシステム内に利
用可能なサブコントラクトを作成する。表形式は、任意
の数のインプリメンテーションを特定サブコントラクト
に関連付けることを可能にする点で有利である。システ
ム内では所定数の特徴の置換(permutation)が可能だ
が、サブコントラクトレジストリ600は、分散オブジ
ェクトシステム内で実装されたこれらの可能なサブコン
トラクトのサブセットしか識別できない。サブコントラ
クトレジストリ600は、ハッシュテーブル(hash tab
le)、リンクされたリスト、またはその他の任意の適切
なデータ構造として実装することができる。
【0063】サブコントラクトレジストリ600は、サ
ブコントラクト識別子(SCID)列602、関連サー
ビス品質リスト列604、サブコントラクトクライアン
ト表現作成関数列606、および他の関数608へのポ
インタを含んでいる。サブコントラクトレジストリ60
0の各行610は、サブコントラクトメタオブジェクト
と呼ばれ、一例としては、C++として実装することが
できる。図示の実施形態では、複数のサブコントラクト
メタオブジェクト612、614、616がサブコント
ラクトレジストリ600に設けられている。第1サブコ
ントラクトメタオブジェクト612は「1」のサブコン
トラクト識別子を持ち、ここではサブコントラクト1と
して識別される。サブコントラクト1は、そのサービス
の品質として次の特徴をリストに挙げる。すなわち、ク
リーンシャットダウン、セキュリティ、永続性、および
サーバの活性化である。このサービス品質の名前−値の
対は、クリーンシャットダウンが実装されないこと、M
D5を使った認証プロトコルがセキュリティのために使
用されること、および永続性がオンにされることを示
す。サブコントラクト1は、サブコントラクトクライア
ント表現作成関数列606内に、その関連付けサブコン
トラクトクライアント表現作成関数であるclient repre
sentation create1へのポインタを持つ。他の関数列6
08の各サブコントラクトメタオブジェクトに関連付け
られた様々な他の関数への複数のポインタは、unmarsha
l関数やdestringify関数やバッドサーバ識別子ハンドラ
(bad server identifier handler)へのポインタを含
んでいる。
ブコントラクト識別子(SCID)列602、関連サー
ビス品質リスト列604、サブコントラクトクライアン
ト表現作成関数列606、および他の関数608へのポ
インタを含んでいる。サブコントラクトレジストリ60
0の各行610は、サブコントラクトメタオブジェクト
と呼ばれ、一例としては、C++として実装することが
できる。図示の実施形態では、複数のサブコントラクト
メタオブジェクト612、614、616がサブコント
ラクトレジストリ600に設けられている。第1サブコ
ントラクトメタオブジェクト612は「1」のサブコン
トラクト識別子を持ち、ここではサブコントラクト1と
して識別される。サブコントラクト1は、そのサービス
の品質として次の特徴をリストに挙げる。すなわち、ク
リーンシャットダウン、セキュリティ、永続性、および
サーバの活性化である。このサービス品質の名前−値の
対は、クリーンシャットダウンが実装されないこと、M
D5を使った認証プロトコルがセキュリティのために使
用されること、および永続性がオンにされることを示
す。サブコントラクト1は、サブコントラクトクライア
ント表現作成関数列606内に、その関連付けサブコン
トラクトクライアント表現作成関数であるclient repre
sentation create1へのポインタを持つ。他の関数列6
08の各サブコントラクトメタオブジェクトに関連付け
られた様々な他の関数への複数のポインタは、unmarsha
l関数やdestringify関数やバッドサーバ識別子ハンドラ
(bad server identifier handler)へのポインタを含
んでいる。
【0064】サブコントラクトレジストリ600で示さ
れる第2サブコントラクトメタオブジェクト614は、
サブコントラクト2として識別されるサブコントラクト
に関連付けられたサブコントラクトメタオブジェクトで
ある。このサブコントラクト用のサービス品質のリスト
は、サーバ活性化が存在することを示す。第3サブコン
トラクトメタオブジェクト616は、サブコントラクト
3として識別されるサブコントラクトがトランザクショ
ン、クリーンシャットダウン、およびサーバ活性化を許
可することを示す。
れる第2サブコントラクトメタオブジェクト614は、
サブコントラクト2として識別されるサブコントラクト
に関連付けられたサブコントラクトメタオブジェクトで
ある。このサブコントラクト用のサービス品質のリスト
は、サーバ活性化が存在することを示す。第3サブコン
トラクトメタオブジェクト616は、サブコントラクト
3として識別されるサブコントラクトがトランザクショ
ン、クリーンシャットダウン、およびサーバ活性化を許
可することを示す。
【0065】サブコントラクトレジストリ600は、通
常、レジストリを編成してそれにアクセスするために使
用される一群の関連関数を持っている。例えば、これら
の関連関数には、Add関数、Find関数、Get_
First関数、およびGet_Next関数が含まれ
ていても良い。Add関数は、サービスの新しい品質を
テーブルに加えるために使用される。本実施形態では、
Add関数は、サブコントラクト識別子とサブコントラ
クトメタオブジェクトとを引数と見做す。Find関数
は、サブコントラクト識別子を引数と見做し、その識別
子に関連付けられたサブコントラクトメタオブジェクト
を返却する。Get_First及びGet_Next
関数は、サブコントラクトレジストリ、例えばサブコン
トラクトレジストリ600、を繰り返すために使用さ
れ、それによってサービスの特定の品質を完全に探索し
て、適切なメタオブジェクトを返却する。クライアント
が特定のサーバオブジェクトを呼び出したいときは、サ
ブコントラクトレジストリ600を使ってそのサーバオ
ブジェクトに関連付けられたサブコントラクト識別子を
調べることができる。適切なサブコントラクト識別子の
場所が確認されると、オブジェクトリファレンスによっ
て参照されるクライアント表現を作成するために、適切
なサブコントラクトクライアント表現作成関数が呼び出
される。
常、レジストリを編成してそれにアクセスするために使
用される一群の関連関数を持っている。例えば、これら
の関連関数には、Add関数、Find関数、Get_
First関数、およびGet_Next関数が含まれ
ていても良い。Add関数は、サービスの新しい品質を
テーブルに加えるために使用される。本実施形態では、
Add関数は、サブコントラクト識別子とサブコントラ
クトメタオブジェクトとを引数と見做す。Find関数
は、サブコントラクト識別子を引数と見做し、その識別
子に関連付けられたサブコントラクトメタオブジェクト
を返却する。Get_First及びGet_Next
関数は、サブコントラクトレジストリ、例えばサブコン
トラクトレジストリ600、を繰り返すために使用さ
れ、それによってサービスの特定の品質を完全に探索し
て、適切なメタオブジェクトを返却する。クライアント
が特定のサーバオブジェクトを呼び出したいときは、サ
ブコントラクトレジストリ600を使ってそのサーバオ
ブジェクトに関連付けられたサブコントラクト識別子を
調べることができる。適切なサブコントラクト識別子の
場所が確認されると、オブジェクトリファレンスによっ
て参照されるクライアント表現を作成するために、適切
なサブコントラクトクライアント表現作成関数が呼び出
される。
【0066】本発明は、上記のように、コンピュータシ
ステムに格納されたデータを必要とする様々なプロセス
ステップを使用する。これらのステップは、物理量の物
理的操作を必要とするステップである。通常、これらの
量は、格納、転送、合成、比較、その他の操作が可能な
電気的または磁気的信号の形を取る。但し、必ずしもこ
れに該当するわけではない。主として一般的慣行の理由
で、これらの信号をビット、バリュー、エレメント、変
数、キャラクタ、データ構造等と呼ぶと便利な場合があ
る。しかしながら、これらの用語や類似の用語は、すべ
て、適切な物理量に対応付けられるべきであり、また、
これらの量に付された単なる便利なラベルに過ぎない。
ステムに格納されたデータを必要とする様々なプロセス
ステップを使用する。これらのステップは、物理量の物
理的操作を必要とするステップである。通常、これらの
量は、格納、転送、合成、比較、その他の操作が可能な
電気的または磁気的信号の形を取る。但し、必ずしもこ
れに該当するわけではない。主として一般的慣行の理由
で、これらの信号をビット、バリュー、エレメント、変
数、キャラクタ、データ構造等と呼ぶと便利な場合があ
る。しかしながら、これらの用語や類似の用語は、すべ
て、適切な物理量に対応付けられるべきであり、また、
これらの量に付された単なる便利なラベルに過ぎない。
【0067】また、実行される操作は、識別、実行、ま
たは比較等の用語で呼ばれることが多い。本発明の一部
を形成する、本明細書に記載のオペレーションでは、こ
れらのオペレーションはマシンオペレーションである。
本発明のオペレーションを実行するために便利なマシン
には、汎用ディジタルコンピュータやその他類似の装置
が含まれる。いずれにしても、コンピュータを操作する
場合のオペレーションの方法と、計算自体の方法との相
違を忘れてはならない。本発明は、電気的またはその他
の物理的信号を処理して他の望ましい物理信号を発生さ
せる際にコンピュータを操作する方法ステップに関する
ものである。
たは比較等の用語で呼ばれることが多い。本発明の一部
を形成する、本明細書に記載のオペレーションでは、こ
れらのオペレーションはマシンオペレーションである。
本発明のオペレーションを実行するために便利なマシン
には、汎用ディジタルコンピュータやその他類似の装置
が含まれる。いずれにしても、コンピュータを操作する
場合のオペレーションの方法と、計算自体の方法との相
違を忘れてはならない。本発明は、電気的またはその他
の物理的信号を処理して他の望ましい物理信号を発生さ
せる際にコンピュータを操作する方法ステップに関する
ものである。
【0068】本発明は、これらのオペレーションを実行
する装置にも関係する。この装置は、要求される目的の
ために特別に製造してもよいし、また、コンピュータに
格納されたコンピュータプログラムによって選択的に作
動又は再構成される汎用コンピュータでもよい。本明細
書で提示されるプロセスは、特定のコンピュータやその
他装置に固有の関係を持つものではない。具体的に述べ
ると、本明細書の開示内容に従って書かれたプログラム
は、様々な汎用マシンで使用することができるし、ま
た、必要な方法ステップを実行するためにより特化した
装置を製造する方が便利な場合もある。これらの種々の
マシンに必要な構造は、上記の説明から明らかであろ
う。
する装置にも関係する。この装置は、要求される目的の
ために特別に製造してもよいし、また、コンピュータに
格納されたコンピュータプログラムによって選択的に作
動又は再構成される汎用コンピュータでもよい。本明細
書で提示されるプロセスは、特定のコンピュータやその
他装置に固有の関係を持つものではない。具体的に述べ
ると、本明細書の開示内容に従って書かれたプログラム
は、様々な汎用マシンで使用することができるし、ま
た、必要な方法ステップを実行するためにより特化した
装置を製造する方が便利な場合もある。これらの種々の
マシンに必要な構造は、上記の説明から明らかであろ
う。
【0069】また、本発明は、様々なコンピュータ実装
オペレーションを実行するためのプログラム命令を含む
コンピュータ読取り可能媒体(メディア)にも関係す
る。媒体とプログラム命令は、本発明の目的のために特
別に設計、製造されたものでよいし、また、コンピュー
タソフトウェア技術の専門家に周知の利用可能な類のも
のでもよい。コンピュータ読取り可能媒体の例として
は、ハードディスク、フロッピーディスク、および磁気
テープ等の磁気メディア、CD−ROMディスク等の光
学メディア、オプティカルディスク等の磁気光学媒体、
およびプログラム命令を格納、実行するために特別に構
成されたハードウェア装置、例えばリードオンリーメモ
リ(ROM)やランダムアクセスメモリ(RAM)が挙
げられる。但し、これらに限定されるわけではない。プ
ログラム命令の例としては、コンパイラによって作成さ
れるようなマシンコード、及びインタプリタを使ってコ
ンピュータによって実行される、よりハイレベルのコー
ドを含んだファイル、の双方が挙げられる。
オペレーションを実行するためのプログラム命令を含む
コンピュータ読取り可能媒体(メディア)にも関係す
る。媒体とプログラム命令は、本発明の目的のために特
別に設計、製造されたものでよいし、また、コンピュー
タソフトウェア技術の専門家に周知の利用可能な類のも
のでもよい。コンピュータ読取り可能媒体の例として
は、ハードディスク、フロッピーディスク、および磁気
テープ等の磁気メディア、CD−ROMディスク等の光
学メディア、オプティカルディスク等の磁気光学媒体、
およびプログラム命令を格納、実行するために特別に構
成されたハードウェア装置、例えばリードオンリーメモ
リ(ROM)やランダムアクセスメモリ(RAM)が挙
げられる。但し、これらに限定されるわけではない。プ
ログラム命令の例としては、コンパイラによって作成さ
れるようなマシンコード、及びインタプリタを使ってコ
ンピュータによって実行される、よりハイレベルのコー
ドを含んだファイル、の双方が挙げられる。
【0070】図12は、本発明に係る代表的なコンピュ
ータシステムを示している。このコンピュータシステム
700は、プロセッサ702(通常、中央処理装置、す
なわちCPU)を含んでいる。このプロセッサ702
は、主記憶装置704(通常、リードオンリーメモリ、
すなわちROM)及び主記憶装置706(通常、ランダ
ムアクセスメモリ、すなわちRAM)を含む記憶装置に
結合されている。この分野では周知のように、ROM7
04は、データと命令をCPUに一方向的に転送する働
きがあり、RAM706は、通常、データと命令を双方
向的に転送するために使用される。大容量記憶装置70
8もCPU702に双方向的に結合されて、追加のデー
タ記憶容量を提供する。大容量記憶装置708は、プロ
グラム、データ等を格納するために使用され、通常、主
記憶装置504、506よりも遅いハードディスク等の
二次記憶媒体である。大容量記憶装置708は、磁気ま
たは紙テープリーダーやその他の周知の装置の形を取る
ことができる。大容量記憶装置708内に保持される情
報は、適切な場合に、仮想メモリとしてのRAM706
の一部として標準的な方式で組み込まれる。CD−RO
M714等の特定の大容量記憶装置も、データを一方向
的にCPUに受け渡すことができる。
ータシステムを示している。このコンピュータシステム
700は、プロセッサ702(通常、中央処理装置、す
なわちCPU)を含んでいる。このプロセッサ702
は、主記憶装置704(通常、リードオンリーメモリ、
すなわちROM)及び主記憶装置706(通常、ランダ
ムアクセスメモリ、すなわちRAM)を含む記憶装置に
結合されている。この分野では周知のように、ROM7
04は、データと命令をCPUに一方向的に転送する働
きがあり、RAM706は、通常、データと命令を双方
向的に転送するために使用される。大容量記憶装置70
8もCPU702に双方向的に結合されて、追加のデー
タ記憶容量を提供する。大容量記憶装置708は、プロ
グラム、データ等を格納するために使用され、通常、主
記憶装置504、506よりも遅いハードディスク等の
二次記憶媒体である。大容量記憶装置708は、磁気ま
たは紙テープリーダーやその他の周知の装置の形を取る
ことができる。大容量記憶装置708内に保持される情
報は、適切な場合に、仮想メモリとしてのRAM706
の一部として標準的な方式で組み込まれる。CD−RO
M714等の特定の大容量記憶装置も、データを一方向
的にCPUに受け渡すことができる。
【0071】CPU702は、1個以上の入出力装置7
10にも結合されている。入出力装置710には、ビデ
オモニタ、トラックボール、マウス、キーボード、マイ
クロホン、タッチセンシティブディスプレイ、トランス
デューサカードリーダ、磁気または紙テープレコーダ、
タブレット、スタイラス、音声又は手書き認識装置(re
cognizer)、その他の周知の入力装置(当然のことであ
るが、例えば、別のコンピュータもこれに含まれる)等
が含まれる。但し、これらに限定されるわけではない。
最後に、CPU702は、符号712で全体的に示され
るネットワークコネクションを使用して、コンピュータ
や通信ネットワークに任意に連結することができる。上
記のネットワークコネクションにより、CPUは上記の
方法ステップを実行する中で、ネットワークから情報を
受け取ったり、ネットワークに情報を出力することが可
能である。上記の装置や材料は、コンピュータハードウ
ェア及びソフトウェア技術の専門家には周知のものであ
ろう。
10にも結合されている。入出力装置710には、ビデ
オモニタ、トラックボール、マウス、キーボード、マイ
クロホン、タッチセンシティブディスプレイ、トランス
デューサカードリーダ、磁気または紙テープレコーダ、
タブレット、スタイラス、音声又は手書き認識装置(re
cognizer)、その他の周知の入力装置(当然のことであ
るが、例えば、別のコンピュータもこれに含まれる)等
が含まれる。但し、これらに限定されるわけではない。
最後に、CPU702は、符号712で全体的に示され
るネットワークコネクションを使用して、コンピュータ
や通信ネットワークに任意に連結することができる。上
記のネットワークコネクションにより、CPUは上記の
方法ステップを実行する中で、ネットワークから情報を
受け取ったり、ネットワークに情報を出力することが可
能である。上記の装置や材料は、コンピュータハードウ
ェア及びソフトウェア技術の専門家には周知のものであ
ろう。
【0072】本発明の好ましい実施形態を一つだけ説明
したが、本発明は、その趣旨と範囲から逸脱することな
く、他の多くの形式で具体化し得ることは言うまでもな
い。上記実施形態では、サブコントラクトレジストリを
説明した。サブコントラクトレジストリは、本発明の趣
旨と範囲の中で幅広い変化が可能なことは明らかであろ
う。更に、引数オブジェクトリファレンスをマーシャリ
ングおよびアンマーシャリングする方法が伴うステップ
は、順序を変えることが可能である。また、本発明の精
神と範囲から逸脱することなく、ステップを追加又は除
去することができる。
したが、本発明は、その趣旨と範囲から逸脱することな
く、他の多くの形式で具体化し得ることは言うまでもな
い。上記実施形態では、サブコントラクトレジストリを
説明した。サブコントラクトレジストリは、本発明の趣
旨と範囲の中で幅広い変化が可能なことは明らかであろ
う。更に、引数オブジェクトリファレンスをマーシャリ
ングおよびアンマーシャリングする方法が伴うステップ
は、順序を変えることが可能である。また、本発明の精
神と範囲から逸脱することなく、ステップを追加又は除
去することができる。
【0073】更に、或る状況では、共通のオブジェクト
に関連付けられたマーシャリング及びアンマーシャリン
グ方法を単一の方法に合併することができる。例えば、
マーシャルメソッドとアンマーシャルメソッドが同一の
場合、関数呼び出し(function call)における引数の
追加を使用してマーシャリングまたはアンマーシャリン
グが望ましいか否かを指定できる。マーシャルメソッド
とアンマーシャルメソッドが異なる場合には、新しい関
数を作成して両メソッドを実行することができる。この
新関数は、所望のメソッドがマーシャリングであるかア
ンマーシャリングであるかを指定する関数呼び出しに対
する引数を含んでいても良い。マーシャル及びアンマー
シャルメソッドへのポインタを持つタイプコード及びデ
ィスクリプタデータ構造の中で単一の関数がマーシャリ
ング及びアンマーシャリングの双方を表す場合は、1個
のポインタを用いてその単一関数を指示することができ
る。マーシャリング及びアンマーシャリングのどちらが
ディスクリプタデータ構造によって望まれているかを示
すディスクリプタデータ構造の中に、ブーリアン値(boo
lean value) やフラグを実装することもできる。従っ
て、上記の実施形態は説明のためであって、限定のため
ではないと見做すべきであり、本発明は特許請求の範囲
及びその均等物の全範囲で定められるべきである。
に関連付けられたマーシャリング及びアンマーシャリン
グ方法を単一の方法に合併することができる。例えば、
マーシャルメソッドとアンマーシャルメソッドが同一の
場合、関数呼び出し(function call)における引数の
追加を使用してマーシャリングまたはアンマーシャリン
グが望ましいか否かを指定できる。マーシャルメソッド
とアンマーシャルメソッドが異なる場合には、新しい関
数を作成して両メソッドを実行することができる。この
新関数は、所望のメソッドがマーシャリングであるかア
ンマーシャリングであるかを指定する関数呼び出しに対
する引数を含んでいても良い。マーシャル及びアンマー
シャルメソッドへのポインタを持つタイプコード及びデ
ィスクリプタデータ構造の中で単一の関数がマーシャリ
ング及びアンマーシャリングの双方を表す場合は、1個
のポインタを用いてその単一関数を指示することができ
る。マーシャリング及びアンマーシャリングのどちらが
ディスクリプタデータ構造によって望まれているかを示
すディスクリプタデータ構造の中に、ブーリアン値(boo
lean value) やフラグを実装することもできる。従っ
て、上記の実施形態は説明のためであって、限定のため
ではないと見做すべきであり、本発明は特許請求の範囲
及びその均等物の全範囲で定められるべきである。
【図1】本発明の実装に適した分散オブジェクトシステ
ムの模式平面図である。
ムの模式平面図である。
【図2】クライアントによるリクエストが、分散オブジ
ェクトシステムのクライアント側及びサーバ側のアーキ
テクチャ、並びに分散オブジェクトシステムのクライア
ント側とサーバ側との間のインタフェースを介してどの
ように送られるかを示す概略図である。
ェクトシステムのクライアント側及びサーバ側のアーキ
テクチャ、並びに分散オブジェクトシステムのクライア
ント側とサーバ側との間のインタフェースを介してどの
ように送られるかを示す概略図である。
【図3】本発明の一実施形態に係るプロセス間起動(in
ter-process invocation)で使用するのに適したオブジ
ェクトリファレンス内に存在するデータフィールドの概
略図である。
ter-process invocation)で使用するのに適したオブジ
ェクトリファレンス内に存在するデータフィールドの概
略図である。
【図4】本発明の一実施形態に係るオブジェクトの起動
方法を示すプロセスフローチャートである。
方法を示すプロセスフローチャートである。
【図5】本発明の一実施形態に係るリモートスタブの実
行方法、すなわち図4のステップ115、を示すプロセ
スフローチャートである。
行方法、すなわち図4のステップ115、を示すプロセ
スフローチャートである。
【図6】リモートスタブを用いて起動メソッドを呼び出
す本発明の一実施形態に係る方法、すなわち図5のステ
ップ196、を示すプロセスフローチャートである。
す本発明の一実施形態に係る方法、すなわち図5のステ
ップ196、を示すプロセスフローチャートである。
【図7】リクエストが受取エンドポイントで受け取られ
たときに分散オブジェクト指向システムのサーバ側に発
生する本発明の一実施形態に係るステップを示すプロセ
スフローチャートである。
たときに分散オブジェクト指向システムのサーバ側に発
生する本発明の一実施形態に係るステップを示すプロセ
スフローチャートである。
【図8】本発明の一実施形態に係る引数オブジェクトリ
ファレンスをマーシャリングする方法、すなわち図6の
ステップ210の一例、を示すプロセスフローチャート
である。
ファレンスをマーシャリングする方法、すなわち図6の
ステップ210の一例、を示すプロセスフローチャート
である。
【図9】本発明の一実施形態に係る引数オブジェクトリ
ファレンスをアンマーシャリングする方法、すなわち図
4のステップ222の一例、を示すプロセスフローチャ
ートである。
ファレンスをアンマーシャリングする方法、すなわち図
4のステップ222の一例、を示すプロセスフローチャ
ートである。
【図10】サブコントラクト固有のアンマーシャルルー
チンを実装してオブジェクトリファレンスを作成する本
発明の一実施形態に係る方法、すなわち図7のステップ
330、を示すプロセスフローチャートである。
チンを実装してオブジェクトリファレンスを作成する本
発明の一実施形態に係る方法、すなわち図7のステップ
330、を示すプロセスフローチャートである。
【図11】本発明の一実施形態に係るサブコントラクト
レジストリの模式図である。
レジストリの模式図である。
【図12】本発明の一実施形態に係る代表的なコンピュ
ーティングシステムの説明図である。
ーティングシステムの説明図である。
20…クライアント、22…スタブ、24…メソッドテ
ーブル、26…動的起動インタフェース、28…インプ
リメンテーションスイート、30…動的スケルトン、3
2…静的スケルトン、34…ORBインタフェース、3
6…サブコントラクト、38…トランスポート、40…
フィルタ。
ーブル、26…動的起動インタフェース、28…インプ
リメンテーションスイート、30…動的スケルトン、3
2…静的スケルトン、34…ORBインタフェース、3
6…サブコントラクト、38…トランスポート、40…
フィルタ。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ケン エム. カヴァナフ サード アメリカ合衆国, カリフォルニア州, モンタラ, フィフス ストリート 357 (72)発明者 アニタ ジンダル アメリカ合衆国, カリフォルニア州, クパティノ, ヴィア ポートフィノ 20446
Claims (18)
- 【請求項1】 マーシャルバッファ内にカプセル化され
た起動リクエスト中の引数の少なくとも一部である引数
オブジェクトリファレンスをアンマーシャリングする方
法であって、前記引数オブジェクトリファレンスはサブ
コントラクト識別子を含んでおり、 a) 前記引数オブジェクトリファレンス中の前記サブ
コントラクト識別子を読み取ることによって前記引数オ
ブジェクトリファレンスに関連付けられたサブコントラ
クトを識別するステップであって、前記マーシャルバッ
ファによって行われるサブコントラクト識別ステップ
と、 b) この識別されたサブコントラクト識別子をキーと
して用いてサブコントラクトレジストリにアクセスし、
前記識別されたサブコントラクト識別子に関連付けられ
たアンマーシャルメソッドを識別するステップであっ
て、前記サブコントラクト識別子によって識別された前
記サブコントラクトにより行われるサブコントラクトレ
ジストリアクセスステップと、 c) 前記マーシャルバッファを引数として受け渡し
て、前記識別されたアンマーシャルメソッドを呼び出す
ステップであって、前記識別されたアンマーシャルメソ
ッドが前記引数オブジェクトリファレンスをアンマーシ
ャリングするステップと、を備える方法。 - 【請求項2】 前記識別されたサブコントラクト識別子
が期待されたサブコントラクト識別子と同一であるか否
かを判定するステップを更に備える請求項1記載の方法
であって、 前記識別されたサブコントラクト識別子が前記期待され
たサブコントラクト識別子と同一でないと判定されたと
きは、ステップ(b)及び(c)が実行され、 前記識別されたサブコントラクト識別子が前記期待され
たサブコントラクト識別子と同一であると判定されたと
きは、ステップ(b)及び(c)は実行されず、前記期
待されたサブコントラクト識別子に対応する期待された
アンマーシャルメソッドを呼び出すステップを更に備え
る方法。 - 【請求項3】 前記サブコントラクト識別子を識別する
ステップは、前記マーシャルバッファ上のピークメソッ
ド(peek method)を起動することによって行われる、
請求項1又は2記載の方法。 - 【請求項4】 前記オブジェクトリファレンスは、サー
バ識別子、インプリメンテーション識別子、及びユーザ
キーを更に含んでいる、請求項1〜3のいずれかに記載
の方法。 - 【請求項5】 マーシャルバッファ内にカプセル化され
た引数又は引数の一部であるべき引数オブジェクトリフ
ァレンスをマーシャリングする方法であって、前記オブ
ジェクトリファレンスはサブコントラクト識別子を含ん
でおり、 a) 前記引数オブジェクトリファレンス中のクライア
ント表現のマーシャルメソッドに前記マーシャルバッフ
ァを引数として受け渡してこのマーシャルメソッドを起
動するステップと、 b) 前記マーシャルバッファタイプを識別するステッ
プと、 c) この識別されたマーシャルバッファタイプが前記
引数オブジェクトリファレンスのサブコントラクト識別
子によって識別されたサブコントラクトに知られている
か否かを判定するステップであって、前記識別されたマ
ーシャルバッファタイプが前記識別されたサブコントラ
クトに知られていると判定されたときは、前記引数オブ
ジェクトリファレンスが前記識別されたマーシャルバッ
ファタイプに適した形にコード化されるステップと、を
備える方法。 - 【請求項6】 マーシャルバッファ内にカプセル化され
た引数の少なくとも一部である引数オブジェクトリファ
レンスをアンマーシャリングするためのプログラム命令
を有するコンピュータ読取り可能媒体であって、前記引
数オブジェクトリファレンスはサブコントラクト識別子
を含み、 a) 前記引数オブジェクトリファレンス中の前記サブ
コントラクト識別子を読み取ることによって前記引数オ
ブジェクトリファレンスに関連付けられたサブコントラ
クトを識別するステップであって、前記マーシャルバッ
ファに関連付けられたプログラム命令によって行われる
サブコントラクト識別ステップと、 b) この識別されたサブコントラクト識別子をキーと
して用いてサブコントラクトレジストリにアクセスし、
前記識別されたサブコントラクト識別子に関連付けられ
たアンマーシャルメソッドを識別するステップであっ
て、前記サブコントラクト識別子で識別された前記サブ
コントラクトに関連付けられたプログラム命令よって行
われるサブコントラクトレジストリアクセスステップ
と、 c) 前記マーシャルバッファを引数として受け渡し
て、前記識別されたアンマーシャルメソッドを呼び出す
ステップであって、前記識別されたアンマーシャルメソ
ッドは、前記引数オブジェクトリファレンスをアンマー
シャリングするプログラム命令を含んでいるステップ
と、を実行するように構成されたプログラム命令を有す
るコンピュータ読取り可能媒体。 - 【請求項7】 前記識別されたサブコントラクト識別子
が期待されたサブコントラクト識別子と同一であるか否
かを判定するプログラム命令と、 前記識別されたサブコントラクト識別子が前記期待され
たサブコントラクト識別子と同一であると判定されたと
きに、前記期待されたサブコントラクト識別子に対応す
る期待されたアンマーシャルメソッドを呼び出すプログ
ラム命令と、を更に備え、 前記プログラム命令は、前記識別されたサブコントラク
ト識別子が前記期待されたサブコントラクト識別子と同
一でないと判定されたときは、ステップ(b)及び
(c)を実行し、前記識別されたサブコントラクト識別
子が前記期待されたサブコントラクト識別子と同一であ
ると判定されたときは、ステップ(b)及び(c)を実
行しないように構成されている請求項6記載のコンピュ
ータ読取り可能媒体。 - 【請求項8】 分散クライアントサーバコンピューティ
ングシステムで使用するための引数オブジェクトリファ
レンスアンマーシャラ(unmarshaler)であって、 サブコントラクト識別子を有する引数オブジェクトリフ
ァレンスを含んだ分散リクエストを受け取るマーシャル
バッファと、 前記マーシャルバッファに関連付けられ、前記引数オブ
ジェクトリファレンスに関連付けられた前記サブコント
ラクト識別子をピーク(peek)するピーキングメカニズ
ムであって、前記サブコントラクト識別子に関連付けら
れたサブコントラクトにアンマーシャリングリクエスト
呼び出しを行なうように構成されたピーキングメカニズ
ムと、 複数の異なるサブコントラクトに対応する複数のエント
リを有するサブコントラクトレジストリであって、異な
るサブコントラクトの各々に関連付けられたアンマーシ
ャルメソッドを識別するように構成されたサブコントラ
クトレジストリと、 前記サブコントラクトに関連付けられたサブコントラク
トレジストリ探索メカニズムであって、前記ピーキング
メカニズムによって発見された前記サブコントラクト識
別子をキーとして用いて前記サブコントラクトレジスト
リを探索し、前記引数オブジェクトリファレンスに関連
付けられた前記アンマーシャルメソッドを識別するサブ
コントラクトレジストリ探索メカニズムと、 前記マーシャルバッファを引数として前記呼び出しに受
け渡して、前記識別されたアンマーシャルメソッドを呼
び出し、これにより、前記識別されたアンマーシャルメ
ソッドが前記引数オブジェクトリファレンスをアンマー
シャリングするようにする呼出ディスパッチャ(call d
ispatcher)と、を備える引数オブジェクトリファレン
スアンマーシャラ。 - 【請求項9】 マーシャルバッファ内にカプセル化され
た引数の少なくとも一部である引数オブジェクトリファ
レンスをマーシャリングするためのプログラム命令を有
するコンピュータ読取り可能媒体であって、前記引数オ
ブジェクトリファレンスはサブコントラクト識別子を含
んでおり、 a) 前記マーシャルバッファを引数として前記マーシ
ャルメソッドに受け渡して前記引数オブジェクトリファ
レンス中のクライアント表現のマーシャルメソッドを起
動し、 b) 前記マーシャルバッファタイプを識別し、 c) この識別されたマーシャルバッファタイプが前記
引数オブジェクトリファレンスの前記サブコントラクト
識別子によって識別されたサブコントラクトに知られて
いるか否かを判定し、前記識別されたマーシャルバッフ
ァが前記識別されたサブコントラクトに知られていると
判定されたときは、前記引数オブジェクトリファレンス
が前記識別されたマーシャルバッファタイプに適する形
にコード化されるように構成されたプログラム命令を有
するコンピュータ読取り可能媒体。 - 【請求項10】 分散クライアント/サーバコンピュー
ティングシステムで使用するための引数オブジェクトリ
ファレンスマーシャラ(marshaler)であって、 分散リクエストをカプセル化するマーシャルバッファ
と、 前記マーシャルバッファに関連付けられ、前記マーシャ
ルバッファのタイプを識別する識別メカニズムと、 前記マーシャルバッファタイプを用いて、引数オブジェ
クトリファレンス中の情報をマーシャリングするために
使用する適切な方法を決定するマーシャリングルーチン
と、を備える引数オブジェクトリファレンスマーシャ
ラ。 - 【請求項11】 前記引数オブジェクトリファレンス
は、起動リクエスト中の全引数を構成している、請求項
10記載の引数オブジェクトリファレンスマーシャラ。 - 【請求項12】 マーシャルバッファ内にカプセル化さ
れた起動リクエスト中の引数の少なくとも一部である引
数オブジェクトリファレンスをアンマーシャリングする
方法であって、前記引数オブジェクトリファレンスは、
サブコントラクト識別子を含んでおり、 a) 前記引数オブジェクトリファレンス中の前記サブ
コントラクト識別子を読み取ることによって前記引数オ
ブジェクトリファレンスに関連付けられたサブコントラ
クトを識別するステップであって、前記マーシャルバッ
ファによって行われるサブコントラクト識別ステップ
と、 b) 前記サブコントラクト識別子が期待されたサブコ
ントラクト識別子と同一であるか否かを判定するステッ
プと、 c) 前記識別されたサブコントラクト識別子が前記期
待されたサブコントラクト識別子と同一であると判定さ
れたときに前記期待されたサブコントラクト識別子に対
応する期待されたアンマーシャルメソッドを呼び出すス
テップであって、前記サブコントラクト識別子によって
識別される前記サブコントラクトによって行われるアン
マーシャルメソッド呼び出しステップと、を備える方
法。 - 【請求項13】 マーシャルバッファ内にカプセル化さ
れた起動リクエスト中の引数の少なくとも一部である引
数オブジェクトリファレンスをアンマーシャリングする
ためのコンピュータ読取り可能コードが収録されたコン
ピュータ使用可能媒体を備えるコンピュータプログラム
製品であって、前記引数オブジェクトリファレンスはサ
ブコントラクト識別子を含み、前記引数オブジェクトリ
ファレンスは分散クライアント/サーバベースのコンピ
ュータシステム内に定義されており、 a) 前記引数オブジェクトリファレンス中の前記サブ
コントラクト識別子を読み取ることによって前記引数オ
ブジェクトリファレンスに関連付けられたサブコントラ
クトを識別するステップであって、前記マーシャルバッ
ファによって行われるサブコントラクト識別ステップ
と、 b) 前記識別されたサブコントラクト識別子をキーと
して用いてサブコントラクトレジストリにアクセスし、
前記識別されたサブコントラクト識別子に関連付けられ
たアンマーシャルメソッドを識別するステップであっ
て、前記サブコントラクト識別子によって識別されたサ
ブコントラクトによって行われるサブコントラクトレジ
ストリアクセスステップと、 c) 前記マーシャルバッファを引数として受け渡して
前記識別されたアンマーシャルメソッドを呼び出すステ
ップであって、前記識別されたアンマーシャルメソッド
が前記引数オブジェクトリファレンスをアンマーシャリ
ングするステップと、を前記コンピュータシステム内に
もたらすコンピュータ読取り可能プログラムコードを備
えたコンピュータプログラム製品。 - 【請求項14】 前記識別されたサブコントラクト識別
子が期待されたサブコントラクト識別子と同一であるか
否かを判定するステップを更にもたらす請求項13記載
のコンピュータ読取り可能プログラムコードを備えたコ
ンピュータプログラム製品であって、 前記識別されたサブコントラクト識別子が前記期待され
たサブコントラクト識別子と同一でないと判定されたと
きは、ステップ(b)と(c)が実行され、前記識別さ
れたサブコントラクト識別子が前記期待されたサブコン
トラクト識別子と同一であると判定されたときは、ステ
ップ(b)と(c)は実行されずに、前記メソッドが、
前記期待サブコントラクト識別子に対応する期待アンマ
ーシャルメソッドを呼び出すステップを更に備えるよう
になっているコンピュータプログラム製品。 - 【請求項15】 前記サブコントラクト識別子を識別す
る前記ステップが、前記マーシャルバッファ上のピーク
メソッドを起動することによって行われる、請求項13
又は14記載のコンピュータ読取り可能プログラムコー
ドを備えたコンピュータプログラム製品。 - 【請求項16】 前記オブジェクトリファレンスが、サ
ーバ識別子、インプリメンテーション識別子、およびユ
ーザキーを更に含んでいる、請求項13〜15のいずれ
かに記載のコンピュータ読取り可能プログラムコードを
備えたコンピュータプログラム製品。 - 【請求項17】 マーシャルバッファ内にカプセル化さ
れた引数またはその一部である引数オブジェクトリファ
レンスをマーシャリングするためのコンピュータ読取り
可能コードが収録されたコンピュータ媒体を備えるコン
ピュータプログラム製品であって、前記オブジェクトリ
ファレンスはサブコントラクト識別子を含み、前記引数
オブジェクトリファレンスは分散クライアント/サーバ
ベースのコンピュータシステム内で定義されており、 a) 前記マーシャルバッファを引数として前記マーシ
ャルメソッドに受け渡して前記引数オブジェクトリファ
レンス中のクライアント表現のマーシャルメソッドを起
動するステップと、 b) 前記マーシャルバッファのタイプを識別するステ
ップと、 c) 前記識別されたマーシャルバッファが前記引数オ
ブジェクトリファレンスの前記サブコントラクト識別子
によって識別されたサブコントラクトに知られているか
否かを判定するステップであって、前記識別されたマー
シャルバッファタイプが前記識別されたサブコントラク
トに知られていると判定された場合は、前記引数オブジ
ェクトリファレンスが前記識別されたマーシャルバッフ
ァタイプに適した形にコード化されるステップと、を前
記コンピュータシステム内にもたらすコンピュータ読取
り可能プログラムコードを備えたコンピュータプログラ
ム製品。 - 【請求項18】 マーシャルバッファ内にカプセル化さ
れた起動リクエスト中の引数の少なくとも一部である引
数オブジェクトリファレンスをアンマーシャリングする
ためのコンピュータ読取り可能コードが収録されたコン
ピュータ使用可能媒体を備えるコンピュータプログラム
製品であって、前記引数オブジェクトリファレンスはサ
ブコントラクト識別子を含み、前記引数オブジェクトリ
ファレンスは分散クライアント/サーバベースのコンピ
ュータシステム内で定義されており、 a) 前記引数オブジェクトリファレンス中の前記サブ
コントラクト識別子を読み取ることによって前記引数オ
ブジェクトリファレンスに関連付けられたサブコントラ
クトを識別するステップであって、前記マーシャルバッ
ファによって行われるサブコントラクト識別ステップ
と、 b) 前記識別されたサブコントラクト識別子が期待さ
れたサブコントラクト識別子と同一か否かを判定するス
テップと、 c) 前記識別されたサブコントラクト識別子が前記期
待されたサブコントラクト識別子と同一であると判定さ
れたときは、前記期待されたサブコントラクト識別子に
対応する期待されたアンマーシャルメソッドを呼び出す
ステップであって、前記サブコントラクト識別子によっ
て識別された前記サブコントラクトによって行われるア
ンマーシャルメソッド呼び出しステップと、を前記コン
ピュータ内にもたらすコンピュータ読取り可能コードを
備えたコンピュータプログラム製品。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US08/670,681 US6044409A (en) | 1996-06-26 | 1996-06-26 | Framework for marshaling and unmarshaling argument object references |
| US08/670681 | 1996-06-26 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH1063505A true JPH1063505A (ja) | 1998-03-06 |
Family
ID=24691415
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP9167663A Pending JPH1063505A (ja) | 1996-06-26 | 1997-06-24 | 引数オブジェクトリファレンスをマーシャリングおよびアンマーシャリングするフレームワーク |
Country Status (3)
| Country | Link |
|---|---|
| US (2) | US6044409A (ja) |
| EP (1) | EP0817022A3 (ja) |
| JP (1) | JPH1063505A (ja) |
Families Citing this family (105)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6598094B1 (en) | 1998-03-20 | 2003-07-22 | Sun Microsystems, Inc. | Method and apparatus for determining status of remote objects in a distributed system |
| US6446070B1 (en) | 1998-02-26 | 2002-09-03 | Sun Microsystems, Inc. | Method and apparatus for dynamic distributed computing over a network |
| US6832223B1 (en) | 1996-04-23 | 2004-12-14 | Sun Microsystems, Inc. | Method and system for facilitating access to a lookup service |
| US6282652B1 (en) | 1998-02-26 | 2001-08-28 | Sun Microsystems, Inc. | System for separately designating security requirements for methods invoked on a computer |
| US6247026B1 (en) | 1996-10-11 | 2001-06-12 | Sun Microsystems, Inc. | Method, apparatus, and product for leasing of delegation certificates in a distributed system |
| US6487607B1 (en) | 1998-02-26 | 2002-11-26 | Sun Microsystems, Inc. | Methods and apparatus for remote method invocation |
| 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 |
| 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 |
| US6463446B1 (en) | 1998-02-26 | 2002-10-08 | Sun Microsystems, Inc. | Method and apparatus for transporting behavior in an event-based distributed system |
| US6466947B2 (en) | 1998-03-20 | 2002-10-15 | Sun Microsystems, Inc. | Apparatus and method for dynamically verifying information in a distributed system |
| US6421704B1 (en) | 1998-03-20 | 2002-07-16 | Sun Microsystems, Inc. | Method, apparatus, and product for leasing of group membership in a distributed system |
| US6578044B1 (en) | 1997-11-17 | 2003-06-10 | Sun Microsystems, Inc. | Method and system for typesafe attribute matching |
| US6438614B2 (en) | 1998-02-26 | 2002-08-20 | Sun Microsystems, Inc. | Polymorphic token based control |
| US6185611B1 (en) | 1998-03-20 | 2001-02-06 | Sun Microsystem, Inc. | Dynamic lookup service in a distributed system |
| 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 |
| US6138238A (en) | 1997-12-11 | 2000-10-24 | Sun Microsystems, Inc. | Stack-based access control using code and executor identifiers |
| US5991535A (en) * | 1996-07-03 | 1999-11-23 | Sun Microsystems, Inc. | Visual composition tool for constructing application programs using distributed objects on a distributed object network |
| US6237009B1 (en) | 1996-10-11 | 2001-05-22 | Sun Microsystems, Inc. | Lease renewal service |
| US5832529A (en) | 1996-10-11 | 1998-11-03 | Sun Microsystems, Inc. | Methods, apparatus, and product for distributed garbage collection |
| US6728737B2 (en) | 1996-10-11 | 2004-04-27 | Sun Microsystems, Inc. | Method and system for leasing storage |
| US6687761B1 (en) * | 1997-02-20 | 2004-02-03 | Invensys Systems, Inc. | Process control methods and apparatus with distributed object management |
| JP3817823B2 (ja) * | 1997-04-10 | 2006-09-06 | ソニー株式会社 | データ通信方法 |
| GB2326315B (en) * | 1997-06-10 | 2002-05-29 | Ibm | Distributed data processing system and method for controlling such a system |
| US6957427B1 (en) | 1997-10-15 | 2005-10-18 | Sun Microsystems, Inc. | Remote object activation in a distributed system |
| US6405264B1 (en) | 1997-12-18 | 2002-06-11 | Sun Microsystems, Inc. | Marshaling and unmarshaling framework for supporting filters in a distributed object system |
| 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 |
| US6249803B1 (en) | 1997-12-18 | 2001-06-19 | Sun Microsystems, Inc. | Method and apparatus for executing code during method invocation |
| US6510460B1 (en) * | 1997-12-18 | 2003-01-21 | Sun Microsystems, Inc. | Method and apparatus for enforcing locking invariants in multi-threaded systems |
| EP1044409B1 (de) * | 1998-01-02 | 2002-06-05 | Acos International Limited | Programmablaufverfahren und verfahren zur erweiterung eines programmkomponentensystems |
| US6604127B2 (en) | 1998-03-20 | 2003-08-05 | Brian T. Murphy | Dynamic lookup service in distributed system |
| DE69903711T2 (de) * | 1998-02-26 | 2003-06-26 | Sun Microsystems, Inc. | Hinausgezögerte wiederherstellung von objekten und entfernte ladung für die mitteilung von ereignissen in einem verteilten system |
| KR20010034514A (ko) | 1998-02-26 | 2001-04-25 | 케네쓰 올센 | 원격 메소드를 식별하는 해시 판정 방법 및 시스템 |
| US6629126B1 (en) * | 1998-03-13 | 2003-09-30 | Genuity Inc. | Framework for providing quality of service requirements in a distributed object-oriented computer system |
| US6298391B1 (en) | 1998-03-13 | 2001-10-02 | Microsoft Corporation | Remote procedure calling with marshaling and unmarshaling of arbitrary non-conformant pointer sizes |
| US6154747A (en) * | 1998-08-26 | 2000-11-28 | Hunt; Rolf G. | Hash table implementation of an object repository |
| US6356930B2 (en) * | 1998-10-16 | 2002-03-12 | Silverstream Software, Inc. | Connection concentrator for distributed object systems |
| US6385661B1 (en) * | 1998-10-19 | 2002-05-07 | Recursion Software, Inc. | System and method for dynamic generation of remote proxies |
| WO2000034883A2 (en) * | 1998-12-11 | 2000-06-15 | Microsoft Corporation | Accelerating a distributed component architecture over a network using an implicit flow control |
| US6901518B1 (en) | 1999-04-08 | 2005-05-31 | Sun Microsystems, Inc. | Method and system for establishing trust in downloaded proxy code |
| US8346971B2 (en) * | 1999-05-04 | 2013-01-01 | At&T Intellectual Property I, Lp | Data transfer, synchronising applications, and low latency networks |
| US6877163B1 (en) | 1999-06-14 | 2005-04-05 | Sun Microsystems, Inc. | Method and system for dynamic proxy classes |
| US6412010B1 (en) * | 1999-06-18 | 2002-06-25 | Hewlett-Packard Company | Apparatus and method for implementing a network protocol that supports the transmission of a variable number of application-usable object over a network as a single network transmittable container object and the re-creation of those application-usable object therefrom |
| EP1065592B1 (en) * | 1999-06-25 | 2008-07-23 | Canon Research Centre France S.A. | Shared management of data objects in a communication network |
| US6829772B2 (en) * | 1999-11-30 | 2004-12-07 | Sun Microsystems, Inc. | Apparatus and methods for communicating between resource domains |
| US6678743B1 (en) | 1999-11-30 | 2004-01-13 | Recursion Software, Inc. | Method for moving objects in a distributed computing environment |
| US6947965B2 (en) | 1999-11-30 | 2005-09-20 | Recursion Software, Inc. | System and method for communications in a distributed computing environment |
| US6931455B1 (en) * | 1999-11-30 | 2005-08-16 | Recursion Software, Inc. | System and method for communications between a CORBA object request broker and a non-CORBA object request broker |
| US6658660B1 (en) * | 1999-12-31 | 2003-12-02 | Nortel Networks Limited | System and method of automatically modifying source code for marshaling, unmarshaling and marking modified data objects |
| US7260543B1 (en) | 2000-05-09 | 2007-08-21 | Sun Microsystems, Inc. | Automatic lease renewal with message gates 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 |
| US6918084B1 (en) | 2000-05-09 | 2005-07-12 | Sun Microsystems, Inc. | Spawning new repository spaces using information provided in advertisement schema messages |
| US6850979B1 (en) | 2000-05-09 | 2005-02-01 | Sun Microsystems, Inc. | Message gates in a distributed computing environment |
| US7010573B1 (en) | 2000-05-09 | 2006-03-07 | Sun Microsystems, Inc. | Message gates using a shared transport in a distributed computing environment |
| US7200848B1 (en) | 2000-05-09 | 2007-04-03 | Sun Microsystems, Inc. | Migrating processes using data representation language representations of the processes in a distributed computing environment |
| US7072967B1 (en) | 2000-05-09 | 2006-07-04 | Sun Microsystems, Inc. | Efficient construction of message endpoints |
| US6950875B1 (en) | 2000-05-09 | 2005-09-27 | Sun Microsystems, Inc. | Message conductors in a distributed computing environment |
| US6917976B1 (en) | 2000-05-09 | 2005-07-12 | Sun Microsystems, Inc. | Message-based leasing of resources in a distributed computing environment |
| US7065574B1 (en) | 2000-05-09 | 2006-06-20 | Sun Microsystems, Inc. | Messaging system using pairs of message gates in a distributed computing environment |
| US7016966B1 (en) | 2000-05-09 | 2006-03-21 | Sun Microsystems, Inc. | Generating results gates in a distributed computing environment |
| US7080078B1 (en) | 2000-05-09 | 2006-07-18 | Sun Microsystems, Inc. | Mechanism and apparatus for URI-addressable repositories of service advertisements and other content in a distributed computing environment |
| US6862594B1 (en) | 2000-05-09 | 2005-03-01 | Sun Microsystems, Inc. | Method and apparatus to discover services using flexible search criteria |
| US7395333B1 (en) | 2000-05-09 | 2008-07-01 | Sun Microsystems, Inc. | Method and apparatus to obtain negotiated service advertisement |
| US6973493B1 (en) | 2000-05-09 | 2005-12-06 | Sun Microsystems, Inc. | Mechanism and apparatus for security of newly spawned repository spaces in a distributed computing environment |
| US7370091B1 (en) | 2000-05-09 | 2008-05-06 | Sun Microsystems, Inc. | Method and apparatus for obtaining space advertisements |
| US6898618B1 (en) | 2000-05-09 | 2005-05-24 | Sun Microsystems, Inc. | Client-specified display services in a distributed computing environment |
| US8082491B1 (en) | 2000-05-09 | 2011-12-20 | Oracle America, Inc. | Dynamic displays in a distributed computing environment |
| US7188251B1 (en) | 2000-05-09 | 2007-03-06 | Sun Microsystems, Inc. | System and method for secure message-based leasing of resources in a distributed computing environment |
| US7243356B1 (en) | 2000-05-09 | 2007-07-10 | Sun Microsystems, Inc. | Remote method invocation with secure messaging in a distributed computing environment |
| US6868447B1 (en) | 2000-05-09 | 2005-03-15 | Sun Microsystems, Inc. | Mechanism and apparatus for returning results of services in a distributed computing environment |
| US6970869B1 (en) | 2000-05-09 | 2005-11-29 | Sun Microsystems, Inc. | Method and apparatus to discover services and negotiate capabilities |
| US6957237B1 (en) | 2000-06-02 | 2005-10-18 | Sun Microsystems, Inc. | Database store for a virtual heap |
| US6934755B1 (en) | 2000-06-02 | 2005-08-23 | Sun Microsystems, Inc. | System and method for migrating processes on a network |
| US6760815B1 (en) | 2000-06-02 | 2004-07-06 | Sun Microsystems, Inc. | Caching mechanism for a virtual heap |
| US6865657B1 (en) | 2000-06-02 | 2005-03-08 | Sun Microsystems, Inc. | Garbage collector for a virtual heap |
| US6941410B1 (en) | 2000-06-02 | 2005-09-06 | Sun Microsystems, Inc. | Virtual heap for a virtual machine |
| 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 |
| US7237012B1 (en) * | 2000-12-29 | 2007-06-26 | Nortel Networks Limited | Method and apparatus for classifying Java remote method invocation transport traffic |
| US7296275B2 (en) | 2001-01-04 | 2007-11-13 | Sun Microsystems, Inc. | Method and system for passing objects in a distributed system using serialization contexts |
| US6986147B2 (en) * | 2001-03-28 | 2006-01-10 | International Business Machines Corporation | Method for transparent, location-independent, remote procedure calls in a heterogeneous network environment |
| US7028313B2 (en) * | 2001-03-28 | 2006-04-11 | International Business Machines Corporation | Method for transmitting function parameters to a remote node for execution of the function thereon |
| US7660887B2 (en) | 2001-09-07 | 2010-02-09 | Sun Microsystems, Inc. | Systems and methods for providing dynamic quality of service for a distributed system |
| US7756969B1 (en) | 2001-09-07 | 2010-07-13 | Oracle America, Inc. | Dynamic provisioning of identification services in a distributed system |
| US6985922B1 (en) * | 2001-12-21 | 2006-01-10 | S.J. Bashen, Inc. | Method, apparatus and system for processing compliance actions over a wide area network |
| US20030192038A1 (en) * | 2002-04-09 | 2003-10-09 | Thomas Hagmann | Linking data objects to a project development system |
| US7290262B2 (en) * | 2002-05-21 | 2007-10-30 | International Business Machine Corporation | Method and apparatus for dynamically determining information for deploying a web service |
| US7448066B2 (en) * | 2002-09-19 | 2008-11-04 | International Business Machines Corporation | Application server object-level security for distributed computing domains |
| US7475402B1 (en) * | 2003-04-30 | 2009-01-06 | Sun Microsystems, Inc. | Method and apparatus to isolate changes in remoting system servers |
| US7487510B1 (en) * | 2003-04-30 | 2009-02-03 | Sun Microsystems, Inc. | Method and apparatus to isolate changes in remoting system clients |
| US7792874B1 (en) | 2004-01-30 | 2010-09-07 | Oracle America, Inc. | Dynamic provisioning for filtering and consolidating events |
| US20050216914A1 (en) * | 2004-03-05 | 2005-09-29 | International Business Machines Corporation | Application of the command pattern to a client/server application |
| US8533737B2 (en) * | 2004-03-18 | 2013-09-10 | Global Infotek, Inc. | System and method for interfacing distributed systems with different frameworks |
| US20060106864A1 (en) * | 2004-11-12 | 2006-05-18 | International Business Machines Corporation | System, computer program product and method of narrowing an enterprise Java bean (EJB) object reference to a home implementation class name |
| US7472174B2 (en) * | 2005-01-18 | 2008-12-30 | International Business Machines Corporation | Abstract mechanism for constructing commands for the command pattern |
| US7921216B2 (en) * | 2005-02-01 | 2011-04-05 | Microsoft Corporation | System and method for building and using communication binding objects |
| US7574710B1 (en) | 2005-04-28 | 2009-08-11 | Sun Microsystems, Inc. | Method and apparatus for determining data encoding format in RMI-IIOP messages |
| US7533156B1 (en) | 2005-04-28 | 2009-05-12 | Sun Microsystems, Inc. | Method and apparatus for RMI-IIOP implementation with java serialization |
| US7680800B2 (en) * | 2005-05-20 | 2010-03-16 | International Business Machines Corporation | Algorithm to marshal/unmarshal XML schema annotations to SDO dataobjects |
| US7743167B2 (en) * | 2005-11-23 | 2010-06-22 | Oracle America, Inc. | Method and system for servicing requests in a dynamic cluster |
| US8082555B2 (en) * | 2006-02-21 | 2011-12-20 | Microsoft Corporation | Routing calls via reflective interfaces and a proxy |
| US8239877B2 (en) * | 2007-08-28 | 2012-08-07 | International Business Machines Corporation | Pre-population of meta data cache for resolution of data marshaling issues |
| US20100333115A1 (en) * | 2009-06-30 | 2010-12-30 | Sap Ag | System and method for a source-independent server interface accepting origin specific commands |
| US8464281B2 (en) * | 2010-08-18 | 2013-06-11 | Sas Institute, Inc. | Techniques to remotely access object events |
| US9674637B2 (en) | 2011-06-16 | 2017-06-06 | Microsoft Technology Licensing, Llc | Object marshaling |
| US9058225B2 (en) | 2013-03-28 | 2015-06-16 | Red Hat, Inc. | Secure and reliable mechanism to provide a single object instance in a clustered system |
| US9348565B2 (en) * | 2014-03-12 | 2016-05-24 | International Business Machines Corporation | Compact data marshaller generation |
Family Cites Families (4)
| 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 |
| DE69327448T2 (de) * | 1992-12-21 | 2004-03-04 | Sun Microsystems, Inc., Mountain View | Verfahren und Vorrichtung für Teilaufgaben in verteiltem Verarbeitungssystem |
| 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 |
| 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 |
-
1996
- 1996-06-26 US US08/670,681 patent/US6044409A/en not_active Expired - Lifetime
-
1997
- 1997-05-09 EP EP97303163A patent/EP0817022A3/en not_active Withdrawn
- 1997-06-24 JP JP9167663A patent/JPH1063505A/ja active Pending
-
2000
- 2000-02-18 US US09/507,284 patent/US6272557B1/en not_active Expired - Lifetime
Also Published As
| Publication number | Publication date |
|---|---|
| EP0817022A3 (en) | 2003-11-12 |
| US6272557B1 (en) | 2001-08-07 |
| EP0817022A2 (en) | 1998-01-07 |
| US6044409A (en) | 2000-03-28 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US6272557B1 (en) | Framework for marshaling and unmarshaling argument object references | |
| US6167458A (en) | Transport independent invocation and servant interfaces that permit both typecode interpreted and compiled marshaling | |
| US6718550B1 (en) | Method and apparatus for improving the performance of object invocation | |
| US5991823A (en) | Low overhead object adaptor | |
| US5727145A (en) | Mechanism for locating objects in a secure fashion | |
| US6260078B1 (en) | Using a distributed object system to find and download java-based applications | |
| US6044224A (en) | Mechanism for dynamically associating a service dependent representation with objects at run time | |
| US6438616B1 (en) | Method and apparatus for fast, local corba object references | |
| US6185609B1 (en) | Method, apparatus and program to provide client access to a management information service residing on a server in a computer network system | |
| US6904600B1 (en) | Application programming interface to the simple object access protocol | |
| US8307380B2 (en) | Proxy object creation and use | |
| US6687831B1 (en) | Method and apparatus for multiple security service enablement in a data processing system | |
| JPH0926890A (ja) | オブジェクトを管理するための方法、装置、および、データ構造 | |
| US6189048B1 (en) | Mechanism for dispatching requests in a distributed object system | |
| US6516354B2 (en) | Method and apparatus for efficient representation of variable length identifiers in a distributed object system | |
| JPH11259301A (ja) | C++における例外の遅延投入のための方法及び装置 | |
| US6920636B1 (en) | Queued component interface passing for results outflow from queued method invocations | |
| WO2003024054A2 (en) | Inbound connector | |
| US20020178141A1 (en) | Method and apparatus for remote inter-language method calling | |
| JP4233775B2 (ja) | データ通信方法、データ通信システムおよびプログラム | |
| Hong | Integrating agents and Corba |