JP3595340B2 - オブジェクト指向環境における回復可能プロキシ・オブジェクト - Google Patents
オブジェクト指向環境における回復可能プロキシ・オブジェクト Download PDFInfo
- Publication number
- JP3595340B2 JP3595340B2 JP51173097A JP51173097A JP3595340B2 JP 3595340 B2 JP3595340 B2 JP 3595340B2 JP 51173097 A JP51173097 A JP 51173097A JP 51173097 A JP51173097 A JP 51173097A JP 3595340 B2 JP3595340 B2 JP 3595340B2
- Authority
- JP
- Japan
- Prior art keywords
- proxy
- address space
- server
- client
- target object
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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)
Description
【0001】
【発明の属する技術分野】
発明の分野
本発明は、コンピュータ化オブジェクト指向技法に関し、具体的には、サーバにあるターゲット・オブジェクトを表すプロキシ・オブジェクトがクライアントにあり、プロキシ・オブジェクトがサーバの障害後に回復可能な、前記技法で使用するプロキシ・オブジェクトに係わる。
【0002】
【従来の技術】
発明の背景
オブジェクト指向プログラミングの概要
オブジェクト指向プログラミングが開発される以前に、構造化プログラミングと呼ばれるプログラミングの一形態が開発され、今でも広く使用されている。この技法では、まずさまざまな関数を定義し、次にプログラムがその定義された関数を適切な時点で呼び出してアプリケーション・プログラムの全体的な目的を実現することから成る。このような関数は、データを操作するために使用するメソッドを定義するが、データ自体は定義しない。構造化プログラミングはモジュール化手法の機会をもたらした。これは、メンテナンスやデバッグが難しい「スパゲッティ・コード」を克服する重要な改良であった。それにもかかわらず、構造化プログラミングには、プログラムによってモデル化される世界における概念および実体と、プログラミング言語における概念との間の「意味ギャップ」や、プログラム・コードのテキスト性、コード・モジュールの再使用可能性の限界などいくつかの欠点も残されている。
【0003】
その後、オブジェクト指向プログラミングと呼ばれる新しいプログラミング・パラダイムが開発された。この技法では、関数を定義する代わりに、「クラス」を定義する。クラス定義によって、そのクラスの任意のインスタンスが実行することができるメソッドと、そのクラスのインスタンスに含まれる属性(またはデータ)とを定義する。オブジェクトはクラスのメンバーであり、クラス定義で定義されているメソッドを実際に実行することができる。オブジェクトは、クラスによって定義された各属性に付随する値を持つ。オブジェクトは、ゼロまたは1個以上の属性を持ち、そのオブジェクトに対して実行するこができるゼロまたは1個以上のメソッドを持つ。
【0004】
オブジェクトとのインタフェースは、メソッドを介して属性にアクセスすることができる方法である。そのクラスから導き出されるすべてのオブジェクトがそのクラスのインタフェースを共有する。オブジェクトの実現部分はオブジェクトを呼び出すアプリケーションから隠蔽される。オブジェクトへのインタフェースが変わらない限り、アプリケーションに影響を与えることなく実現部分を完全に変えることはできない。
【0005】
オブジェクトが内部でどのように「見える」か、また内部で何を「行う」かを記述する必要なしにオブジェクトの「外観」を記述するこの技法を単純化した例として、また、そのようなオブジェクト指向プログラミングの重要な利点を例示するための例として、オブジェクト指向手法によってモデル化することができる普通の家庭用トースタを考えてみる。外部「インタフェース」は、トーストの所望の焼き加減を調節するパラメータを本質的に表すつまみと、パンを入れるスロットと、トースタへの挿入とトースタの起動を行うレバーとから成る。重要な概念は、この種の家電製品のエンドユーザはそれを使用するためにトースタの「内部」を知る必要がないことである。たとえば、熱が電気によって供給されるのか、化学薬品やその他の手段によって供給されるのかを知る必要はない。ユーザは上記の外面部と正しくインタフェースするだけでよい。
【0006】
プログラミングにおけるこの進化の利点は、上記の例を続けて用いると、トースタをモデル化するプログラミング・コードのモジュールであるオブジェクトの設計者が、ユーザにとって内部が見えないために、たとえばユーザがそのオブジェクトを使用する能力に影響を与えることなくトースタの内部要素を改良することに焦点を絞ることができ、効率を向上させることができることである。したがって、より抽象的に言うと、オブジェクト指向技法は本質的に、オブジェクトのインタフェースをオブジェクトの実現部分から分離する利点をもたらすものと見なすことができる。ソフトウェア環境においては、それによって、外部の「つまみ」などやその予想される動作が変わらない限り、アプリケーション・プログラム全体を書き直さなくてもオブジェクトの内部を書き直し、改良することができる。
【0007】
本発明の理解を助けるオブジェクト技法に関するその他の一般的背景については、デイビッドA.テイラー(David A.Taylor)による「Object Oriented Technology−A Manager's Guide」(copyright 1990,Servio Corporation)を参照されたい。
【0008】
オブジェクト指向プログラミングの発展に伴い、様々な組織やソフトウェア会社によっていくつかの「オブジェクト・モデル」がさらに改良され、開発された。オブジェクトとその外部インタフェースを定義する方法が規定され、そのような様々なオブジェクト・モデルによって特にカプセル化と継承の特性が規定された。ある程度の高レベルから見れば、これらの様々なオブジェクト・モデルはきわめて類似している。たとえば、システム・オブジェクト・モデル(SOM)、コモンLispオブジェクト・システム(CLOS)、Smalltalk、およびC++などがある。本質的には、これらの様々なオブジェクト・モデルはオブジェクトが何かであるかという問いに答える規則の集まりに過ぎず、より低レベルで検討するとそれぞれわずかに異なった答えが出る。たとえば、言語構文とカプセル化および継承の機能はオブジェクト・モデルによって異なる。
【0009】
これらの相違の直接の結果として、異なるオブジェクト指向言語およびオブジェクト・モデルの使用可能性により生じる1つの問題は、そのような言語の混合で書かれたオブジェクト・プログラム間のインターオペラビリティを実現することができないことであった。この問題は、オブジェクト技法の重要な利点の1つであるコードの再使用可能性に悪影響を与える。業界を悩ませるこの問題を解決しようとして、委員会は共通オブジェクト要求ブローカ・アーキテクチャ(CORBA)に到達した。これには標準化インタフェース定義言語(IDL)が含まれていた。業界ではオブジェクトインタフェースをどのように規定するか、すなわち、オブジェクト・インタフェースを定義する標準に関して本質的に合意に達し、その結果、1つのベンダーによって定義されたオブジェクトを他のベンダーが使用することが可能になった。「The Common Object Request Broker:Architecture and Specification」(OMG Document Number 91.12.1 Revision1.1)を参照されたい。
【0010】
オブジェクト要求ブローカ(ORB)
CORBAアーキテクチャで記述されたオブジェクト要求ブローカ(ORB)は、UNIXオペレーティング・システム環境で作業をする人には周知のリモート・プロシージャ・コール(RPC)に似ている(UNIXはX/Open CO.Ltd.によって独占的にライセンス許諾される商標である)。
【0011】
従来技術のシステムを第1図および第2図に示す。
【0012】
第1図は、クライアント/サーバ環境にある従来技術のオブジェクト要求ブローカを示すブロック図である。
【0013】
第2図は、DSOMと呼ばれる従来技術の環境を示すブロック図である。
【0014】
第1図は、ORBを含むクライアント/サーバ環境を示す。このORBは2つの部分に分かれており、そのうちの部分50はORBを使用して各クライアントで実行され、部分52はORBをサポートする各サーバで実行される。RPCと同様に、ORBは1つのアドレス空間53で稼働しているクライアント・アプリケーション48が別のアドレス空間54のオブジェクト51と通信することができるようにする機構である。他方のアドレス空間54、すなわちクライアント・アプリケーション48が実行されているアドレス空間と同じアドレス空間53ではないアドレス空間にあるオブジェクト51を「リモート」オブジェクトと呼ぶ。クライアント・アプリケーション48と同じアドレス空間53にあるオブジェクトを「ローカル」オブジェクトと呼ぶ。ORB50は1つのアドレス空間53内のクライアント・アプリケーション48からの呼出しを代行受信し、それをネットワーク・プロトコルにカプセル化し、別のアドレス空間54内のターゲット・オブジェクト51に合わせて呼出しをデコードし、その結果を呼び出し側クライアント・アプリケーション48に返す。これによって、一方のアドレス空間(ローカル)で稼働しているクライアント・アプリケーション48が他方のアドレス空間(リモート)内のオブジェクト51と通信することができる。ORBは、オブジェクト指向プログラミングによって得られる高度の柔軟性と能力を備えるように設計されている点で、RPCが改良されたものである。
【0015】
「オブジェクト・モデル」は様々な組織やソフトウェア会社によって開発されている。オブジェクト・モデルはオブジェクトとその外部インタフェースの定義の仕方を規定する。このようなオブジェクト・モデルの1つは、IBM Corporationのシステム・オブジェクト・モデル(SOM)である。SOMでは、オブジェクトを使用するすべてのアプリケーションはそれらのオブジェクトが入っている1つのアドレス空間内で実行される。SOM内で作成されるものは、分散システム・オブジェクト・モデル(DSOM)と呼ばれるオブジェクト・クラスのフレームワークである。DSOMでは、1つのアドレス空間内の(クライアントで稼働している)アプリケーションは別のアドレス空間(サーバに属するアドレス空間など)内のオブジェクトにアクセスすることができる。これらのアドレス空間は同じシステムと異なるシステムのどちらにあってもよい。実際には、システムは同じプラットフォームで稼働している必要はない。たとえば、OS/2システム上のアドレス空間で稼働しているクライアント・アプリケーションがAIX/6000システム上のアドレス空間にあるオブジェクトにアクセスすることができ、その逆も可能である。SOMとDSOMの両方については、IBM Corporationが発行している「SOMobject:A Practical Introduction to SOM and DSOM」(Copyright 1994,Order no.GG24−4357−00)に記載されている。
【0016】
上記のシステム・オブジェクト・モデル(SOM)は、CORBAとIDLに準拠した1つのオブジェクト・モデルである。準拠とは、SOMオブジェクトがCORBAのセマンティクスに従っており、SOMオブジェクトがIDL構文で定義されているという意味である。
【0017】
DSOMのフレームワークは、ターゲット・オブジェクトがインスタンス化される場所やプラットフォームのタイプをクライアント・プログラマが知らなくても済むようにするオブジェクト実現部を備える。このプロセス間通信に使用される通信機構は、プログラマには見えないように完全に隠蔽される。
【0018】
クライアント−サーバ・アーキテクチャ
クライアント−サーバ・アーキテクチャでは、アプリケーション・プログラムは個別の構成要素として実行される個別のタスクに分けられる。各構成要素にはクライアントまたはサーバの役割が割り当てられる。1つの構成要素は、ある目的のためにはサーバの役割を果たし、他の目的のためにはクライアントの役割を果たすことができる。各構成要素は独立して動作し、特定の責任を担う。クライアントの役割が割り当てられた構成要素は、サーバ・プロセス内のオブジェクトに対するメソッド呼出しを行うことによって、サーバにサービスを要求する。サーバの役割が割り当てられた構成要素は、それらのメソッド呼出しを受け取り、該当するオブジェクトに対してそれらのメソッド呼出しを行い、その結果をクライアントに返すことによってサービスを提供する。クライアントとサーバは事前定義されたプロトコルを使用してメッセージを交換する。サーバは多くのクライアントにサービスを提供することができ、クライアントは多くのサーバにサービスを要求することができる。
【0019】
プロキシ・オブジェクト
プロキシ・オブジェクトとは、リモート・ターゲット・オブジェクトのローカル表現である。プロキシ・オブジェクトはターゲット・オブジェクトのインタフェースを継承し、その結果、同じメソッドに応答する。プロキシ・オブジェクトで呼び出されたメソッドはローカルでは実行されず、実ターゲット・オブジェクトに転送されて実行される。クライアントで稼働しているプログラムは常に、各リモート・オブジェクトが稼働しているサーバ内の各リモート・オブジェクトのローカル・プロキシ・オブジェクトをそのクライアント内に持っている。プロキシ・オブジェクト内には、ターゲット・オブジェクトが入っているサーバ内の記憶場所を指すポインタが含まれている。プロキシ・オブジェクトにはターゲット・オブジェクトの名前は含まれない。プロキシ・オブジェクトは、リモート・サーバに対してリモート・オブジェクトに対するメソッド呼出しの要求が行われると常に、DSOM実行時環境によって作成される。
【0020】
DSOM環境
クライアント・プロセスはサーバ・プロセス内のオブジェクトについてメソッド呼び出しを行う。これらのメソッド呼び出しは、たとえば属性に付随する値の入手(読取り)や属性に付随する値の設定(書込み)を行うことができる。サーバ・プロセスはこれらのメソッド呼び出しを受け取り、該当するオブジェクトについてそれらを呼び出し、クライアントに結果を返す。第2図にDSOM環境の構成要素の一部の超高水準図を示す。クライアント・アドレス空間53はDSOMオブジェクト・マネージャ303と呼ぶオブジェクトを含む。このオブジェクトは、サーバ・オブジェクト313の(後述する)プロキシ・オブジェクト305を指すポインタを返すことによって、クライアント・アプリケーション(第1図の48)がサーバ54を見つけ出すのを支援する。クライアントは次に、そのサーバ54上で事前定義されているクラスのオブジェクト51のインスタンスを作成したり、そのサーバ上にすでに存在するオブジェクト51へのアクセスを獲得したり、そのサーバ54上のオブジェクト51が不要になった場合にそれを破棄したりするために、サーバ・オブジェクト313に対するメソッドを(そのプロキシ・オブジェクト305を介して)呼び出す。
【0021】
クライアント・アプリケーション(第1図の48)は、サーバ・プロキシ・オブジェクト305に対して呼出しを行い、メソッド呼出しを行いたいオブジェクト51のある場所を見つけ出す。サーバ・プロキシ・オブジェクト305は、サーバ・オブジェクト313を呼び出してサーバ内のターゲット・オブジェクト51の記憶場所を判断する。サーバ・オブジェクトは、この情報をネーム・サーバ317から入手する。ネーム・サーバの機能はオブジェクト名が与えられた場合に記憶場所を示すことである。その機能はUNIXオペレーティング・システム環境の業者には周知である。サーバ・オブジェクト313は、サーバ・プロキシ・オブジェクト305に対してターゲット・オブジェクト51の記憶場所を示す。次にクライアント・アドレス空間53内にターゲット・オブジェクト51のプロキシ・オブジェクト49が作成される。そうすると、ローカル・クライアント・アプリケーションは、ローカル・プロキシ・オブジェクト49に対して、リモート・ターゲット・オブジェクト51であるかのようにメソッド呼出しを行うことができる。DSOMは、そのメソッド呼出しをサーバ・アドレス空間54に渡し、そこでターゲット・オブジェクト51に対してメソッド呼出しが行われ、その結果がローカル・クライアント・アプリケーションに返される。
【0022】
サーバまたはクライアントあるいはその両方の役割を果たすどのシステム上でも、「somdd」と呼ばれる別個のデーモン・プロセス341がアクティブになっていなければならない。このプロセスは、サーバ・プロセスの開始、常時使用可能でなければならないサービスの提供、およびクライアント・プロセスとサーバ・プロセスとの間のバインディングの作成の際の手段となる。「デーモン・プロセス」という用語とその機能は、UNIXオペレーティング・システム環境の業者には周知であろう。このデーモン・プロセスは本発明ではこれ以上の役割を果たさない。
【0023】
DSOM環境に必要な2つの追加の機能がある。それは、インタフェース・リポジトリ321とインプリメンテーション・リポジトリ331である。
【0024】
インタフェース・リポジトリ321は、オブジェクト・インタフェース定義を記憶するデータベースである。インタフェース・リポジトリにはクラス・インタフェース定義(メソッドのパラメータと戻り値)が登録される。インタフェース・リポジトリは本発明では役割を果たさない。インプリメンテーション・リポジトリには、サーバ・インプリメンテーションとそれがサポートするクラスが登録される。すなわち、サーバおよびクラスと、DSOMがオブジェクト・サーバを見つけ出して起動するのに必要な属性(サーバ・プログラム名、サーバがあるマシンのホスト名など)がインプリメンテーション・リポジトリに登録される。
【0025】
持続性
持続オブジェクトとは、そのオブジェクトに付随する属性が不揮発性記憶装置に記憶され、それを作成したプロセスが終了した後でも使用可能なオブジェクトである。持続性でないオブジェクトは、そのオブジェクトの属性に付随する属性が不揮発性記憶域に記憶されておらず、そのオブジェクトを作成したプロセスが終了した後は使用することができない。サーバがクラッシュした場合、非持続性オブジェクトは復元されないが、持続性オブジェクトはサーバが回復可能なサーバであれば復元され、したがって誤動作が起こった後でも再始動される。
【0026】
サーバ誤動作
第2図を参照すると、サーバ54が誤動作した場合、サーバ・アドレス空間54にあるターゲット・オブジェクト51を指すクライアント・アドレス空間53にあるプロキシ・オブジェクト49内の参照は無効になる。サーバ54はクライアント・アプリケーション(第1図の48)がオブジェクトを使用することができるようにオブジェクトをメモリに再ロードする。サーバ54は、誤動作が起こる前にロードされていた場所とは異なる場所にあるメモリにオブジェクト51を再ロードすることができる。オブジェクト51が特にクライアント・アプリケーション(第1図の48)の要求によってロードされていた場合、すなわち持続オブジェクトでない場合、サーバ54はオブジェクト51をメモリに再ロードすることがまったくできない。このいずれの状況でも、サーバ54内のターゲット・オブジェクト51を指すプロキシ・オブジェクト49内に含まれる参照は無効になる。プロキシ・オブジェクト49を使用すると、参照されているオブジェクトが誤ったオブジェクトであることなどを示すエラー条件になる。オブジェクト要求ブローカの実施態様によっては、これによってサーバ内のメモリの破壊や、サーバをさらに再始動させる必要があるサーバの誤動作など、重大な影響が生じる可能性がある。
【0027】
クライアント・アプリケーション48は、そのプロキシ・オブジェクト49のうちの1つまたは複数が無効になったことを示すエラー条件を受け取った場合、以下のステップのいずれかを実行する必要がある。
A.ターゲット・オブジェクト51が持続オブジェクトでなかった場合、クライアント・アプリケーション48はサーバ54内に新しいターゲット・オブジェクト51を作成する必要がある。クライアント・アプリケーション48はサーバ・プロキシ・オブジェクト305を呼び出し、作成するオブジェクトのクラスを指定して新しいターゲット・オブジェクト51を作成するように要求する。サーバ・プロキシ・オブジェクト305はサーバ・オブジェクト313を呼び出し、サーバ54内のターゲット・オブジェクト51の記憶場所を判断する。サーバ・オブジェクト313はターゲット・オブジェクト51の記憶場所をサーバ・プロキシ・オブジェクト305に送る。次に、クライアント・アドレス空間53内にターゲット・オブジェクト51のプロキシ・オブジェクト49が作成される。プロキシ・オブジェクト49には、ターゲット・オブジェクト51を見つけることできるサーバ54のメモリ内の場所を指す参照が含まれる。
B.ターゲット・オブジェクトが持続性だった場合、クライアント・アプリケーション48はターゲット・オブジェクト51が入っているサーバ54のメモリ内の場所を指す参照を含む新しいプロキシ・オブジェクト49を作成する必要がある。
【0028】
【発明が解決しようとする課題】
サーバ54が誤動作した場合、上記のステップを行うことによって、クライアント・アドレス空間53にあるプロキシ・オブジェクト49からターゲット・サーバ54にあるすべてのターゲット・オブジェクト51を指すすべての参照をリフレッシュしなければならない可能性が高い。これは、典型的なクライアント・アプリケーション48にとって重大な作業である。クライアント・アプリケーション48は、アドレス空間全体の様々な場所にあるプロキシ・オブジェクト49を指すポインタを持っており、以下のタスクを行う必要がある。
1.サーバ54の誤動作の前にはターゲット・オブジェクト51を指す有効な参照であったが今は無効になっているサーバ54内の記憶場所を指す参照を含む古いプロキシ・オブジェクト49を破棄する必要がある。
2.古い各プロキシ・オブジェクトに対応する新しいプロキシ・オブジェクト49を作成する必要がある。これらの新しいプロキシ・オブジェクト49は、それに含まれている参照が、サーバ54が誤動作後に再始動されたために得られたサーバ54内のターゲット・オブジェクト51を指す有効な参照である点を除けば、古いプロキシ・オブジェクトに対応している。
3.クライアント・アドレス空間53にあるプロキシ・オブジェクト49を指すクライアント・アプリケーション内のすべてのポインタは、ステップ1で破棄されており、ステップ2で作成されたそれに対応する新しいプロキシ・オブジェクト49を指すポインタに更新する必要がある。このステップでは、そのポインタを更新する必要のあるアプリケーションに固有の知識が必要である。
【0029】
サーバが誤動作した場合、サーバにあるターゲット・オブジェクトを指す、クライアントにあるプロキシ・オブジェクト内の参照は無効になる。リモート・サーバがもはや存在しないため、クライアントが無効な参照を使用しようとするとオブジェクト要求ブローカはタイムアウト・エラーを発生させる。
【0030】
無効なプロキシ・オブジェクトの使用の防止
DSOMフレームワークを使用して実施されたサーバはすべてサーバ・オブジェクトを持っており、着信メッセージはすべてそのサーバ・オブジェクトに対して送られる。このオブジェクトはそのメッセージをその実際の宛先にディパッチする。この実際の宛先は同じDSOMサーバ内の別のオブジェクトである。無効なプロキシ・オブジェクトの使用を防止する方法は、DSOMサーバがプロキシ・オブジェクトに付随するタイムスタンプを調べてDSOMサーバ自体に付随するタイムスタンプと突き合わせする何らかの基本検査を行い、DSOMに付随するタイムスタンプがプロキシ・オブジェクトに付随するタイムスタンプより遅い場合はエラー条件を返すことである。同様の検査は、他のオブジェクト要求ブローカを使用するシステムでも行うことができる。
【0031】
これらの検査によって、エラーが発生したことと、プロキシ・オブジェクト内に含まれる参照が無効であることは検出されるが、そのエラーを修正する方法にはならない。参照は、クライアント・アプリケーションに入っているプロキシ・オブジェクト内の参照を修正するアプリケーション固有の知識とコードを使用して修正することができる。
【0032】
「Object replacement using dynamic proxy updates」(S.Menon,R.J.LeBlanc Jr、Dist.Syst.Engng1(1994)pp.271−279)では、ターゲット・オブジェクトを指すプロキシ・オブジェクト参照が無効であることを示すエラーを受け取ると、プロキシ・オブジェクトがネーム・サーバに対して更新された参照を要求するオブジェクト置換方式が開示されている。低水準事象を使用してエラーを検出し、プロキシ・オブジェクトを更新する。このオブジェクト置換方式は特にClouds分散オペレーティング・システムと共に使用するものである。記載されている方式はその他のオペレーティング・システムやオブジェクト要求ブローカ一般では機能しない。
【0033】
【課題を解決するための手段】
発明の開示
したがって本発明は、クライアント・アドレス空間にある回復可能プロキシ・オブジェクトがサーバ・アドレス空間内のターゲット・オブジェクトを指すポインタを有し、前記プロキシ・オブジェクトにターゲット・オブジェクトの名前と、プロキシ・オブジェクトの妥当性に関する標識と、前記ターゲット・オブジェクトの代替プロキシとを格納するステップと、前記プロキシ・オブジェクトがそれ自体を、前記プロキシ・オブジェクトを指す参照ポインタを維持するプロキシ・レジスタ・オブジェクトに登録するステップと、前記ターゲット・オブジェクトの各呼出しの前に前記プロキシ・オブジェクトがプロキシ・オブジェクトの妥当性を検査するステップと、前記検査に応答して、有効な場合はプロキシ・オブジェクトを使用し、無効な場合は代替プロキシを使用するステップと、前記サーバ・アドレス空間における誤動作に応答して、前記プロキシ・レジスタ・オブジェクトが前記プロキシ・オブジェクトのそれぞれに前記サーバ内のターゲット・オブジェクトの有効な代替プロキシを入手させ、前記プロキシ・オブジェクトが無効であることを示させ、有効な代替プロキシを指すポインタを記憶させるステップとを特徴とする、分散オブジェクト指向コンピューティングの方法を提供する。
【0034】
第1の実施例では、サーバ・アドレス空間とクライアント・アドレス空間が双方向通信リンクによってリンクされ、サーバ・オブジェクトがクライアント・アプリケーションに対して、サーバ・アドレス空間内にあるターゲット・オブジェクトの有効な代替プロキシを入手することによって各プロキシ・オブジェクトをリフレッシュするように要求する。
【0035】
第2の実施例では、クライアント・アプリケーションは、サーバ・アドレス空間にあるターゲット・オブジェクトにアクセスする際にエラー標識を受け取ると、サーバ・アドレス空間にあるターゲット・オブジェクトの有効代替プロキシを入手することによって各プロキシ・オブジェクトをリフレッシュする。
【0036】
分散オブジェクト指向システムはCORBA準拠システムであり、分散オブジェクト指向コンピュータ・システムはDSOMクラス・ライブラリを使用することが好ましい。しかし、本発明はそのようなシステムでの応用やそのようなクラス・ライブラリの使用には限定されない。たとえば、分散オブジェクト指向システムはマイクロソフトのコンポーネント・オブジェクト・モデル(COM)に準拠していてもよい。また、分散オブジェクト環境(DOE)としてSunSoftから、およびORBプラスとしてヒューレット・パッカードCo.から入手可能な、分散オブジェクト管理機能(DOMF)を使用することもできる。
【0037】
本発明は、クライアント・アドレス空間内のプロキシ・オブジェクトがサーバ・アドレス空間内のターゲット・オブジェクトを指す一次ポインタを有し、それによってプロキシ・オブジェクトに対する呼出しの結果、対応するターゲット・オブジェクトが呼び出される分散オブジェクト指向コンピューティングの方法であって、サーバ・アドレス空間における誤動作に応答して、前記ターゲット・オブジェクトの再配置を引き起こすステップと、再配置されたターゲット・オブジェクトを指すように前記プロキシ・オブジェクトを回復するステップとを含み、前記各プロキシ・オブジェクトに前記アドレス空間内のネーム・サーバから前記再配置されたターゲット・オブジェクトを指す有効な代替ポインタを入手させ、記憶させるステップと、前記一次ポインタが無効であり、前記代替ポインタを使用すべきであることを示す妥当性フラグを前記プロキシ・オブジェクト内に作成するステップとをさらに含み、それによってプロキシ・オブジェクトに対する呼出しの結果として該当するターゲット・オブジェクトが呼び出されることを特徴とする方法も提供する。
【0038】
分散オブジェクト指向コンピュータ・システムがDSOMクラス・ライブラリを使用する好ましい実施例では、回復可能プロキシ・オブジェクトはSOMDClientproxyのサブクラスであり、DSOMは通信機構である。サブクラス(または子クラス)はそのスーパークラス(または親クラス)からすべての属性とメソッドを継承する。SOMDClientProxyはDSOMの一部として事前定義されたオブジェクト・クラスである。さらに、プロキシ・レジスタ・オブジェクトはメタクラスSOMMSingleInstanceを持つSOMオブジェクトであることが好ましい。これは、プロキシ・レジスタ・オブジェクトがクラスのメンバであり、そのクラス自体がメタクラスSOMMSingleInstanceから派生していることを意味する。このメタクラスによって、そのメタクラスから派生した各クラスの単一のインスタンスだけが作成されるように保証される。このようにして派生したクラスのインスタンスをさらに作成する要求を行っても、すでに作成済みのインスタンスを指すポインタが返されるだけである。
【0039】
本発明は、1つまたは複数のプロキシ・オブジェクトを有し、サーバ・アドレス空間とクライアント・アドレス空間を含む分散オブジェクト指向コンピュータ・システムも提供する。サーバ・アドレス空間は、アドレス空間内にあり、クライアント・アプリケーションがそれに対して操作を行うことができるターゲット・オブジェクトと、クライアント・アドレス空間内のクライアント・アプリケーションとの通信を可能にするオブジェクト要求ブローカと、クライアント・アプリケーションからの要求に応答するサーバ・オブジェクトとを有する。クライアント・アドレス空間は、アドレス空間内にあり、クライアント・アドレス空間にある1つまたは複数のオブジェクトに対して操作を行うクライアント・アプリケーションと、サーバ・アドレス空間内のオブジェクトとの通信を可能にするオブジェクト要求ブローカと、各プロキシ・オブジェクトがサーバ・アドレス空間内のターゲット・オブジェクトの場所を指すポインタを含む1つまたは複数のプロキシ・オブジェクトとを有する。
【0040】
このシステムは、1つまたは複数のプロキシ・オブジェクトのそれぞれが、サーバ・アドレス空間にあるターゲット・オブジェクトの名前と、ターゲット・オブジェクトを指す代替ポインタと、ターゲット・オブジェクトを参照するためにプロキシと代替ポインタのどちらを使用すべきかを示す妥当性フラグとをさらに含むことを特徴とする。クライアント・アドレス空間は、クライアント・アドレス空間内にあるプロキシ・オブジェクトを指す参照ポインタを維持するプロキシ・レジスタ・オブジェクトと、サーバ・アドレス空間における誤動作の後に1つまたは複数のプロキシ・オブジェクトを更新する手段とをさらに含む。
【発明の実施の形態】
発明の詳細な説明
以下に本発明の実施例について例として添付図面を参照しながら説明する。
本発明を実施することができる適合するハードウェア
本発明は、いくつかの異なるオペレーティング・システム下にある様々なコンピュータまたはコンピュータの集合上で実行することができる。コンピュータは、たとえばパーソナル・コンピュータ、ミニ・コンピュータ、メインフレーム・コンピュータ、または他のコンピュータの分散ネットワーク内で稼働するコンピュータとすることができる。特定のコンピュータの選定はメモリおよびディスクの必要記憶容量によってのみ限定されるが、本発明ではIBM PS/2シリーズのコンピュータを使用することができる(IBMはIBM Corporationの登録商標であり、PS/2は商標である)。IBMのPS/2シリーズ・コンピュータの詳細については、Technical Reference Manual Personal System/2(Model 80)(IBM Corporation Part No.68X 2256 Order Number S68X−2254)を参照されたい。IBM PS/2パーソナル・コンピュータで実行することができるオペレーティング・システムはIBMのOS/2 2.0であり、IBM OS/2 2.0オペレーティング・システムの詳細については、OS/2 2.0 Technical Library,Programming Guide Vol.1,2,3 Version 2.00(Order Nos.10G6261,10G6495、10G6494)を参照されたい(OS/2はIBM Corporationの商標である)。
【0041】
代替実施例では、コンピュータ・システムはAIXオペレーティング・システム上で稼働するIBM RISC System/6000ラインのコンピュータとすることができる(RISC System/6000およびAIXはIBM Corporationの商標である)。RISC System/6000の様々なモデルについては、たとえばRISC System/6000,7073および7016 POWERstation and POWERserver Hardware Technical Reference(Order No.SA23−2644−00)など、IBM Corporationの多くの刊行物に記載されている(POWERstationおよびPOWERserverはIBM Corporationの商標である)。AIXオペレーティング・システムについては、General Concepts and Procedure−−AIX Version3 for RISC System/6000(Order No.sc23−2202−00)およびIBM Corporationのその他の刊行物に記載されている。
【0042】
第3図には、システム・ユニット11と、キーボード12と、マウス13と、表示装置14を含むコンピュータ10のブロック図が図示されている。システム・ユニット11は、1本または複数のシステム・バス21を含み、システム・バスには様々な構成要素が接続され、それによって様々な構成要素間の通信を行う。マイクロプロセッサ22がシステム・バス21に接続され、やはりシステム・バス21に接続された読取り専用メモリ(ROM)23とランダム・アクセス・メモリ(RAM)24によってサポートされている。IBM PS/2シリーズのコンピュータのマイクロプロセッサは、386または486マイクロプロセッサを含むインテル・ファミリのマイクロプロセッサのうちの1つである。しかし、68000、68020、または68030マイクロプロセッサなどのモトローラのマイクロプロセッサ・ファミリや、PowerPCチップなどのIBM製の様々な縮小命令セット・コンピュータ(RISC)マイクロプロセッサその他のマイクロプロセッサ、またはヒューレット・パッカード、サン、モトローラおよびその他のマイクロプロセッサなど、他のマイクロプロセッサもこの特定のコンピュータで使用することができる。
【0043】
ROM23は、基本的ハードウェア動作を制御する基本入出力システム(BIOS)も含む。RAM24は、オペレーティング・システムとアプリケーション・プログラムがロードされるメイン・メモリである。メモリ管理チップ25がシステム・バス21に接続され、RAM24とハードウェア・ディスク・ドライブ26とフロッピィ・ディスク・ドライブ27との間のデータの受渡しを含む直接メモリ・アクセス操作を制御する。システム・バス21にはCD ROM32も結合され、たとえばマルチメディア・プログラムやプレゼンテーションなど大量のデータを記憶するために使用される。
【0044】
このシステム・バス21には、様々な入出力コントローラ、キーボード・コントローラ28、マウス・コントローラ29、ビデオ・コントローラ30、およびオーディオ・コントローラ31も接続される。当然ながら、キーボード・コントローラ28はキーボード12のハードウェア・インタフェース、マウス・コントローラ29はマウス13のハードウェア・インタフェース、ビデオ・コントローラ30は表示装置14のハードウェア・インタフェース、オーディオ・コントローラ31はスピーカ15aおよび15bのハードウェア・インタフェース機能を備える。トークン・リンク・アダプタなどの入出力コントローラ40によって、他の同様に構成されたデータ処理システムとネットワーク46を介して通信することができる。
【0045】
本発明の好ましい実施例の1つは、大体上述のように構成された1つまたは複数のコンピュータ・システムのランダム・アクセス・メモリ24に入っている1組の命令48〜52としての実施態様である。この1組の命令は、コンピュータ・システムが必要とするまで、たとえばハードウェア・ディスク・ドライブ26、または最終的にCD−ROM32で使用される光ディスクまたは最終的にフロッピィ・ディスク・ドライブ27で使用されるフロッピィ・ディスクなどの取り外し可能メモリなど、別のコンピュータ・メモリに記憶することができる。ORBを使用して相互に結合されるメモリ・アドレス空間は、ネットワーク46を介して通信する別々のシステムに存在することもでき、第3図に示すように1つのコンピュータ・システムのメモリ内の2つ以上のアドレス空間53、54とすることもできる。
【0046】
本発明の要素
本発明は、回復可能プロキシ・オブジェクトを設け、それによってクライアントにある古いプロキシ・オブジェクトを指すクライアント・アプリケーション内のすべてのポインタをクライアントにある新しいプロキシ・オブジェクトを指す新しいポインタに置き換える代わりに、クライアント内の各プロキシ・オブジェクトに対してそれ自体を妥当性検査し直すように求めることによって、前述の従来技術のクライアント/サーバ環境の問題点を克服する。このような再妥当性検査は、クライアント・アプリケーション固有の知識またはコードをまったく必要としない。回復可能プロキシ・オブジェクトは、クライアントの所にあり、リモート・サーバ内にあるオブジェクトを指すすべてのプロキシ・オブジェクトを指すポインタを維持する「プロキシ・レジスタ」オブジェクトにそれ自体を登録する。回復可能プロキシ・オブジェクトは、回復不能プロキシ・オブジェクトには存在しない3つの属性を含む。この3つの属性とは、プロキシ・オブジェクトが指すターゲット・オブジェクトの「名前」と、プロキシ・オブジェクトが有効なオブジェクトを指しているかどうかを示すフラグと、代替プロキシを指すポインタである。
【0047】
以下に、本発明の一部として使用するプロキシ・レジスタ・オブジェクトについて、第4図および例1を参照しながら説明する。次に、本発明の一部として使用するプロキシ・オブジェクトについて第5図、第6図、および例2を参照しながら説明する。その後で、そのようなプロキシ・オブジェクトの初期設定について第7図を参照しながら説明する。
【0048】
非同期的に動作し、プロキシ・レジスタ・オブジェクトとプロキシ・オブジェクトが組み込まれた本発明の第1の実施例について、第8図を参照しながら説明する。次に、同期的に動作する第2の実施例について第9図を参照しながら説明する。その後で、DSOMプロキシ・オブジェクトによるリモート・サーバへの従来技術のメソッド呼出しのディスパッチについて、例3を参照しながら説明する。さらに、本発明による、DSOMプロキシによるリモート・サーバへのメソッド呼出しのディスパッチについて例4を参照しながら説明する。
【0049】
プロキシ・レジスタ・オブジェクト
第4図に、周知のクライアント・アプリケーション48と周知のターゲット・オブジェクト51と周知のORB50、52を有する、クライアント・アドレス空間53とサーバ・アドレス空間54を示す。任意選択として、クライアント・アドレス空間53とサーバ・アドレス空間54の間に双方向通信リンク460を備えることができる。そのようなリンク460がない場合、サーバはクライアント・アプリケーション48に要求を送ることができない。オブジェクト名を示すとメモリ・アドレスを出力する機能を持つネーム・サーバ317を備える。第4図には、本発明で使用するプロキシ・レジスタ・オブジェクト155も図示されている。プロキシ・レジスタ・オブジェクト155は、回復可能プロキシ・オブジェクト449が作成されると、回復可能プロキシ・オブジェクト449からそれ自体を登録する要求を受け取る。プロキシ・レジスタ・オブジェクト155は、クライアント・アプリケーション48がプロキシ・オブジェクト449をリフレッシュしたい場合にも要求を受け取る(第8図の520)。どの1つのクライアント・アドレス空間53内にも1つのプロキシ・レジスタ・オブジェクト155しか入っていない。これは、SOMのSOMMSingleInstanceメタクラスを使用することによって実現される。このメタクラスによって、メタクラスから派生した各クラスの1つのインスタンスだけが作成されるように保証される。このようにして派生したクラスのインスタンスをさらに作成する要求を出しても、すでに作成されているインスタンスを指すポインタが返されるだけである。
【0050】
プロキシ・レジスタ・オブジェクトに対して行うことができるメソッドは以下の3つである。
1.所与のサーバ名のプロキシ・オブジェクトをすべてリフレッシュする。これは、その所与のサーバが再始動され、そのサーバ内の場所を指すプロキシ・オブジェクト参照が無効になっている可能性があることをクライアントが認識すると、クライアントによって使用される。
2.プロキシ・レジスタ・オブジェクトによって維持されているリストにプロキシ・オブジェクトを追加する。これは、プロキシ・オブジェクトが指すターゲット・オブジェクトが入っているサーバが再始動された場合、プロキシ・オブジェクトがそれ自体をリフレッシュするように求められるようにするために、プロキシ・オブジェクトが作成された後でそのプロキシ・オブジェクトが使用する。
3.プロキシ・レジスタ・オブジェクトによって維持されているリストからプロキシ・オブジェクトを削除する。これは、プロキシ・オブジェクトが破棄され、リフレッシュする必要がなくなった場合に使用される。
【0051】
例1に、プロキシ・レジスタ・オブジェクトのサンプル宣言を示す。この宣言は(CORBAについて言及しながら前述した)IDLで書かれており、オブジェクトが示すインタフェースを定義する。IDLでは、「//」はそれに続くテキストが注釈であることを意味する。「void」はC言語の場合と同じ意味を持つ。すなわち値を返さないものを定義するものである。
例1−プロキシ・レジスタ・オブジェクトのサンプル宣 言
例1の終わり
【0052】
プロキシ・オブジェクト
第5図に、クラスAnimalのための従来技術のプロキシ・クラスの構築を示す。DSOM、具体的にはSOMD_ObjectMgrは、DSOM実行時モジュールと共に、Animal_Proxy710と呼ぶプロキシ・クラスを作成する。プロキシ・クラスAnimal_Proxy710は、クラスAnimal720のインタフェースとSOMDClientProxy730の実現部とを継承する。この実現部の属性には、リモート・オブジェクトの記憶場所であるリモート・オブジェクト参照と、リモート・サーバ・バインディングが含まれる。Animal_proxyクラス710はクラスAnimal720のメソッドを保持し、DSOMのデフォルトの方式でリモート・サーバにメソッド呼出しのディスパッチを行う。詳細は、前掲の「SOMobjects:A Practical Introduction to SOM and DSOM」の74〜75ページに記載されている。DSOMのデフォルトの方式でのディスパッチについては、例3を参照しながら後述する。
【0053】
第6図に、クラスAnimal720の本発明によるプロキシ・クラスの構築を示す。Animal_Proxyオブジェクトがクラス・ライブラリ提供者、すなわちサーバ・オブジェクトの作者によって与えられる。Animal_Proxy710のプロキシ・クラスは、クラスAnimal720のインタフェースとCustom_Proxy840の実現を継承する。さらにCustom_Proxy840の実現はSOMDClientProxy730の実現を継承する。Custom_Proxy840実現の属性によって、SOMClientServer730の属性にリモート・オブジェクト名455と、妥当性フラグ459と代替プロキシ457が加えられる。Animal_Proxyクラス710によって、Animal720のメソッドが上書きされ、リモート・サーバへのメソッド呼出しのカスタム・ディスパッチが行われる。このカスタム方式のディスパッチについては、例4を参照しながら後述する。
【0054】
本発明によるプロキシ・オブジェクトは、Custom_Proxyの実現の継承によって加えられる属性によって従来技術のプロキシ・オブジェクトとは区別される。リモート・オブジェクト名455は、リモート・サーバ内のプロキシ・オブジェクト449が指すオブジェクト(第4図の51)の名前である。このプロキシが有効であるか、または代替プロキシ457を使用すべきかが、妥当性フラグ459によって示される。代替プロキシ457には、妥当性フラグ459によってプロキシ自体が無効であることが示された場合に使用する、再配置されたターゲット・オブジェクトを指すポインタが含まれる。
【0055】
例2にCustom_Proxyクラスのサンプル宣言を示す。本発明によるプロキシ・オブジェクトはすべてこのクラスから導き出される。
例2−カスタム・プロキシ・クラスのサンプル宣言
【0056】
例2の終わり
【0057】
第7図に、第6図に従って構築されたプロキシ・オブジェクトの初期設定を示す。クライアント・アプリケーション48、プロキシ・オブジェクト449、プロキシ・レジスタ・オブジェクト155、およびORB50については、図4図のクライアント・アドレス空間53を参照しながら前述している。サーバ313、ターゲット・オブジェクト51、ネーム・サーバ317、およびORB52についても、第1図および第2図のサーバ・アドレス空間54を参照しながら前述している。
【0058】
第7図を参照すると、ステップ910で、クライアント・アプリケーション48がサーバ313に対してオブジェクトを作成する要求を送る。サーバ313はこの要求に応答して、ステップ920でオブジェクト51を作成する。サーバ313はステップ930でクライアントにプロキシ・オブジェクト449を返す。ステップ940で、プロキシ・オブジェクト449はサーバ・アドレス空間54内のネーム・サーバ317に接触して、サーバ・アドレス空間54内に作成された新しいオブジェクト51の名前(またはハンドル)を入手する。ステップ950で、ネーム・サーバ317は名前を返し、プロキシ・オブジェクト449はその名前455を記憶し、妥当性フラグ459を真に設定して代替プロキシ457ではなく実プロキシを使用すべきであることを示す。ステップ960で、プロキシ・オブジェクト449はそれ自体をプロキシ・レジスタ・オブジェクト155に登録する。
【0059】
第1の実施例
第8図に、サーバとそのクライアントとの間に双方向リンクがある本発明の第1の実施例を示す。サーバは誤動作後に再始動すると、それに接続されていたすべてのクライアントに接触し、それらのクライアントのプロキシ・オブジェクトをリフレッシュするように指示する。クライアント・アプリケーション48、プロキシ・オブジェクト449、プロキシ・レジスタ・オブジェクト155、およびORB50については、第4図のクライアント・アドレス空間53を参照しながら前述している通りである。サーバ313、ターゲット・オブジェクト51、ネーム・サーバ317、およびORB52は、第2図のサーバ・アドレス空間54を参照しながら前述した通りである。
【0060】
第8図を参照すると、ステップ510で、サーバ313はそのクライアント・アプリケーション48のそれぞれに対して、誤動作後に再始動したことを通知する。第8図および第9図には、図を簡単にするために1つのクライアント・アプリケーション48しか図示されていないが、実際にはクライアント・アプリケーション48は1つでも複数でもよい。ステップ520で、クライアント・アプリケーション48がプロキシ・レジスタ・オブジェクト155に対して、リモート・サーバ54にあるターゲット・オブジェクト51のプロキシ・オブジェクト449をすべてリフレッシュするように要求する。ステップ530で、プロキシ・レジスタ・オブジェクト155はサーバ54にあるターゲット・オブジェクト51のすべてのプロキシ・オブジェクト449に対してそのプロキシ・オブジェクト449自体をリフレッシュするように要求する。ステップ540で、各プロキシ・オブジェクト449はリモート・ネーム・サーバ317に接触し、パラメータとしてリモート・オブジェクト名455を渡し、リモート・オブジェクト51の更新された記憶場所を問い合わせる。ステップ550で、オブジェクトが従属オブジェクトである場合、ネーム・サーバ317は渡された名前を持つターゲット・オブジェクト51を探し出す。オブジェクトが持続オブジェクトでない場合、ネーム・サーバ317はそのオブジェクトを作成する。ステップ555で、ネーム・サーバ317はクライアント・アドレス空間53にあるプロキシ・オブジェクト449にリモート・オブジェクト51の新しい記憶場所を返す。ステップ560で、プロキシ・オブジェクト449は妥当性フラグ459を偽に設定し、リモート・オブジェクト51の新たに供給された記録場所を指すようにその代替プロキシ・ポインタ457を更新する。
【0061】
第2の実施例
第9図に、サーバとクライアントの間に双方向リンクがない本発明の第2の実施例を示す。この実施例のクライアントは、「最初の障害時にすべてのプロキシ・オブジェクトをリフレッシュする」というポリシーを実行しなければならない。クライアント・アプリケーション48、プロキシ・オブジェクト449、プロキシ・レジスタ・オブジェクト155、およびORB50については、第4図のクライアント・アドレス空間53を参照しながら前述した通りである。サーバ313、ターゲット・オブジェクト51、ネーム・サーバ317、およびORB52についても、第1図および第2図のサーバ・アドレス空間54を参照しながら前述した通りである。
【0062】
第9図を参照すると、ステップ610で、プロキシ・オブジェクト449はデフォルトのディスパッチ方法(例3)を使用してメソッド呼出しを無効なプロキシを使用しているサーバ313にディスパッチしようとする。この結果、ステップ620でサーバ313は不正オブジェクト参照例外を返す。この実施例では、クライアントは「最初の障害時にすべてのプロキシ・オブジェクトをリフレッシュする」ポリシーを実行するため、ステップ630でプロキシ・オブジェクト449は、プロキシ・レジスタ・オブジェクト155に対してリモート・サーバ54のすべてのプロキシ・オブジェクトをリフレッシュするように要求する。ステップ640で、プロキシ・レジスタ・オブジェクト155はサーバ54にあるターゲット・オブジェクト51のすべてのプロキシ・オブジェクト449にそのプロキシ・オブジェクト449自体をリフレッシュするように指示する。ステップ650で、各プロキシ・オブジェクト449はリモート・ネーム・サーバ317に接触し、パラメータとしてその名前を渡し、ターゲット・オブジェクト51の更新された記憶場所を問い合わせる。ステップ660で、ネーム・サーバ317は与えられた名前を持つオブジェクト51を探し出す(または非持続性の場合には作成する)。ステップ670で、ネーム・サーバ317はクライアント・アドレス空間53にあるプロキシ・オブジェクト449に新しいプロキシを返す。ステップ680で、プロキシはその妥当性フラグ459を偽に設定し、その代替プロキシ・ポインタ457を新たに供給されたプロキシを指すように更新する。ステップ690で、プロキシ・オブジェクト449はその代替プロキシ457を使用して元の要求をカスタム方式(例4)で再ディスパッチする。
【0063】
以降のシステム誤動作
リモート・サーバの誤動作がもう一度発生し、その後で再始動した場合、クライアントは第3のプロキシを必要としない。クライアントは代替プロキシ・ポインタによって指されているプロキシを削除し、そのプロキシを新しいプロキシに置き換える。クライアント・アプリケーションはこれをまったく認識しない。したがって、クライアントはアクセスする各リモート・オブジェクトについてプロキシを2つ(1つは無効で1つは有効)持つことになる。クライアントはサーバよりも存続期間が短い傾向があり、クライアントが再始動するときに無効なプロキシは消滅しているため、追加の無効なプロキシによるオーバーヘッドは大きくない。
【0064】
ディスパッチ
ディスパッチは、DSOMプロキシ・オブジェクトがメソッド呼出しをリモート・サーバにディスパッチするに過ぎない。本発明は、通常のプロキシと代替プロキシのどちらを使用するかを判断するために、デフォルトのディスパッチ方法の変形を必要とする。例3に、従来技術のDSOMプロキシ・オブジェクトで採用されているIDL言語で書かれたデフォルトの従来技術のディスパッチ方法を示す。このディスパッチ方法は、DSOMフレームワークによって与えられ、プロキシ・オブジェクトの作成時にプロキシ・オブジェクトによって継承される。
【0065】
例3−デフォルト・ディスパッチ関数の例:
例3の終わり
【0066】
例4に、本発明により実施されるDSOMプロキシ・オブジェクトで使用するディスパッチのカスタマイズされた方法をIDL言語で示す。本発明によるディスパッチ方法では、妥当性標識(459)の検査による通常のポインタと代替プロキシ・ポインタ(457)のどちらを使用するかを判断する追加のステップが含まれる。妥当性フラグ(459)を検査し、通常のプロキシ・ポインタが有効であることを示している場合はそのポインタを使用し、次にメソッドが従来技術で周知の方式と同じ方式でディスパッチされる。妥当性フラグ(459)が、通常のプロキシ・ポインタが無効であることを示している場合、メソッドは従来技術で周知の方式と同じ方式でディスパッチされるが、代替プロキシ・ポインタ(457)が使用される。
【0067】
さらに、プロキシ・オブジェクトをすべて更新させることによって、不正オブジェクト参照のエラー処理を行う。DSOMフレームワークが備えるディスパッチ方法を修正することによってカスタマイズが行われ、プロキシ・オブジェクトの作成時にプロキシ・オブジェクトによって継承される。
【0068】
例4−カスタマイズされたディスパッチ関数の例:
例4の終わり
【図面の簡単な説明】
【図1】第1図は、クライアント/サーバ環境にある従来技術のオブジェクト要求ブローカを示すブロック図である。
【図2】第2図は、従来技術のDSOM環境を示すブロック図である。
【図3】第3図は、本発明と共に使用するのに適した従来技術のコンピュータ・システムを示す図である。
【図4】第4図は、第1図のクライアント/サーバ環境にある、本発明によるプロキシ・オブジェクトとプロキシ・レジスタ・オブジェクトを示す図である。
【図5】第5図は、第1図のクライアント/サーバ環境で使用される従来技術のプロキシ・オブジェクトの構築を示す図である。
【図6】第6図は、第8図および第9図のクライアント/サーバ環境で使用する、本発明によるプロキシ・オブジェクトの構築を示す図である。
【図7】第7図は、第6図により構築されたプロキシ・オブジェクトを示す図である。
【図8】第8図は、クライアントとサーバの間に双方向リンクを有するシステムにおいて実施された、本発明による回復可能プロキシ・オブジェクトの第1の実施例を含むクライアント/サーバ環境を示す図である。
【図9】第9図は、クライアントとサーバの間に双方向通信リンクを持たないシステムにおいて実施された、本発明による回復可能プロキシ・オブジェクトの第2の実施例を含むクライアント/サーバ環境を示す図である。
【発明の属する技術分野】
発明の分野
本発明は、コンピュータ化オブジェクト指向技法に関し、具体的には、サーバにあるターゲット・オブジェクトを表すプロキシ・オブジェクトがクライアントにあり、プロキシ・オブジェクトがサーバの障害後に回復可能な、前記技法で使用するプロキシ・オブジェクトに係わる。
【0002】
【従来の技術】
発明の背景
オブジェクト指向プログラミングの概要
オブジェクト指向プログラミングが開発される以前に、構造化プログラミングと呼ばれるプログラミングの一形態が開発され、今でも広く使用されている。この技法では、まずさまざまな関数を定義し、次にプログラムがその定義された関数を適切な時点で呼び出してアプリケーション・プログラムの全体的な目的を実現することから成る。このような関数は、データを操作するために使用するメソッドを定義するが、データ自体は定義しない。構造化プログラミングはモジュール化手法の機会をもたらした。これは、メンテナンスやデバッグが難しい「スパゲッティ・コード」を克服する重要な改良であった。それにもかかわらず、構造化プログラミングには、プログラムによってモデル化される世界における概念および実体と、プログラミング言語における概念との間の「意味ギャップ」や、プログラム・コードのテキスト性、コード・モジュールの再使用可能性の限界などいくつかの欠点も残されている。
【0003】
その後、オブジェクト指向プログラミングと呼ばれる新しいプログラミング・パラダイムが開発された。この技法では、関数を定義する代わりに、「クラス」を定義する。クラス定義によって、そのクラスの任意のインスタンスが実行することができるメソッドと、そのクラスのインスタンスに含まれる属性(またはデータ)とを定義する。オブジェクトはクラスのメンバーであり、クラス定義で定義されているメソッドを実際に実行することができる。オブジェクトは、クラスによって定義された各属性に付随する値を持つ。オブジェクトは、ゼロまたは1個以上の属性を持ち、そのオブジェクトに対して実行するこができるゼロまたは1個以上のメソッドを持つ。
【0004】
オブジェクトとのインタフェースは、メソッドを介して属性にアクセスすることができる方法である。そのクラスから導き出されるすべてのオブジェクトがそのクラスのインタフェースを共有する。オブジェクトの実現部分はオブジェクトを呼び出すアプリケーションから隠蔽される。オブジェクトへのインタフェースが変わらない限り、アプリケーションに影響を与えることなく実現部分を完全に変えることはできない。
【0005】
オブジェクトが内部でどのように「見える」か、また内部で何を「行う」かを記述する必要なしにオブジェクトの「外観」を記述するこの技法を単純化した例として、また、そのようなオブジェクト指向プログラミングの重要な利点を例示するための例として、オブジェクト指向手法によってモデル化することができる普通の家庭用トースタを考えてみる。外部「インタフェース」は、トーストの所望の焼き加減を調節するパラメータを本質的に表すつまみと、パンを入れるスロットと、トースタへの挿入とトースタの起動を行うレバーとから成る。重要な概念は、この種の家電製品のエンドユーザはそれを使用するためにトースタの「内部」を知る必要がないことである。たとえば、熱が電気によって供給されるのか、化学薬品やその他の手段によって供給されるのかを知る必要はない。ユーザは上記の外面部と正しくインタフェースするだけでよい。
【0006】
プログラミングにおけるこの進化の利点は、上記の例を続けて用いると、トースタをモデル化するプログラミング・コードのモジュールであるオブジェクトの設計者が、ユーザにとって内部が見えないために、たとえばユーザがそのオブジェクトを使用する能力に影響を与えることなくトースタの内部要素を改良することに焦点を絞ることができ、効率を向上させることができることである。したがって、より抽象的に言うと、オブジェクト指向技法は本質的に、オブジェクトのインタフェースをオブジェクトの実現部分から分離する利点をもたらすものと見なすことができる。ソフトウェア環境においては、それによって、外部の「つまみ」などやその予想される動作が変わらない限り、アプリケーション・プログラム全体を書き直さなくてもオブジェクトの内部を書き直し、改良することができる。
【0007】
本発明の理解を助けるオブジェクト技法に関するその他の一般的背景については、デイビッドA.テイラー(David A.Taylor)による「Object Oriented Technology−A Manager's Guide」(copyright 1990,Servio Corporation)を参照されたい。
【0008】
オブジェクト指向プログラミングの発展に伴い、様々な組織やソフトウェア会社によっていくつかの「オブジェクト・モデル」がさらに改良され、開発された。オブジェクトとその外部インタフェースを定義する方法が規定され、そのような様々なオブジェクト・モデルによって特にカプセル化と継承の特性が規定された。ある程度の高レベルから見れば、これらの様々なオブジェクト・モデルはきわめて類似している。たとえば、システム・オブジェクト・モデル(SOM)、コモンLispオブジェクト・システム(CLOS)、Smalltalk、およびC++などがある。本質的には、これらの様々なオブジェクト・モデルはオブジェクトが何かであるかという問いに答える規則の集まりに過ぎず、より低レベルで検討するとそれぞれわずかに異なった答えが出る。たとえば、言語構文とカプセル化および継承の機能はオブジェクト・モデルによって異なる。
【0009】
これらの相違の直接の結果として、異なるオブジェクト指向言語およびオブジェクト・モデルの使用可能性により生じる1つの問題は、そのような言語の混合で書かれたオブジェクト・プログラム間のインターオペラビリティを実現することができないことであった。この問題は、オブジェクト技法の重要な利点の1つであるコードの再使用可能性に悪影響を与える。業界を悩ませるこの問題を解決しようとして、委員会は共通オブジェクト要求ブローカ・アーキテクチャ(CORBA)に到達した。これには標準化インタフェース定義言語(IDL)が含まれていた。業界ではオブジェクトインタフェースをどのように規定するか、すなわち、オブジェクト・インタフェースを定義する標準に関して本質的に合意に達し、その結果、1つのベンダーによって定義されたオブジェクトを他のベンダーが使用することが可能になった。「The Common Object Request Broker:Architecture and Specification」(OMG Document Number 91.12.1 Revision1.1)を参照されたい。
【0010】
オブジェクト要求ブローカ(ORB)
CORBAアーキテクチャで記述されたオブジェクト要求ブローカ(ORB)は、UNIXオペレーティング・システム環境で作業をする人には周知のリモート・プロシージャ・コール(RPC)に似ている(UNIXはX/Open CO.Ltd.によって独占的にライセンス許諾される商標である)。
【0011】
従来技術のシステムを第1図および第2図に示す。
【0012】
第1図は、クライアント/サーバ環境にある従来技術のオブジェクト要求ブローカを示すブロック図である。
【0013】
第2図は、DSOMと呼ばれる従来技術の環境を示すブロック図である。
【0014】
第1図は、ORBを含むクライアント/サーバ環境を示す。このORBは2つの部分に分かれており、そのうちの部分50はORBを使用して各クライアントで実行され、部分52はORBをサポートする各サーバで実行される。RPCと同様に、ORBは1つのアドレス空間53で稼働しているクライアント・アプリケーション48が別のアドレス空間54のオブジェクト51と通信することができるようにする機構である。他方のアドレス空間54、すなわちクライアント・アプリケーション48が実行されているアドレス空間と同じアドレス空間53ではないアドレス空間にあるオブジェクト51を「リモート」オブジェクトと呼ぶ。クライアント・アプリケーション48と同じアドレス空間53にあるオブジェクトを「ローカル」オブジェクトと呼ぶ。ORB50は1つのアドレス空間53内のクライアント・アプリケーション48からの呼出しを代行受信し、それをネットワーク・プロトコルにカプセル化し、別のアドレス空間54内のターゲット・オブジェクト51に合わせて呼出しをデコードし、その結果を呼び出し側クライアント・アプリケーション48に返す。これによって、一方のアドレス空間(ローカル)で稼働しているクライアント・アプリケーション48が他方のアドレス空間(リモート)内のオブジェクト51と通信することができる。ORBは、オブジェクト指向プログラミングによって得られる高度の柔軟性と能力を備えるように設計されている点で、RPCが改良されたものである。
【0015】
「オブジェクト・モデル」は様々な組織やソフトウェア会社によって開発されている。オブジェクト・モデルはオブジェクトとその外部インタフェースの定義の仕方を規定する。このようなオブジェクト・モデルの1つは、IBM Corporationのシステム・オブジェクト・モデル(SOM)である。SOMでは、オブジェクトを使用するすべてのアプリケーションはそれらのオブジェクトが入っている1つのアドレス空間内で実行される。SOM内で作成されるものは、分散システム・オブジェクト・モデル(DSOM)と呼ばれるオブジェクト・クラスのフレームワークである。DSOMでは、1つのアドレス空間内の(クライアントで稼働している)アプリケーションは別のアドレス空間(サーバに属するアドレス空間など)内のオブジェクトにアクセスすることができる。これらのアドレス空間は同じシステムと異なるシステムのどちらにあってもよい。実際には、システムは同じプラットフォームで稼働している必要はない。たとえば、OS/2システム上のアドレス空間で稼働しているクライアント・アプリケーションがAIX/6000システム上のアドレス空間にあるオブジェクトにアクセスすることができ、その逆も可能である。SOMとDSOMの両方については、IBM Corporationが発行している「SOMobject:A Practical Introduction to SOM and DSOM」(Copyright 1994,Order no.GG24−4357−00)に記載されている。
【0016】
上記のシステム・オブジェクト・モデル(SOM)は、CORBAとIDLに準拠した1つのオブジェクト・モデルである。準拠とは、SOMオブジェクトがCORBAのセマンティクスに従っており、SOMオブジェクトがIDL構文で定義されているという意味である。
【0017】
DSOMのフレームワークは、ターゲット・オブジェクトがインスタンス化される場所やプラットフォームのタイプをクライアント・プログラマが知らなくても済むようにするオブジェクト実現部を備える。このプロセス間通信に使用される通信機構は、プログラマには見えないように完全に隠蔽される。
【0018】
クライアント−サーバ・アーキテクチャ
クライアント−サーバ・アーキテクチャでは、アプリケーション・プログラムは個別の構成要素として実行される個別のタスクに分けられる。各構成要素にはクライアントまたはサーバの役割が割り当てられる。1つの構成要素は、ある目的のためにはサーバの役割を果たし、他の目的のためにはクライアントの役割を果たすことができる。各構成要素は独立して動作し、特定の責任を担う。クライアントの役割が割り当てられた構成要素は、サーバ・プロセス内のオブジェクトに対するメソッド呼出しを行うことによって、サーバにサービスを要求する。サーバの役割が割り当てられた構成要素は、それらのメソッド呼出しを受け取り、該当するオブジェクトに対してそれらのメソッド呼出しを行い、その結果をクライアントに返すことによってサービスを提供する。クライアントとサーバは事前定義されたプロトコルを使用してメッセージを交換する。サーバは多くのクライアントにサービスを提供することができ、クライアントは多くのサーバにサービスを要求することができる。
【0019】
プロキシ・オブジェクト
プロキシ・オブジェクトとは、リモート・ターゲット・オブジェクトのローカル表現である。プロキシ・オブジェクトはターゲット・オブジェクトのインタフェースを継承し、その結果、同じメソッドに応答する。プロキシ・オブジェクトで呼び出されたメソッドはローカルでは実行されず、実ターゲット・オブジェクトに転送されて実行される。クライアントで稼働しているプログラムは常に、各リモート・オブジェクトが稼働しているサーバ内の各リモート・オブジェクトのローカル・プロキシ・オブジェクトをそのクライアント内に持っている。プロキシ・オブジェクト内には、ターゲット・オブジェクトが入っているサーバ内の記憶場所を指すポインタが含まれている。プロキシ・オブジェクトにはターゲット・オブジェクトの名前は含まれない。プロキシ・オブジェクトは、リモート・サーバに対してリモート・オブジェクトに対するメソッド呼出しの要求が行われると常に、DSOM実行時環境によって作成される。
【0020】
DSOM環境
クライアント・プロセスはサーバ・プロセス内のオブジェクトについてメソッド呼び出しを行う。これらのメソッド呼び出しは、たとえば属性に付随する値の入手(読取り)や属性に付随する値の設定(書込み)を行うことができる。サーバ・プロセスはこれらのメソッド呼び出しを受け取り、該当するオブジェクトについてそれらを呼び出し、クライアントに結果を返す。第2図にDSOM環境の構成要素の一部の超高水準図を示す。クライアント・アドレス空間53はDSOMオブジェクト・マネージャ303と呼ぶオブジェクトを含む。このオブジェクトは、サーバ・オブジェクト313の(後述する)プロキシ・オブジェクト305を指すポインタを返すことによって、クライアント・アプリケーション(第1図の48)がサーバ54を見つけ出すのを支援する。クライアントは次に、そのサーバ54上で事前定義されているクラスのオブジェクト51のインスタンスを作成したり、そのサーバ上にすでに存在するオブジェクト51へのアクセスを獲得したり、そのサーバ54上のオブジェクト51が不要になった場合にそれを破棄したりするために、サーバ・オブジェクト313に対するメソッドを(そのプロキシ・オブジェクト305を介して)呼び出す。
【0021】
クライアント・アプリケーション(第1図の48)は、サーバ・プロキシ・オブジェクト305に対して呼出しを行い、メソッド呼出しを行いたいオブジェクト51のある場所を見つけ出す。サーバ・プロキシ・オブジェクト305は、サーバ・オブジェクト313を呼び出してサーバ内のターゲット・オブジェクト51の記憶場所を判断する。サーバ・オブジェクトは、この情報をネーム・サーバ317から入手する。ネーム・サーバの機能はオブジェクト名が与えられた場合に記憶場所を示すことである。その機能はUNIXオペレーティング・システム環境の業者には周知である。サーバ・オブジェクト313は、サーバ・プロキシ・オブジェクト305に対してターゲット・オブジェクト51の記憶場所を示す。次にクライアント・アドレス空間53内にターゲット・オブジェクト51のプロキシ・オブジェクト49が作成される。そうすると、ローカル・クライアント・アプリケーションは、ローカル・プロキシ・オブジェクト49に対して、リモート・ターゲット・オブジェクト51であるかのようにメソッド呼出しを行うことができる。DSOMは、そのメソッド呼出しをサーバ・アドレス空間54に渡し、そこでターゲット・オブジェクト51に対してメソッド呼出しが行われ、その結果がローカル・クライアント・アプリケーションに返される。
【0022】
サーバまたはクライアントあるいはその両方の役割を果たすどのシステム上でも、「somdd」と呼ばれる別個のデーモン・プロセス341がアクティブになっていなければならない。このプロセスは、サーバ・プロセスの開始、常時使用可能でなければならないサービスの提供、およびクライアント・プロセスとサーバ・プロセスとの間のバインディングの作成の際の手段となる。「デーモン・プロセス」という用語とその機能は、UNIXオペレーティング・システム環境の業者には周知であろう。このデーモン・プロセスは本発明ではこれ以上の役割を果たさない。
【0023】
DSOM環境に必要な2つの追加の機能がある。それは、インタフェース・リポジトリ321とインプリメンテーション・リポジトリ331である。
【0024】
インタフェース・リポジトリ321は、オブジェクト・インタフェース定義を記憶するデータベースである。インタフェース・リポジトリにはクラス・インタフェース定義(メソッドのパラメータと戻り値)が登録される。インタフェース・リポジトリは本発明では役割を果たさない。インプリメンテーション・リポジトリには、サーバ・インプリメンテーションとそれがサポートするクラスが登録される。すなわち、サーバおよびクラスと、DSOMがオブジェクト・サーバを見つけ出して起動するのに必要な属性(サーバ・プログラム名、サーバがあるマシンのホスト名など)がインプリメンテーション・リポジトリに登録される。
【0025】
持続性
持続オブジェクトとは、そのオブジェクトに付随する属性が不揮発性記憶装置に記憶され、それを作成したプロセスが終了した後でも使用可能なオブジェクトである。持続性でないオブジェクトは、そのオブジェクトの属性に付随する属性が不揮発性記憶域に記憶されておらず、そのオブジェクトを作成したプロセスが終了した後は使用することができない。サーバがクラッシュした場合、非持続性オブジェクトは復元されないが、持続性オブジェクトはサーバが回復可能なサーバであれば復元され、したがって誤動作が起こった後でも再始動される。
【0026】
サーバ誤動作
第2図を参照すると、サーバ54が誤動作した場合、サーバ・アドレス空間54にあるターゲット・オブジェクト51を指すクライアント・アドレス空間53にあるプロキシ・オブジェクト49内の参照は無効になる。サーバ54はクライアント・アプリケーション(第1図の48)がオブジェクトを使用することができるようにオブジェクトをメモリに再ロードする。サーバ54は、誤動作が起こる前にロードされていた場所とは異なる場所にあるメモリにオブジェクト51を再ロードすることができる。オブジェクト51が特にクライアント・アプリケーション(第1図の48)の要求によってロードされていた場合、すなわち持続オブジェクトでない場合、サーバ54はオブジェクト51をメモリに再ロードすることがまったくできない。このいずれの状況でも、サーバ54内のターゲット・オブジェクト51を指すプロキシ・オブジェクト49内に含まれる参照は無効になる。プロキシ・オブジェクト49を使用すると、参照されているオブジェクトが誤ったオブジェクトであることなどを示すエラー条件になる。オブジェクト要求ブローカの実施態様によっては、これによってサーバ内のメモリの破壊や、サーバをさらに再始動させる必要があるサーバの誤動作など、重大な影響が生じる可能性がある。
【0027】
クライアント・アプリケーション48は、そのプロキシ・オブジェクト49のうちの1つまたは複数が無効になったことを示すエラー条件を受け取った場合、以下のステップのいずれかを実行する必要がある。
A.ターゲット・オブジェクト51が持続オブジェクトでなかった場合、クライアント・アプリケーション48はサーバ54内に新しいターゲット・オブジェクト51を作成する必要がある。クライアント・アプリケーション48はサーバ・プロキシ・オブジェクト305を呼び出し、作成するオブジェクトのクラスを指定して新しいターゲット・オブジェクト51を作成するように要求する。サーバ・プロキシ・オブジェクト305はサーバ・オブジェクト313を呼び出し、サーバ54内のターゲット・オブジェクト51の記憶場所を判断する。サーバ・オブジェクト313はターゲット・オブジェクト51の記憶場所をサーバ・プロキシ・オブジェクト305に送る。次に、クライアント・アドレス空間53内にターゲット・オブジェクト51のプロキシ・オブジェクト49が作成される。プロキシ・オブジェクト49には、ターゲット・オブジェクト51を見つけることできるサーバ54のメモリ内の場所を指す参照が含まれる。
B.ターゲット・オブジェクトが持続性だった場合、クライアント・アプリケーション48はターゲット・オブジェクト51が入っているサーバ54のメモリ内の場所を指す参照を含む新しいプロキシ・オブジェクト49を作成する必要がある。
【0028】
【発明が解決しようとする課題】
サーバ54が誤動作した場合、上記のステップを行うことによって、クライアント・アドレス空間53にあるプロキシ・オブジェクト49からターゲット・サーバ54にあるすべてのターゲット・オブジェクト51を指すすべての参照をリフレッシュしなければならない可能性が高い。これは、典型的なクライアント・アプリケーション48にとって重大な作業である。クライアント・アプリケーション48は、アドレス空間全体の様々な場所にあるプロキシ・オブジェクト49を指すポインタを持っており、以下のタスクを行う必要がある。
1.サーバ54の誤動作の前にはターゲット・オブジェクト51を指す有効な参照であったが今は無効になっているサーバ54内の記憶場所を指す参照を含む古いプロキシ・オブジェクト49を破棄する必要がある。
2.古い各プロキシ・オブジェクトに対応する新しいプロキシ・オブジェクト49を作成する必要がある。これらの新しいプロキシ・オブジェクト49は、それに含まれている参照が、サーバ54が誤動作後に再始動されたために得られたサーバ54内のターゲット・オブジェクト51を指す有効な参照である点を除けば、古いプロキシ・オブジェクトに対応している。
3.クライアント・アドレス空間53にあるプロキシ・オブジェクト49を指すクライアント・アプリケーション内のすべてのポインタは、ステップ1で破棄されており、ステップ2で作成されたそれに対応する新しいプロキシ・オブジェクト49を指すポインタに更新する必要がある。このステップでは、そのポインタを更新する必要のあるアプリケーションに固有の知識が必要である。
【0029】
サーバが誤動作した場合、サーバにあるターゲット・オブジェクトを指す、クライアントにあるプロキシ・オブジェクト内の参照は無効になる。リモート・サーバがもはや存在しないため、クライアントが無効な参照を使用しようとするとオブジェクト要求ブローカはタイムアウト・エラーを発生させる。
【0030】
無効なプロキシ・オブジェクトの使用の防止
DSOMフレームワークを使用して実施されたサーバはすべてサーバ・オブジェクトを持っており、着信メッセージはすべてそのサーバ・オブジェクトに対して送られる。このオブジェクトはそのメッセージをその実際の宛先にディパッチする。この実際の宛先は同じDSOMサーバ内の別のオブジェクトである。無効なプロキシ・オブジェクトの使用を防止する方法は、DSOMサーバがプロキシ・オブジェクトに付随するタイムスタンプを調べてDSOMサーバ自体に付随するタイムスタンプと突き合わせする何らかの基本検査を行い、DSOMに付随するタイムスタンプがプロキシ・オブジェクトに付随するタイムスタンプより遅い場合はエラー条件を返すことである。同様の検査は、他のオブジェクト要求ブローカを使用するシステムでも行うことができる。
【0031】
これらの検査によって、エラーが発生したことと、プロキシ・オブジェクト内に含まれる参照が無効であることは検出されるが、そのエラーを修正する方法にはならない。参照は、クライアント・アプリケーションに入っているプロキシ・オブジェクト内の参照を修正するアプリケーション固有の知識とコードを使用して修正することができる。
【0032】
「Object replacement using dynamic proxy updates」(S.Menon,R.J.LeBlanc Jr、Dist.Syst.Engng1(1994)pp.271−279)では、ターゲット・オブジェクトを指すプロキシ・オブジェクト参照が無効であることを示すエラーを受け取ると、プロキシ・オブジェクトがネーム・サーバに対して更新された参照を要求するオブジェクト置換方式が開示されている。低水準事象を使用してエラーを検出し、プロキシ・オブジェクトを更新する。このオブジェクト置換方式は特にClouds分散オペレーティング・システムと共に使用するものである。記載されている方式はその他のオペレーティング・システムやオブジェクト要求ブローカ一般では機能しない。
【0033】
【課題を解決するための手段】
発明の開示
したがって本発明は、クライアント・アドレス空間にある回復可能プロキシ・オブジェクトがサーバ・アドレス空間内のターゲット・オブジェクトを指すポインタを有し、前記プロキシ・オブジェクトにターゲット・オブジェクトの名前と、プロキシ・オブジェクトの妥当性に関する標識と、前記ターゲット・オブジェクトの代替プロキシとを格納するステップと、前記プロキシ・オブジェクトがそれ自体を、前記プロキシ・オブジェクトを指す参照ポインタを維持するプロキシ・レジスタ・オブジェクトに登録するステップと、前記ターゲット・オブジェクトの各呼出しの前に前記プロキシ・オブジェクトがプロキシ・オブジェクトの妥当性を検査するステップと、前記検査に応答して、有効な場合はプロキシ・オブジェクトを使用し、無効な場合は代替プロキシを使用するステップと、前記サーバ・アドレス空間における誤動作に応答して、前記プロキシ・レジスタ・オブジェクトが前記プロキシ・オブジェクトのそれぞれに前記サーバ内のターゲット・オブジェクトの有効な代替プロキシを入手させ、前記プロキシ・オブジェクトが無効であることを示させ、有効な代替プロキシを指すポインタを記憶させるステップとを特徴とする、分散オブジェクト指向コンピューティングの方法を提供する。
【0034】
第1の実施例では、サーバ・アドレス空間とクライアント・アドレス空間が双方向通信リンクによってリンクされ、サーバ・オブジェクトがクライアント・アプリケーションに対して、サーバ・アドレス空間内にあるターゲット・オブジェクトの有効な代替プロキシを入手することによって各プロキシ・オブジェクトをリフレッシュするように要求する。
【0035】
第2の実施例では、クライアント・アプリケーションは、サーバ・アドレス空間にあるターゲット・オブジェクトにアクセスする際にエラー標識を受け取ると、サーバ・アドレス空間にあるターゲット・オブジェクトの有効代替プロキシを入手することによって各プロキシ・オブジェクトをリフレッシュする。
【0036】
分散オブジェクト指向システムはCORBA準拠システムであり、分散オブジェクト指向コンピュータ・システムはDSOMクラス・ライブラリを使用することが好ましい。しかし、本発明はそのようなシステムでの応用やそのようなクラス・ライブラリの使用には限定されない。たとえば、分散オブジェクト指向システムはマイクロソフトのコンポーネント・オブジェクト・モデル(COM)に準拠していてもよい。また、分散オブジェクト環境(DOE)としてSunSoftから、およびORBプラスとしてヒューレット・パッカードCo.から入手可能な、分散オブジェクト管理機能(DOMF)を使用することもできる。
【0037】
本発明は、クライアント・アドレス空間内のプロキシ・オブジェクトがサーバ・アドレス空間内のターゲット・オブジェクトを指す一次ポインタを有し、それによってプロキシ・オブジェクトに対する呼出しの結果、対応するターゲット・オブジェクトが呼び出される分散オブジェクト指向コンピューティングの方法であって、サーバ・アドレス空間における誤動作に応答して、前記ターゲット・オブジェクトの再配置を引き起こすステップと、再配置されたターゲット・オブジェクトを指すように前記プロキシ・オブジェクトを回復するステップとを含み、前記各プロキシ・オブジェクトに前記アドレス空間内のネーム・サーバから前記再配置されたターゲット・オブジェクトを指す有効な代替ポインタを入手させ、記憶させるステップと、前記一次ポインタが無効であり、前記代替ポインタを使用すべきであることを示す妥当性フラグを前記プロキシ・オブジェクト内に作成するステップとをさらに含み、それによってプロキシ・オブジェクトに対する呼出しの結果として該当するターゲット・オブジェクトが呼び出されることを特徴とする方法も提供する。
【0038】
分散オブジェクト指向コンピュータ・システムがDSOMクラス・ライブラリを使用する好ましい実施例では、回復可能プロキシ・オブジェクトはSOMDClientproxyのサブクラスであり、DSOMは通信機構である。サブクラス(または子クラス)はそのスーパークラス(または親クラス)からすべての属性とメソッドを継承する。SOMDClientProxyはDSOMの一部として事前定義されたオブジェクト・クラスである。さらに、プロキシ・レジスタ・オブジェクトはメタクラスSOMMSingleInstanceを持つSOMオブジェクトであることが好ましい。これは、プロキシ・レジスタ・オブジェクトがクラスのメンバであり、そのクラス自体がメタクラスSOMMSingleInstanceから派生していることを意味する。このメタクラスによって、そのメタクラスから派生した各クラスの単一のインスタンスだけが作成されるように保証される。このようにして派生したクラスのインスタンスをさらに作成する要求を行っても、すでに作成済みのインスタンスを指すポインタが返されるだけである。
【0039】
本発明は、1つまたは複数のプロキシ・オブジェクトを有し、サーバ・アドレス空間とクライアント・アドレス空間を含む分散オブジェクト指向コンピュータ・システムも提供する。サーバ・アドレス空間は、アドレス空間内にあり、クライアント・アプリケーションがそれに対して操作を行うことができるターゲット・オブジェクトと、クライアント・アドレス空間内のクライアント・アプリケーションとの通信を可能にするオブジェクト要求ブローカと、クライアント・アプリケーションからの要求に応答するサーバ・オブジェクトとを有する。クライアント・アドレス空間は、アドレス空間内にあり、クライアント・アドレス空間にある1つまたは複数のオブジェクトに対して操作を行うクライアント・アプリケーションと、サーバ・アドレス空間内のオブジェクトとの通信を可能にするオブジェクト要求ブローカと、各プロキシ・オブジェクトがサーバ・アドレス空間内のターゲット・オブジェクトの場所を指すポインタを含む1つまたは複数のプロキシ・オブジェクトとを有する。
【0040】
このシステムは、1つまたは複数のプロキシ・オブジェクトのそれぞれが、サーバ・アドレス空間にあるターゲット・オブジェクトの名前と、ターゲット・オブジェクトを指す代替ポインタと、ターゲット・オブジェクトを参照するためにプロキシと代替ポインタのどちらを使用すべきかを示す妥当性フラグとをさらに含むことを特徴とする。クライアント・アドレス空間は、クライアント・アドレス空間内にあるプロキシ・オブジェクトを指す参照ポインタを維持するプロキシ・レジスタ・オブジェクトと、サーバ・アドレス空間における誤動作の後に1つまたは複数のプロキシ・オブジェクトを更新する手段とをさらに含む。
【発明の実施の形態】
発明の詳細な説明
以下に本発明の実施例について例として添付図面を参照しながら説明する。
本発明を実施することができる適合するハードウェア
本発明は、いくつかの異なるオペレーティング・システム下にある様々なコンピュータまたはコンピュータの集合上で実行することができる。コンピュータは、たとえばパーソナル・コンピュータ、ミニ・コンピュータ、メインフレーム・コンピュータ、または他のコンピュータの分散ネットワーク内で稼働するコンピュータとすることができる。特定のコンピュータの選定はメモリおよびディスクの必要記憶容量によってのみ限定されるが、本発明ではIBM PS/2シリーズのコンピュータを使用することができる(IBMはIBM Corporationの登録商標であり、PS/2は商標である)。IBMのPS/2シリーズ・コンピュータの詳細については、Technical Reference Manual Personal System/2(Model 80)(IBM Corporation Part No.68X 2256 Order Number S68X−2254)を参照されたい。IBM PS/2パーソナル・コンピュータで実行することができるオペレーティング・システムはIBMのOS/2 2.0であり、IBM OS/2 2.0オペレーティング・システムの詳細については、OS/2 2.0 Technical Library,Programming Guide Vol.1,2,3 Version 2.00(Order Nos.10G6261,10G6495、10G6494)を参照されたい(OS/2はIBM Corporationの商標である)。
【0041】
代替実施例では、コンピュータ・システムはAIXオペレーティング・システム上で稼働するIBM RISC System/6000ラインのコンピュータとすることができる(RISC System/6000およびAIXはIBM Corporationの商標である)。RISC System/6000の様々なモデルについては、たとえばRISC System/6000,7073および7016 POWERstation and POWERserver Hardware Technical Reference(Order No.SA23−2644−00)など、IBM Corporationの多くの刊行物に記載されている(POWERstationおよびPOWERserverはIBM Corporationの商標である)。AIXオペレーティング・システムについては、General Concepts and Procedure−−AIX Version3 for RISC System/6000(Order No.sc23−2202−00)およびIBM Corporationのその他の刊行物に記載されている。
【0042】
第3図には、システム・ユニット11と、キーボード12と、マウス13と、表示装置14を含むコンピュータ10のブロック図が図示されている。システム・ユニット11は、1本または複数のシステム・バス21を含み、システム・バスには様々な構成要素が接続され、それによって様々な構成要素間の通信を行う。マイクロプロセッサ22がシステム・バス21に接続され、やはりシステム・バス21に接続された読取り専用メモリ(ROM)23とランダム・アクセス・メモリ(RAM)24によってサポートされている。IBM PS/2シリーズのコンピュータのマイクロプロセッサは、386または486マイクロプロセッサを含むインテル・ファミリのマイクロプロセッサのうちの1つである。しかし、68000、68020、または68030マイクロプロセッサなどのモトローラのマイクロプロセッサ・ファミリや、PowerPCチップなどのIBM製の様々な縮小命令セット・コンピュータ(RISC)マイクロプロセッサその他のマイクロプロセッサ、またはヒューレット・パッカード、サン、モトローラおよびその他のマイクロプロセッサなど、他のマイクロプロセッサもこの特定のコンピュータで使用することができる。
【0043】
ROM23は、基本的ハードウェア動作を制御する基本入出力システム(BIOS)も含む。RAM24は、オペレーティング・システムとアプリケーション・プログラムがロードされるメイン・メモリである。メモリ管理チップ25がシステム・バス21に接続され、RAM24とハードウェア・ディスク・ドライブ26とフロッピィ・ディスク・ドライブ27との間のデータの受渡しを含む直接メモリ・アクセス操作を制御する。システム・バス21にはCD ROM32も結合され、たとえばマルチメディア・プログラムやプレゼンテーションなど大量のデータを記憶するために使用される。
【0044】
このシステム・バス21には、様々な入出力コントローラ、キーボード・コントローラ28、マウス・コントローラ29、ビデオ・コントローラ30、およびオーディオ・コントローラ31も接続される。当然ながら、キーボード・コントローラ28はキーボード12のハードウェア・インタフェース、マウス・コントローラ29はマウス13のハードウェア・インタフェース、ビデオ・コントローラ30は表示装置14のハードウェア・インタフェース、オーディオ・コントローラ31はスピーカ15aおよび15bのハードウェア・インタフェース機能を備える。トークン・リンク・アダプタなどの入出力コントローラ40によって、他の同様に構成されたデータ処理システムとネットワーク46を介して通信することができる。
【0045】
本発明の好ましい実施例の1つは、大体上述のように構成された1つまたは複数のコンピュータ・システムのランダム・アクセス・メモリ24に入っている1組の命令48〜52としての実施態様である。この1組の命令は、コンピュータ・システムが必要とするまで、たとえばハードウェア・ディスク・ドライブ26、または最終的にCD−ROM32で使用される光ディスクまたは最終的にフロッピィ・ディスク・ドライブ27で使用されるフロッピィ・ディスクなどの取り外し可能メモリなど、別のコンピュータ・メモリに記憶することができる。ORBを使用して相互に結合されるメモリ・アドレス空間は、ネットワーク46を介して通信する別々のシステムに存在することもでき、第3図に示すように1つのコンピュータ・システムのメモリ内の2つ以上のアドレス空間53、54とすることもできる。
【0046】
本発明の要素
本発明は、回復可能プロキシ・オブジェクトを設け、それによってクライアントにある古いプロキシ・オブジェクトを指すクライアント・アプリケーション内のすべてのポインタをクライアントにある新しいプロキシ・オブジェクトを指す新しいポインタに置き換える代わりに、クライアント内の各プロキシ・オブジェクトに対してそれ自体を妥当性検査し直すように求めることによって、前述の従来技術のクライアント/サーバ環境の問題点を克服する。このような再妥当性検査は、クライアント・アプリケーション固有の知識またはコードをまったく必要としない。回復可能プロキシ・オブジェクトは、クライアントの所にあり、リモート・サーバ内にあるオブジェクトを指すすべてのプロキシ・オブジェクトを指すポインタを維持する「プロキシ・レジスタ」オブジェクトにそれ自体を登録する。回復可能プロキシ・オブジェクトは、回復不能プロキシ・オブジェクトには存在しない3つの属性を含む。この3つの属性とは、プロキシ・オブジェクトが指すターゲット・オブジェクトの「名前」と、プロキシ・オブジェクトが有効なオブジェクトを指しているかどうかを示すフラグと、代替プロキシを指すポインタである。
【0047】
以下に、本発明の一部として使用するプロキシ・レジスタ・オブジェクトについて、第4図および例1を参照しながら説明する。次に、本発明の一部として使用するプロキシ・オブジェクトについて第5図、第6図、および例2を参照しながら説明する。その後で、そのようなプロキシ・オブジェクトの初期設定について第7図を参照しながら説明する。
【0048】
非同期的に動作し、プロキシ・レジスタ・オブジェクトとプロキシ・オブジェクトが組み込まれた本発明の第1の実施例について、第8図を参照しながら説明する。次に、同期的に動作する第2の実施例について第9図を参照しながら説明する。その後で、DSOMプロキシ・オブジェクトによるリモート・サーバへの従来技術のメソッド呼出しのディスパッチについて、例3を参照しながら説明する。さらに、本発明による、DSOMプロキシによるリモート・サーバへのメソッド呼出しのディスパッチについて例4を参照しながら説明する。
【0049】
プロキシ・レジスタ・オブジェクト
第4図に、周知のクライアント・アプリケーション48と周知のターゲット・オブジェクト51と周知のORB50、52を有する、クライアント・アドレス空間53とサーバ・アドレス空間54を示す。任意選択として、クライアント・アドレス空間53とサーバ・アドレス空間54の間に双方向通信リンク460を備えることができる。そのようなリンク460がない場合、サーバはクライアント・アプリケーション48に要求を送ることができない。オブジェクト名を示すとメモリ・アドレスを出力する機能を持つネーム・サーバ317を備える。第4図には、本発明で使用するプロキシ・レジスタ・オブジェクト155も図示されている。プロキシ・レジスタ・オブジェクト155は、回復可能プロキシ・オブジェクト449が作成されると、回復可能プロキシ・オブジェクト449からそれ自体を登録する要求を受け取る。プロキシ・レジスタ・オブジェクト155は、クライアント・アプリケーション48がプロキシ・オブジェクト449をリフレッシュしたい場合にも要求を受け取る(第8図の520)。どの1つのクライアント・アドレス空間53内にも1つのプロキシ・レジスタ・オブジェクト155しか入っていない。これは、SOMのSOMMSingleInstanceメタクラスを使用することによって実現される。このメタクラスによって、メタクラスから派生した各クラスの1つのインスタンスだけが作成されるように保証される。このようにして派生したクラスのインスタンスをさらに作成する要求を出しても、すでに作成されているインスタンスを指すポインタが返されるだけである。
【0050】
プロキシ・レジスタ・オブジェクトに対して行うことができるメソッドは以下の3つである。
1.所与のサーバ名のプロキシ・オブジェクトをすべてリフレッシュする。これは、その所与のサーバが再始動され、そのサーバ内の場所を指すプロキシ・オブジェクト参照が無効になっている可能性があることをクライアントが認識すると、クライアントによって使用される。
2.プロキシ・レジスタ・オブジェクトによって維持されているリストにプロキシ・オブジェクトを追加する。これは、プロキシ・オブジェクトが指すターゲット・オブジェクトが入っているサーバが再始動された場合、プロキシ・オブジェクトがそれ自体をリフレッシュするように求められるようにするために、プロキシ・オブジェクトが作成された後でそのプロキシ・オブジェクトが使用する。
3.プロキシ・レジスタ・オブジェクトによって維持されているリストからプロキシ・オブジェクトを削除する。これは、プロキシ・オブジェクトが破棄され、リフレッシュする必要がなくなった場合に使用される。
【0051】
例1に、プロキシ・レジスタ・オブジェクトのサンプル宣言を示す。この宣言は(CORBAについて言及しながら前述した)IDLで書かれており、オブジェクトが示すインタフェースを定義する。IDLでは、「//」はそれに続くテキストが注釈であることを意味する。「void」はC言語の場合と同じ意味を持つ。すなわち値を返さないものを定義するものである。
例1−プロキシ・レジスタ・オブジェクトのサンプル宣 言
例1の終わり
【0052】
プロキシ・オブジェクト
第5図に、クラスAnimalのための従来技術のプロキシ・クラスの構築を示す。DSOM、具体的にはSOMD_ObjectMgrは、DSOM実行時モジュールと共に、Animal_Proxy710と呼ぶプロキシ・クラスを作成する。プロキシ・クラスAnimal_Proxy710は、クラスAnimal720のインタフェースとSOMDClientProxy730の実現部とを継承する。この実現部の属性には、リモート・オブジェクトの記憶場所であるリモート・オブジェクト参照と、リモート・サーバ・バインディングが含まれる。Animal_proxyクラス710はクラスAnimal720のメソッドを保持し、DSOMのデフォルトの方式でリモート・サーバにメソッド呼出しのディスパッチを行う。詳細は、前掲の「SOMobjects:A Practical Introduction to SOM and DSOM」の74〜75ページに記載されている。DSOMのデフォルトの方式でのディスパッチについては、例3を参照しながら後述する。
【0053】
第6図に、クラスAnimal720の本発明によるプロキシ・クラスの構築を示す。Animal_Proxyオブジェクトがクラス・ライブラリ提供者、すなわちサーバ・オブジェクトの作者によって与えられる。Animal_Proxy710のプロキシ・クラスは、クラスAnimal720のインタフェースとCustom_Proxy840の実現を継承する。さらにCustom_Proxy840の実現はSOMDClientProxy730の実現を継承する。Custom_Proxy840実現の属性によって、SOMClientServer730の属性にリモート・オブジェクト名455と、妥当性フラグ459と代替プロキシ457が加えられる。Animal_Proxyクラス710によって、Animal720のメソッドが上書きされ、リモート・サーバへのメソッド呼出しのカスタム・ディスパッチが行われる。このカスタム方式のディスパッチについては、例4を参照しながら後述する。
【0054】
本発明によるプロキシ・オブジェクトは、Custom_Proxyの実現の継承によって加えられる属性によって従来技術のプロキシ・オブジェクトとは区別される。リモート・オブジェクト名455は、リモート・サーバ内のプロキシ・オブジェクト449が指すオブジェクト(第4図の51)の名前である。このプロキシが有効であるか、または代替プロキシ457を使用すべきかが、妥当性フラグ459によって示される。代替プロキシ457には、妥当性フラグ459によってプロキシ自体が無効であることが示された場合に使用する、再配置されたターゲット・オブジェクトを指すポインタが含まれる。
【0055】
例2にCustom_Proxyクラスのサンプル宣言を示す。本発明によるプロキシ・オブジェクトはすべてこのクラスから導き出される。
例2−カスタム・プロキシ・クラスのサンプル宣言
【0056】
例2の終わり
【0057】
第7図に、第6図に従って構築されたプロキシ・オブジェクトの初期設定を示す。クライアント・アプリケーション48、プロキシ・オブジェクト449、プロキシ・レジスタ・オブジェクト155、およびORB50については、図4図のクライアント・アドレス空間53を参照しながら前述している。サーバ313、ターゲット・オブジェクト51、ネーム・サーバ317、およびORB52についても、第1図および第2図のサーバ・アドレス空間54を参照しながら前述している。
【0058】
第7図を参照すると、ステップ910で、クライアント・アプリケーション48がサーバ313に対してオブジェクトを作成する要求を送る。サーバ313はこの要求に応答して、ステップ920でオブジェクト51を作成する。サーバ313はステップ930でクライアントにプロキシ・オブジェクト449を返す。ステップ940で、プロキシ・オブジェクト449はサーバ・アドレス空間54内のネーム・サーバ317に接触して、サーバ・アドレス空間54内に作成された新しいオブジェクト51の名前(またはハンドル)を入手する。ステップ950で、ネーム・サーバ317は名前を返し、プロキシ・オブジェクト449はその名前455を記憶し、妥当性フラグ459を真に設定して代替プロキシ457ではなく実プロキシを使用すべきであることを示す。ステップ960で、プロキシ・オブジェクト449はそれ自体をプロキシ・レジスタ・オブジェクト155に登録する。
【0059】
第1の実施例
第8図に、サーバとそのクライアントとの間に双方向リンクがある本発明の第1の実施例を示す。サーバは誤動作後に再始動すると、それに接続されていたすべてのクライアントに接触し、それらのクライアントのプロキシ・オブジェクトをリフレッシュするように指示する。クライアント・アプリケーション48、プロキシ・オブジェクト449、プロキシ・レジスタ・オブジェクト155、およびORB50については、第4図のクライアント・アドレス空間53を参照しながら前述している通りである。サーバ313、ターゲット・オブジェクト51、ネーム・サーバ317、およびORB52は、第2図のサーバ・アドレス空間54を参照しながら前述した通りである。
【0060】
第8図を参照すると、ステップ510で、サーバ313はそのクライアント・アプリケーション48のそれぞれに対して、誤動作後に再始動したことを通知する。第8図および第9図には、図を簡単にするために1つのクライアント・アプリケーション48しか図示されていないが、実際にはクライアント・アプリケーション48は1つでも複数でもよい。ステップ520で、クライアント・アプリケーション48がプロキシ・レジスタ・オブジェクト155に対して、リモート・サーバ54にあるターゲット・オブジェクト51のプロキシ・オブジェクト449をすべてリフレッシュするように要求する。ステップ530で、プロキシ・レジスタ・オブジェクト155はサーバ54にあるターゲット・オブジェクト51のすべてのプロキシ・オブジェクト449に対してそのプロキシ・オブジェクト449自体をリフレッシュするように要求する。ステップ540で、各プロキシ・オブジェクト449はリモート・ネーム・サーバ317に接触し、パラメータとしてリモート・オブジェクト名455を渡し、リモート・オブジェクト51の更新された記憶場所を問い合わせる。ステップ550で、オブジェクトが従属オブジェクトである場合、ネーム・サーバ317は渡された名前を持つターゲット・オブジェクト51を探し出す。オブジェクトが持続オブジェクトでない場合、ネーム・サーバ317はそのオブジェクトを作成する。ステップ555で、ネーム・サーバ317はクライアント・アドレス空間53にあるプロキシ・オブジェクト449にリモート・オブジェクト51の新しい記憶場所を返す。ステップ560で、プロキシ・オブジェクト449は妥当性フラグ459を偽に設定し、リモート・オブジェクト51の新たに供給された記録場所を指すようにその代替プロキシ・ポインタ457を更新する。
【0061】
第2の実施例
第9図に、サーバとクライアントの間に双方向リンクがない本発明の第2の実施例を示す。この実施例のクライアントは、「最初の障害時にすべてのプロキシ・オブジェクトをリフレッシュする」というポリシーを実行しなければならない。クライアント・アプリケーション48、プロキシ・オブジェクト449、プロキシ・レジスタ・オブジェクト155、およびORB50については、第4図のクライアント・アドレス空間53を参照しながら前述した通りである。サーバ313、ターゲット・オブジェクト51、ネーム・サーバ317、およびORB52についても、第1図および第2図のサーバ・アドレス空間54を参照しながら前述した通りである。
【0062】
第9図を参照すると、ステップ610で、プロキシ・オブジェクト449はデフォルトのディスパッチ方法(例3)を使用してメソッド呼出しを無効なプロキシを使用しているサーバ313にディスパッチしようとする。この結果、ステップ620でサーバ313は不正オブジェクト参照例外を返す。この実施例では、クライアントは「最初の障害時にすべてのプロキシ・オブジェクトをリフレッシュする」ポリシーを実行するため、ステップ630でプロキシ・オブジェクト449は、プロキシ・レジスタ・オブジェクト155に対してリモート・サーバ54のすべてのプロキシ・オブジェクトをリフレッシュするように要求する。ステップ640で、プロキシ・レジスタ・オブジェクト155はサーバ54にあるターゲット・オブジェクト51のすべてのプロキシ・オブジェクト449にそのプロキシ・オブジェクト449自体をリフレッシュするように指示する。ステップ650で、各プロキシ・オブジェクト449はリモート・ネーム・サーバ317に接触し、パラメータとしてその名前を渡し、ターゲット・オブジェクト51の更新された記憶場所を問い合わせる。ステップ660で、ネーム・サーバ317は与えられた名前を持つオブジェクト51を探し出す(または非持続性の場合には作成する)。ステップ670で、ネーム・サーバ317はクライアント・アドレス空間53にあるプロキシ・オブジェクト449に新しいプロキシを返す。ステップ680で、プロキシはその妥当性フラグ459を偽に設定し、その代替プロキシ・ポインタ457を新たに供給されたプロキシを指すように更新する。ステップ690で、プロキシ・オブジェクト449はその代替プロキシ457を使用して元の要求をカスタム方式(例4)で再ディスパッチする。
【0063】
以降のシステム誤動作
リモート・サーバの誤動作がもう一度発生し、その後で再始動した場合、クライアントは第3のプロキシを必要としない。クライアントは代替プロキシ・ポインタによって指されているプロキシを削除し、そのプロキシを新しいプロキシに置き換える。クライアント・アプリケーションはこれをまったく認識しない。したがって、クライアントはアクセスする各リモート・オブジェクトについてプロキシを2つ(1つは無効で1つは有効)持つことになる。クライアントはサーバよりも存続期間が短い傾向があり、クライアントが再始動するときに無効なプロキシは消滅しているため、追加の無効なプロキシによるオーバーヘッドは大きくない。
【0064】
ディスパッチ
ディスパッチは、DSOMプロキシ・オブジェクトがメソッド呼出しをリモート・サーバにディスパッチするに過ぎない。本発明は、通常のプロキシと代替プロキシのどちらを使用するかを判断するために、デフォルトのディスパッチ方法の変形を必要とする。例3に、従来技術のDSOMプロキシ・オブジェクトで採用されているIDL言語で書かれたデフォルトの従来技術のディスパッチ方法を示す。このディスパッチ方法は、DSOMフレームワークによって与えられ、プロキシ・オブジェクトの作成時にプロキシ・オブジェクトによって継承される。
【0065】
例3−デフォルト・ディスパッチ関数の例:
例3の終わり
【0066】
例4に、本発明により実施されるDSOMプロキシ・オブジェクトで使用するディスパッチのカスタマイズされた方法をIDL言語で示す。本発明によるディスパッチ方法では、妥当性標識(459)の検査による通常のポインタと代替プロキシ・ポインタ(457)のどちらを使用するかを判断する追加のステップが含まれる。妥当性フラグ(459)を検査し、通常のプロキシ・ポインタが有効であることを示している場合はそのポインタを使用し、次にメソッドが従来技術で周知の方式と同じ方式でディスパッチされる。妥当性フラグ(459)が、通常のプロキシ・ポインタが無効であることを示している場合、メソッドは従来技術で周知の方式と同じ方式でディスパッチされるが、代替プロキシ・ポインタ(457)が使用される。
【0067】
さらに、プロキシ・オブジェクトをすべて更新させることによって、不正オブジェクト参照のエラー処理を行う。DSOMフレームワークが備えるディスパッチ方法を修正することによってカスタマイズが行われ、プロキシ・オブジェクトの作成時にプロキシ・オブジェクトによって継承される。
【0068】
例4−カスタマイズされたディスパッチ関数の例:
例4の終わり
【図面の簡単な説明】
【図1】第1図は、クライアント/サーバ環境にある従来技術のオブジェクト要求ブローカを示すブロック図である。
【図2】第2図は、従来技術のDSOM環境を示すブロック図である。
【図3】第3図は、本発明と共に使用するのに適した従来技術のコンピュータ・システムを示す図である。
【図4】第4図は、第1図のクライアント/サーバ環境にある、本発明によるプロキシ・オブジェクトとプロキシ・レジスタ・オブジェクトを示す図である。
【図5】第5図は、第1図のクライアント/サーバ環境で使用される従来技術のプロキシ・オブジェクトの構築を示す図である。
【図6】第6図は、第8図および第9図のクライアント/サーバ環境で使用する、本発明によるプロキシ・オブジェクトの構築を示す図である。
【図7】第7図は、第6図により構築されたプロキシ・オブジェクトを示す図である。
【図8】第8図は、クライアントとサーバの間に双方向リンクを有するシステムにおいて実施された、本発明による回復可能プロキシ・オブジェクトの第1の実施例を含むクライアント/サーバ環境を示す図である。
【図9】第9図は、クライアントとサーバの間に双方向通信リンクを持たないシステムにおいて実施された、本発明による回復可能プロキシ・オブジェクトの第2の実施例を含むクライアント/サーバ環境を示す図である。
Claims (15)
- クライアント・アドレス空間(53)にある回復可能プロキシ・オブジェクト(449)がサーバ・アドレス空間(54)内のターゲット・オブジェクト(51)を指すポインタを有する分散オブジェクト指向コンピューティングの方法であって、
前記プロキシ・オブジェクト(449)にターゲット・オブジェクト(51)の名前(455)と、前記プロキシ・オブジェクトの妥当性に関する標識(459)と、前記ターゲット・オブジェクト(51)の代替プロキシ(457)とを記憶させるステップ(950)と、
前記プロキシ・オブジェクト(449)を指す参照ポインタを維持すると共に、各クライアント・アドレス空間にそれぞれ含まれるプロキシ・レジスタ・オブジェクト(155)に前記プロキシ・オブジェクト(449)を登録さ せるステップ(960)と、
前記ターゲット・オブジェクト(51)の各呼出しの前に、前記プロキシ・オブジェクト(449)が該プロキシ・オブジェクト(449)の妥当性に関する標識を検査するステップと、
前記検査に応答して、有効な場合は前記プロキシ・オブジェクト(449)を使用し、無効な場合は前記代替プロキシ(457)を使用するステップと、
前記サーバ・アドレス空間における誤動作に応答して、前記プロキシ・レジスタ・オブジェクト(155)が、前 記プロキシ・オブジェクト(449)が無効であることを 示す(560、680)と共に、各前記プロキシ・オブジェクト(449)に、前記サーバ内の前記ターゲット・オブジェクト(51)の有効な前記代替プロキシ(457)をネー ム・サーバから取得させ、記憶された前記代替プロキシ(457)を指すポインタによりターゲット・オブジェク トを使用させる(540、650)ステップとを含む方法。 - 前記サーバ・アドレス空間(54)と前記クライアント・アドレス空間(53)とが双方向通信リンク(460)によってリンクされ、
前記サーバ・オブジェクト(313)が前記クライアント・アプリケーション(48)に要求(510)して前記サーバ・アドレス空間(54)にある前記ターゲット・オブジェクト(51)の有効な前記代替プロキシ(457)を取得 させることによって各前記プロキシ・オブジェクト(449)をリフレッシュさせる、請求項1に記載の方法。 - 前記クライアント・アプリケーション(48)が、前記サーバ・アドレス空間(54)内にある前記ターゲット・オブジェクト(51)にアクセスする際にエラー標識を受け取ると、前記サーバ・アドレス空間(54)内にある前記ターゲット・オブジェクト(51)の有効な前記代替プロキシ(457)を取得させることによって各前記プロキシ・オブジェクト(449)をリフレッシュさせる、請求項1に記載の方法。
- 前記プロキシ・オブジェクト(449)をリフレッシュする前記ステップが、前記クライアント・アプリケーション(48)に応答して、前記ターゲット・オブジェクト(51)が持続オブジェクトでなかった場合に前記サーバ・オブジェクト(313)を使用して前記ターゲット・オブジェクト(51)を作成するステップをさらに含む、請求項2または3に記載の方法。
- 前記分散オブジェクト指向システムがCORBA準拠システムである、請求項1、2、または3のいずれか一項に記載の方法。
- 前記分散オブジェクト指向コンピュータ・システムがDSOMクラス・ライブラリを使用する、請求項5に記載の方法。
- 回復可能な前記プロキシ・オブジェクト(449)がSOMDClientProxyのサブクラスであり、DSOMが通信機構である、請求項6に記載の方法。
- 前記プロキシ・レジスタ・オブジェクト(155)がメタクラスSOMMSingleInstanceを持つSOMオブジェクトである、請求項6に記載の方法。
- クライアント・アドレス空間(53)内のプロキシ・オブジェクト(49)がサーバ・アドレス空間(54)内のターゲット・オブジェクト(51)を指す一次ポインタを有し、前記一次ポインタによって前記プロキシ・オブジェクトに対する呼出しの結果、対応する前記ターゲット・オブジェクトの呼び出しが実行される分散オブジェクト指向コンピューティングの方法であって、
前記サーバ・アドレス空間における誤動作に応答して、場合によって前記ターゲット・オブジェクトの再配置を引き起こすステップと、再配置された前記ターゲット・オブジェクトを指す前記プロキシ・オブジェクトを、各クライアント・アドレス空間にそれぞれ含まれるプロキシ・レジスタ・オブジェクト(155)を介して回復するステップとを含み、
各前記プロキシ・オブジェクトに前記アドレス空間内のネーム・サーバ(317)により生成される有効な代替プ ロキシ(457)を取得させ、再配置された前記ターゲット・オブジェクト(51)を記憶させるステップと、
前記プロキシ・オブジェクト内に、前記一次ポインタが無効であって前記代替プロキシ(457)を使用すべきであることを示す妥当性フラグ(459)を作成し、前記妥当性フラグ(459)を判断し、前記プロキシ・オブジェクトに対する呼出しの結果として該当する前記ターゲット・オブジェクトを呼び出すステップとをさらに含むことを特徴とする方法。 - 1つまたは複数のプロキシ・オブジェクト(449)を有する分散オブジェクト指向コンピュータ・システムであって、
アドレス空間内にある、
クライアント・アプリケーション(48)がそれに対して操作を実行することができるターゲット・オブジェクト(51)と、
クライアント・アドレス空間(53)内の前記クライアント・アプリケーション(48)との通信を可能にするオブジェクト要求ブローカ(52)と、
前記クライアント・アプリケーション(48)からの要求に応答するサーバ・オブジェクト(313)とを有するサーバ・アドレス空間(54)と、
アドレス空間にある、前記クライアント・アドレス空間(53)内にある1つまたは複数のオブジェクト(449)に対する操作を行う前記クライアント・アプリケーション(48)と、
前記サーバ・アドレス空間(54)内のオブジェクト(313、51)との通信を可能にするオブジェクト要求ブローカ(50)と、
各前記プロキシ・オブジェクト(449)が前記サーバ・アドレス空間(54)内の前記ターゲット・オブジェクト(51)の場所を指すポインタを含む1つまたは複数の前記プロキシ・オブジェクト(449)とを有する前記クライアント・アドレス空間(53)とを含み、
前記1つまたは複数の前記プロキシ・オブジェクト(449)のそれぞれが、
前記サーバ・アドレス空間(54)内にある前記ターゲット・オブジェクトの名前(455)と、
前記ターゲット・オブジェクト(51)を指すポインタと、
前記ターゲット・オブジェクト(51)を参照するためにプロキシ・オブジェクト内の前記ポインタと代替プロキ シ(457)を指すポインタとのいずれを使用すべきかを示す妥当性フラグ(459)とをさらに含むことを特徴とし、
前記クライアント・アドレス空間が、
該クライアント・アドレス空間(53)内にある前記プロキシ・オブジェクト(449)を指す参照ポインタを維持すると共に、各クライアント・アドレス空間にそれぞれ含まれるプロキシ・レジスタ・オブジェクト(155)と、
前記サーバ・アドレス空間(54)における誤動作後に1つまたは複数の前記プロキシ・オブジェクト(449)を更新する手段と、をさらに含むシステム。 - 前記サーバ・アドレス空間(54)と前記クライアント・アドレス空間(53)とが双方向通信リンク(460)によってリンクされ、前記サーバ・オブジェクト(313)が前記クライアント・アドレス空間に要求して前記サーバ・アドレス空間(54)内にある前記ターゲット・オブジェクト(51)の有効な代替プロキシ(457)を取得させることによって各前記プロキシ・オブジェクト(449)をリフレッシュさせる、請求項10に記載のシステム。
- 前記サーバ・アドレス空間(54)内にある前記ターゲット・オブジェクト(51)にアクセスする際にエラー標識を受け取ると、前記クライアント・アプリケーション(48)が前記サーバ・アドレス空間(54)内の前記ターゲット・オブジェクト(51)の前記有効代替プロキシ(457)を取得させることによって各前記プロキシ・オブジェクト(449)をリフレッシュする、請求項10に記載のシステム。
- 前記システムがCORBA準拠システムである、請求項10ないし11のいずれか一項に記載のシステム。
- クライアント・アドレス空間(53)にある回復可能プロキシ・オブジェクト(449)がサーバ・アドレス空間(54)内のターゲット・オブジェクト(51)を指すポインタを有する分散オブジェクト指向コンピューティングの方法を実行するコンピュータ・プログラムを含むコンピュータ可読記録媒体であって、該コンピュータ・プログラムは、
前記プロキシ・オブジェクト(449)にターゲット・オブジェクト(51)の名前(455)と、前記プロキシ・オブジェクトの妥当性に関する標識(459)と、前記ターゲット・オブジェクト(51)の代替プロキシ(457)とを記憶するステップ(950)と、
前記プロキシ・オブジェクト(449)を指す参照ポインタを維持すると共に、各クライアント・アドレス空間にそれぞれ含まれるプロキシ・レジスタ・オブジェクト(155)に前記プロキシ・オブジェクト(449)がそれ自体を登録するステップ(960)と、
前記ターゲット・オブジェクト(51)の各呼出しの前に、前記プロキシ・オブジェクト(449)が該プロキシ・オブジェクト(449)の妥当性を検査するステップと、
前記検査に応答して、有効な場合は前記プロキシ・オブジェクト(449)を使用し、無効な場合は前記代替プロキシ(457)を使用するステップと、
前記サーバ・アドレス空間における誤動作に応答して、前記プロキシ・レジスタ・オブジェクト(155)が、前 記プロキシ・オブジェクト(449)が無効であることを 示す(560、680)と共に、各前記プロキシ・オブジェクト(449)に、前記サーバ内の前記ターゲット・オブジェクト(51)の有効な前記代替プロキシ(457)をネー ム・サーバから取得させ、記憶された前記代替プロキシ(457)を指すポインタによりによりターゲット・オブ ジェクトを使用させる(540、650)ステップとをコンピ ュータに対して実行させる記録媒体。 - クライアント・アドレス空間(53)内のプロキシ・オブジェクト(49)がサーバ・アドレス空間(54)内のターゲット・オブジェクト(51)を指す一次ポインタを有し、前記一次ポインタによって前記プロキシ・オブジェクトに対する呼出しの結果として対応する前記ターゲット・オブジェクトの呼び出しを実行する分散オブジェクト指向コンピューティングの方法を実行させるためのコンピュータ・プログラムを含むコンピュータ可読記録媒体であって、該コンピュータ・プログラムは、
前記サーバ・アドレス空間における誤動作に応答して、場合によって前記ターゲット・オブジェクトの再配置を引き起こすステップと、
再配置された前記ターゲット・オブジェクトを指す前記プロキシ・オブジェクトを、各クライアント・アドレス空間にそれぞれ含まれるプロキシ・レジスタ・オブジェクト(155)を介して回復するステップとを含み、
各前記プロキシ・オブジェクトに前記アドレス空間内のネーム・サーバ(317)により有効な代替プロキシ(457)を生成し、前記クライアント・アドレス空間に取得 させ、再配置された前記ターゲット・オブジェクト(51)を記憶させるステップと、
前記プロキシ・オブジェクト内に、前記一次ポインタが無効であって前記代替プロキシ(457)を指すポインタ を使用すべきであることを示す妥当性フラグ(459)を作成し、それによって前記プロキシ・オブジェクトに対する呼出しの結果として該当する前記ターゲット・オブジェクトが呼び出されるステップとをさらに含むことを特徴とする記録媒体。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB9518951.0 | 1995-09-15 | ||
GB9518951A GB2305271A (en) | 1995-09-15 | 1995-09-15 | Proxy object recovery in an object-oriented environment |
PCT/GB1996/000108 WO1997010545A1 (en) | 1995-09-15 | 1996-01-23 | Recoverable proxy object in an object oriented environment |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH10511202A JPH10511202A (ja) | 1998-10-27 |
JP3595340B2 true JP3595340B2 (ja) | 2004-12-02 |
Family
ID=10780811
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP51173097A Expired - Fee Related JP3595340B2 (ja) | 1995-09-15 | 1996-01-23 | オブジェクト指向環境における回復可能プロキシ・オブジェクト |
Country Status (6)
Country | Link |
---|---|
US (1) | US5903725A (ja) |
EP (1) | EP0850445B1 (ja) |
JP (1) | JP3595340B2 (ja) |
DE (1) | DE69607851D1 (ja) |
GB (1) | GB2305271A (ja) |
WO (1) | WO1997010545A1 (ja) |
Families Citing this family (59)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH1097571A (ja) * | 1996-09-20 | 1998-04-14 | Hitachi Ltd | 相談先端末接続方法 |
JPH10171701A (ja) * | 1996-12-10 | 1998-06-26 | Fuji Xerox Co Ltd | 手続実行装置及び方法 |
FR2762415B1 (fr) * | 1997-04-17 | 1999-06-11 | Alsthom Cge Alcatel | Gestion de la mort accidentelle d'un objet lors d'une communication entre objets distribues dans un environnement com |
US6014700A (en) * | 1997-05-08 | 2000-01-11 | International Business Machines Corporation | Workload management in a client-server network with distributed objects |
CA2204971A1 (en) * | 1997-05-09 | 1998-11-09 | Michael Cheng | Uniform access to and interchange between objects employing a plurality of access methods |
US5999940A (en) * | 1997-05-28 | 1999-12-07 | Home Information Services, Inc. | Interactive information discovery tool and methodology |
US6040830A (en) * | 1997-06-20 | 2000-03-21 | Autodesk, Inc. | Intelligent proxy objects |
US6253253B1 (en) * | 1997-08-25 | 2001-06-26 | International Business Machines Corporation | Method and apparatus for optimizing references to objects in a data processing system |
JPH11110324A (ja) * | 1997-10-07 | 1999-04-23 | Hitachi Ltd | 代理サーバ選択装置および代理サーバ |
US6209018B1 (en) * | 1997-11-13 | 2001-03-27 | Sun Microsystems, Inc. | Service framework for a distributed object network system |
US6018805A (en) * | 1997-12-15 | 2000-01-25 | Recipio | Transparent recovery of distributed-objects using intelligent proxies |
FR2775805B1 (fr) * | 1998-03-05 | 2001-10-12 | Alsthom Cge Alkatel | Procede et architecture logicielle pour la transmission d'objets au sein d'un environnement distribue, conservant les references entre objets |
US6324543B1 (en) * | 1998-03-06 | 2001-11-27 | International Business Machines Corporation | Dynamic object migration method using proxy object links to support automatic object distribution in an object-oriented environment |
US6412015B1 (en) | 1998-06-24 | 2002-06-25 | New Moon Systems, Inc. | System and method for virtualizing and controlling input and output of computer programs |
EP0967546A3 (en) * | 1998-06-25 | 2001-05-02 | Intellution Inc. | System and method for storing and retrieving objects |
US6314459B1 (en) * | 1998-08-13 | 2001-11-06 | U.S. Philips Corporation | Home-network autoconfiguration |
US6385661B1 (en) * | 1998-10-19 | 2002-05-07 | Recursion Software, Inc. | System and method for dynamic generation of remote proxies |
US6336118B1 (en) * | 1998-12-03 | 2002-01-01 | International Business Machines Corporation | Framework within a data processing system for manipulating program objects |
US6637020B1 (en) | 1998-12-03 | 2003-10-21 | International Business Machines Corporation | Creating applications within data processing systems by combining program components dynamically |
US6360358B1 (en) * | 1999-03-11 | 2002-03-19 | Microsoft Corporation | Maintenance of code knowledge for up-to-date access thereof |
JP2002540502A (ja) * | 1999-03-25 | 2002-11-26 | エクセロン コーポレイション | データベースシステムにおけるバーチャルメモリマッピングとトランザクションマネージメントのポインターリロケーションオプチミゼーションの方法及び装置 |
US6192371B1 (en) * | 1999-04-28 | 2001-02-20 | Lucent Technologies, Inc | Object morphing in an object oriented computing environment using relational database query procedure |
US7305473B2 (en) * | 1999-05-28 | 2007-12-04 | The Coca-Cola Company | Provision of transparent proxy services to a user of a client device |
JP2000347866A (ja) * | 1999-06-04 | 2000-12-15 | Nec Corp | 分散システムとアクセス制御装置及び方法、並びにアクセス制御用プログラムを記録した記録媒体 |
US7289964B1 (en) | 1999-08-31 | 2007-10-30 | Accenture Llp | System and method for transaction services patterns in a netcentric environment |
US6842906B1 (en) * | 1999-08-31 | 2005-01-11 | Accenture Llp | System and method for a refreshable proxy pool in a communication services patterns environment |
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 |
US6629128B1 (en) * | 1999-11-30 | 2003-09-30 | Recursion Software, Inc. | System and method for distributed processing in a computer network |
EP1168752A1 (en) * | 2000-06-23 | 2002-01-02 | Matra Nortel Communications | Access control in client-sever systems |
US6895444B1 (en) * | 2000-09-15 | 2005-05-17 | Motorola, Inc. | Service framework with local proxy for representing remote services |
US20020073409A1 (en) * | 2000-12-13 | 2002-06-13 | Arne Lundback | Telecommunications platform with processor cluster and method of operation thereof |
US7711771B2 (en) * | 2001-05-25 | 2010-05-04 | Oracle International Corporation | Management and synchronization application for network file system |
US7647597B2 (en) * | 2001-06-28 | 2010-01-12 | Microsoft Corporation | Transparent and sub-classable proxies |
US7043731B2 (en) * | 2001-07-12 | 2006-05-09 | Qwest Communications International, Inc. | Method and system for distributing access to group of objects based on round robin algorithm and only when the object is available |
US20030033351A1 (en) * | 2001-08-10 | 2003-02-13 | Aleta Ricciardi | Group proxy and method for grouping services in a distributed computing application |
US7020659B2 (en) * | 2001-08-15 | 2006-03-28 | Oic Acquistion I Corporation | System and method for managing bi-directional relationships between objects |
US20030039256A1 (en) * | 2001-08-24 | 2003-02-27 | Klas Carlberg | Distribution of connection handling in a processor cluster |
US6951020B2 (en) * | 2001-08-28 | 2005-09-27 | Kayak Interactive Corporation | Method for handling transitions in grouped services in a distributed computing application |
US7516447B2 (en) * | 2002-02-22 | 2009-04-07 | Bea Systems, Inc. | Methods and apparatus for building, customizing and using software abstractions of external entities |
US7577749B1 (en) | 2004-12-03 | 2009-08-18 | Ux Ltd. | Emulation of persistent HTTP connections between network devices |
WO2006092047A1 (en) * | 2005-03-02 | 2006-09-08 | Tira Wireless Inc. | System and method for porting a mobile device application |
CN100461176C (zh) * | 2006-01-26 | 2009-02-11 | 无锡永中科技有限公司 | 基于对象存储库的对象引用方法 |
US9146789B2 (en) * | 2006-03-21 | 2015-09-29 | Oracle America, Inc. | Method and apparatus for generating and using location-independent distributed object references |
US8347321B1 (en) * | 2006-03-30 | 2013-01-01 | Emc Corporation | In place object reconstruction |
KR101711863B1 (ko) | 2008-11-26 | 2017-03-13 | 캘거리 싸이언티픽 인코포레이티드 | 애플리케이션 프로그램의 상태에 대한 원격 액세스를 제공하기 위한 방법 및 시스템 |
US10055105B2 (en) | 2009-02-03 | 2018-08-21 | Calgary Scientific Inc. | Method and system for enabling interaction with a plurality of applications using a single user interface |
US9992253B2 (en) | 2011-08-15 | 2018-06-05 | Calgary Scientific Inc. | Non-invasive remote access to an application program |
US9741084B2 (en) | 2011-01-04 | 2017-08-22 | Calgary Scientific Inc. | Method and system for providing remote access to data for display on a mobile device |
CA2734860A1 (en) | 2011-03-21 | 2012-09-21 | Calgary Scientific Inc. | Method and system for providing a state model of an application program |
US20120254109A1 (en) * | 2011-03-28 | 2012-10-04 | Microsoft Corporation | Distributed component runtime |
WO2013046015A1 (en) | 2011-09-30 | 2013-04-04 | Calgary Scientific Inc. | Uncoupled application extensions including interactive digital surface layer for collaborative remote application sharing and annotating |
WO2013076554A1 (en) | 2011-11-23 | 2013-05-30 | Calgary Scientific Inc. | Methods ans systems for collaborative remote application sharing and conferencing |
US20130332417A1 (en) * | 2012-06-08 | 2013-12-12 | In Koo Kim | Hybrid Client-Server Data Proxy Controller For Software Application Interactions With Data Storage Areas And Method Of Using Same |
US9648125B2 (en) * | 2013-10-04 | 2017-05-09 | Akamai Technologies, Inc. | Systems and methods for caching content with notification-based invalidation |
US9641640B2 (en) * | 2013-10-04 | 2017-05-02 | Akamai Technologies, Inc. | Systems and methods for controlling cacheability and privacy of objects |
CN105765923B (zh) | 2013-11-29 | 2019-11-12 | 卡尔加里科技股份有限公司 | 客户端-服务器远程访问***中提供客户端到非托管服务的连接的方法 |
US10015264B2 (en) * | 2015-01-30 | 2018-07-03 | Calgary Scientific Inc. | Generalized proxy architecture to provide remote access to an application framework |
US10521200B2 (en) * | 2017-01-09 | 2019-12-31 | Oracle International Corporation | Unambiguous proxying of interface methods |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE69309485T2 (de) * | 1992-11-13 | 1997-07-10 | Microsoft Corp | Verfahren zur verteilung von schnittstellenzeigern fur fernprozeduranrufe |
JP3365576B2 (ja) * | 1993-06-14 | 2003-01-14 | インターナショナル・ビジネス・マシーンズ・コーポレーション | オブジェクトの実行方法および装置 |
US5732270A (en) * | 1994-09-15 | 1998-03-24 | Visual Edge Software Limited | System and method for providing interoperability among heterogeneous object systems |
US5692183A (en) * | 1995-03-31 | 1997-11-25 | Sun Microsystems, Inc. | Methods and apparatus for providing transparent persistence in a distributed object operating environment |
-
1995
- 1995-09-15 GB GB9518951A patent/GB2305271A/en not_active Withdrawn
-
1996
- 1996-01-23 WO PCT/GB1996/000108 patent/WO1997010545A1/en active IP Right Grant
- 1996-01-23 JP JP51173097A patent/JP3595340B2/ja not_active Expired - Fee Related
- 1996-01-23 EP EP96900388A patent/EP0850445B1/en not_active Expired - Lifetime
- 1996-01-23 DE DE69607851T patent/DE69607851D1/de not_active Expired - Lifetime
- 1996-09-06 US US08/709,084 patent/US5903725A/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US5903725A (en) | 1999-05-11 |
WO1997010545A1 (en) | 1997-03-20 |
GB2305271A (en) | 1997-04-02 |
JPH10511202A (ja) | 1998-10-27 |
EP0850445B1 (en) | 2000-04-19 |
DE69607851D1 (de) | 2000-05-25 |
GB9518951D0 (en) | 1995-11-15 |
EP0850445A1 (en) | 1998-07-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3595340B2 (ja) | オブジェクト指向環境における回復可能プロキシ・オブジェクト | |
US6493719B1 (en) | Method and system for scripting for system management information | |
US8073935B2 (en) | Pluggable semantic verification and validation of configuration data | |
US7206827B2 (en) | Dynamic administration framework for server systems | |
JP2915842B2 (ja) | 第1クラス分散オブジェクトを使用して分散オブジェクト・サーバを制御、管理するシステム、及び方法 | |
US8788569B2 (en) | Server computer system running versions of an application simultaneously | |
US7412497B2 (en) | Generation of Administration framework for server systems | |
US8984534B2 (en) | Interfacing between a receiving component of a server application and a remote application | |
US8095823B2 (en) | Server computer component | |
US6230318B1 (en) | Application programs constructed entirely from autonomous component objects | |
US6564377B1 (en) | Self-describing components within a software catalog | |
US5842220A (en) | Methods and apparatus for exposing members of an object class through class signature interfaces | |
US20040019669A1 (en) | Event notification in an administration framework for server systems | |
US20030149799A1 (en) | System supporting unified event handling in ECMAScript | |
US6263498B1 (en) | Method and apparatus for enabling server side distributed object modification | |
KR101098603B1 (ko) | 원격 경계를 가로질러 컴퓨터 판독가능한 객체들을전달하기 위한 시스템 및 방법 | |
US20090172636A1 (en) | Interactive development tool and debugger for web services | |
EP0817101A2 (en) | Method and system for uniformly accessing multiple directory services | |
US8141104B2 (en) | Integrating non-compliant providers of dynamic services into a resource management infrastructure | |
US7945921B2 (en) | Cross application domain late binding to non-local types | |
EP0575073A2 (en) | Objects with run-time classes | |
EP1185927A1 (en) | Management of non-mbeam objects in jmx environment | |
US6918126B1 (en) | Method and apparatus for creating and enforcing protected system level Java code | |
US20040088687A1 (en) | Code analysis for selective runtime data processing | |
US7526752B1 (en) | Introspection support for generic types |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040720 |
|
RD14 | Notification of resignation of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7434 Effective date: 20040831 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20040903 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |