(57)【要約】【課題】オブジェクト指向システムにおいてオブジェクトに拡張可能な補助サービス集合を提供する。【解決手段】オブジェクトに拡張可能な補助サービス集合を提供する方法は、複数の補助サービスを生成し、複数の文脈オブジェクトを有するネーム・サーバを提供し、オブジェクト・マネージャに対応づけられたオブジェクト・マネージャ識別子をリターンするｇｅｔ＿ＯＭＩＤオペレーションを各オブジェクトにおいて実行し、そのオブジェクト・マネージャ識別子を要求された補助サービスに対応付けられた名前に変更し、複数の文脈オブジェクトの１つにおいて要求された補助サービスに対応付けられた名前をリゾルブして補助サービス名の表示を受け取り、その補助サービスの表示を用いて補助サービス中の補助サービス・オペレーションの１つを呼び出す。【選択図】図１
2006190328.tif 000002
【特許請求の範囲】
【請求項１】
メモリに接続されたプロセッサを有する第１コンピュータ・サーバであって、前記プロセッサによって前記メモリから
複数のオブジェクトを管理し、
それぞれが少なくとも一つの補助サービス・オペレーションを有する複数の補助サービスを生成し、
上記複数の各オブジェクトにおいて、前記第１コンピュータ・サーバに対応付けられている第１コンピュータ・サーバ識別子をリターンするｇｅｔ＿ＯＭＩＤオペレーションを実行し、および
所望の補助サービスに関連した名前に上記第１コンピュータ・サーバ識別子を変換することを行う第１コンピュータ・サーバと、
それぞれが複数の名前−オブジェクト対応付けを有する複数の文脈オブジェクトを格納するメモリ備えた第２コンピュータ・サーバと、
メモリに接続されたプロセッサを有するクライアント・サーバであって、前記プロセッサによって前記メモリから
前記補助サービスの表示を受け取るために、前記複数の文脈オブジェクトの１つにおいて、所望の補助補助サービスに関連した上記名前をリゾルブし、および
前記補助サービスの前記表示を用いて前記補助サービス内の補助サービス・オペレーションの１つを呼出すことを行うクライアント・サーバと
を有することを特徴とするシステム。
【請求項２】
メモリに接続されたプロセッサを有する第１コンピュータ・サーバであって、前記プロセッサによって前記メモリから
複数のオブジェクトを管理し、
フリーズ・オペレーションとメルト・オペレーションを有し、かつ少なくとも１つのフリーズ・メルト・サービス名を備えたフリーズ・メルト・サービスを生成し、
上記複数の各オブジェクトにおいて、上記第１コンピュータ・サーバに対応付けられている第１コンピュータ・サーバ識別子をリターンするｇｅｔ＿ＯＭＩＤオペレーションを実行し、および
上記第１コンピュータ・サーバ識別子を上記フリーズ・メルト・サービス名に変換する変換機能を実行することを行う第１コンピュータ・サーバと、
上記フリーズ・メルト・サービス・オブジェクト名を上記フリーズ・メルト・サービスの表示に対応付ける複数の名前対応付けを有する文脈オブジェクトを格納するメモリを備えた第２コンピュータ・サーバと、
メモリに接続されたプロセッサを有する第１コンピュータ・サーバであって、前記プロセッサによって前記メモリから
上記第１コンピュータ・サーバ識別子得るためにオブジェクトにおいて上記ｇｅｔ＿ＯＭＩＤオペレーションを呼び出し、
上記第１コンピュータ・サーバ識別子をフリーズ・メルト・サービス名に変換するために前記変換機能を呼び出し、および
上記フリーズ・メルト・サービスの表示を受け取るために、上記文脈オブジェクトにおいて、上記フリーズ・メルト・サービス名をリゾルブすることによって、オブジェクトに対して上記フリーズ・オペレーションと上記メルト・オペレーションの双方を上記フリーズ・メルトサービスから得ることを行うクライアント・サーバと
を有することを特徴とするシステム。
【請求項３】
メモリに接続されたプロセッサを有する第１コンピュータ・サーバであって、前記プロセッサによって前記メモリから
複数のオブジェクトを管理し、
複写オペレーションを有し、少なくとも一つの複写サービス・オブジェクト名を備えた複写サービス・オブジェクトを生成し、
上記複数の各オブジェクトにおいて、上記第１コンピュータ・サーバに対応付けられている第１コンピュータ・サーバ識別子をリターンするｇｅｔ＿ＯＭＩＤオペレーションを実行し、および
上記第１コンピュータ・サーバ識別子を上記複写サービス名に変換する変換機能を実行することを行う第１コンピュータ・サーバと、
複数の名前対応付けの１つが前記複写サービス名を前記複写サービスの表示へ対応付けるものである、前記複数の名前対応付けを備えた前記文脈オブジェクトを格納するメモリを含む第２コンピュータ・サーバと、
前記複数の各オブジェクトにおいて、第１コンピュータ・サーバ識別子を得るためにｇｅｔ＿ＯＭＩＤオペレーションを呼出し、
前記第１コンピュータ・サーバ識別子を前記複写サービス名に変換する変換機能を呼し、および
前記複写サービスの表示を受け取るために、前記文脈オブジェクトにおいて、複写サービス名をリゾルブすることによって、オブジェクトに対して上記複写サービスから複写オペレーションを得ることを行うクライアント・サーバと
を有することを特徴とするシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、オブジェクト指向プログラミングの分野に関し、更に詳しくはオブジェクト指向システムにおけるオブジェクトに拡張可能な補助サービス集合を提供する方法および安全なフリーズ・サービスを提供する方法に関している。
【背景技術】
【０００２】
オブジェクト指向システムにおいて、オブジェクトは、収集データを操作する機能集合を伴なった収集データから成っている。収集データは、オブジェクト状態データと呼ばれている。また、状態データを操作する機能は、オペレーションと呼ばれている。各オブジェクトは、それに対応したオブジェクト・マネージャを有しており、オブジェクト・マネージャは、オブジェクトのオペレーションを実行しかつオブジェクトに収集データを保持するサーバである。
【０００３】
あるオブジェクトに関するオペレーションを実行するため、クライエントは、オブジェクト中のオペレーションの１つを「呼出す」よう、オブジェクトにメッセージを送る。オブジェクトに送られたメッセージは、オペレーション・セレクタとパラメータ・データから成っている。メッセージのオペレーション・セレクタは、オブジェクトを操作するのに使用される、オブジェクト中のオペレーションを選択する。一方、メッセージのパラメータ・データは、呼出されたオペレーションにより使用される外部情報を提供する。オペレーションが完了すると、オペレーションは、通常、クライエントにリターン値をリターンし、オペレーションの呼出しの結果を与える。
【０００４】
各オブジェクトにおける固有なオペレーションの他、システムにおけるオブジェクトに対して保守オペレーションを行なう「補助サービス」集合を有していると有利である。たとえば、補助サービスには、永続オブジェクトを生成するフリーズ・メルト・サービスや、異なるアクセス権でオブジェクトのコピーを生成する複写サービスがある。オブジェクトに関する補助サービスは、そのオブジェクトのオブジェクト・マネージャにより、または他のオブジェクト・マネージャにより実行される。補助サービスの特定の種類については、別のオブジェクト・マネージャが別の補助サービスを行なう。たとえば、２つの異なるオブジェクト・マネージャは、２つの違ったフリーズ・メルト・サービスを行なう。補助サービスはセンシィティブなオペレーションを実行するので、補助サービスのアクセスは安全に保護されなければならない。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
本発明の目的は、オブジェクト指向システムにおけるオブジェクトに補助サービス集合を提供することである。
本発明の他の目的は、その補助サービス集合が拡張可能であるような方法で、上記補助サービス集合を提供することである。
本発明の他の目的は、上記補助サービス集合において安全なフリーズ・メルト・サービスを提供することである。
本発明の他の目的は、上記補助サービス集合において異なるアクセス権でオブジェクトのコピーを生成する複写サービスを提供することである。
【課題を解決するための手段】
【０００６】
上記および他の目的は、オブジェクト指向システムにおけるオブジェクトに拡張可能な補助サービス集合を提供する本発明により達成される。オブジェクト指向システムにおける各オブジェクトは、それに対応したオブジェクト・マネージャにより実行される。本発明における各オブジェクト・マネージャは、オブジェクト・マネージャを識別するオブジェクト・マネージャ識別子（ＯＭＩＤ）を有している。システムにおける各オブジェクト・マネージャは、オブジェクト・マネージャが実行するオブジェクトに様々な補助サービスを任意に提供することができる。これら補助サービスは、オブジェクト・マネージャ自身により、または他のオブジェクト・マネージャにより実行されるオブジェクトである。各種の補助サービスには、その種類の補助サービスに名前が対応付けられている周知の文脈がある。また、各種の補助サービスには、オブジェクト・マネージャ識別子を、ある名前に変換する周知の変換機能もある。この名前は、その種類の補助サービスが周知の文脈において対応付けられた名前である。オブジェクトのクライエントが補助サービスのアクセスを必要とした場合、クライエントは、先ず、そのオブジェクトを管理するオブジェクト・マネージャにオブジェクト・マネージャ識別子（ＯＭＩＤ）を提供するオブジェクト中のオペレーションを呼出す。その後、クライエントは、要求された種類の補助サービスに関する周知の変換機能にオブジェクト・マネージャ識別子を渡す。要求された種類の補助サービスに関する周知の変換機能は、ＯＭＩＤから生じた名前をリターンする。クライエントは、要求された補助サービスの種類に関する周知の文脈における変換された名前をリゾルブする。リゾルブ・オペレーションは補助オブジェクトをリターンし、したがって、クライエントは補助サービスをアクセスできる。
【発明を実施するための最良の形態】
【０００７】
以下、添付の図面に基いて、本発明の実施例に関し説明する。
本発明は、オブジェクト指向システムにおけるオブジェクトに拡張可能な補助サービス集合を提供する方法について開示する。以下の説明において、システムの特定の構成は、本発明の理解を助けるためのものであって、本実施例の特定な記載に関係なく本発明を実施し得ることは当業者には明白であろう。また、周知の回路および装置については、本発明を不必要に不明瞭にしないようブロック図で示している。
【０００８】
オブジェクト指向コンピュータ・システムは、多くの独自のソフトウェア「オブジェクト」から成っている。システムの各オブジェクトは、オブジェクトにおける収集データを操作する機能集合を伴なった収集データから成っている。収集データは、オブジェクトの状態データと呼ばれている。オブジェクトにおける状態データを操作する機能は、オペレーションと呼ばれている。システムの各オブジェクトは、オブジェクトのオペレーションを実行しかつオブジェクトに収集データを保持するサーバであるオブジェクト・マネージャを有している。
【０００９】
たとえば、図１には、オブジェクト・マネージャＯＭ３０が示されている。オブジェクト・マネージャＯＭ３０は、２つのオブジェクト、すなわちオブジェクト３１とオブジェクト３５を実行する。オブジェクト３１とオブジェクト３５は、それぞれ、状態データ（参照番号３２、３６）と、状態データを操作するのに使用されるオペレーション集合（参照番号３３，３７）を含んでいる。
【００１０】
オブジェクト指向システムにおけるオブジェクトは、オブジェクトの「クライエント」により用いられる。オブジェクトのクライエントは、オブジェクト中のオペレーションを呼出すことにより、または他のオブジェクトにおけるオペレーションのパラメータとしてそのオブジェクトをパスすることによりオブジェクトを操作する。一般的には、オブジェクトのクライエントは、オブジェクトの記憶場所またはインプリメンテーションを知らない。オブジェクトのオペレーションを呼出したり、またはパラメータとしてオブジェクトをパスしたりするには、クライエントは、オブジェクトのいくつかの表示（リプレゼンテーション）を有していなければならない。オブジェクトの表示は、オブジェクトにオペレーションを指定するのに必要な全ての情報を提供する。通常、オブジェクトのクライエントは、オブジェクトの表示の詳細は知らない。
【００１１】
図１において、クライエントＢ４０は、オブジェクトＯ３１のクライエントである。オブジェクトＯ３１をアクセスするため、クライエントＢ４０は、オブジェクトＯの表示４１を有している。クライエントＢ４０は、オブジェクトＯ３１のオペレーションを呼出したり、またはパラメータとしてオブジェクトＯ３１をパスしたりするのにオブジェクトＯの表示４１を使用する。
【００１２】
オブジェクト指向システムの各オブジェクトに、１つ以上の名前を付けることが可能である。オブジェクトの名前は、通常、プリント可能な文字列から成っている。本発明では、オブジェクトの名前は、オブジェクトの名前が文脈において固有であるように「文脈」中のオブジェクトに対応付けられている。文脈は、名前とオブジェクトが対応しているリストを含んでいるオブジェクトである。名前を「文脈」中のオブジェクトに割当てるプロセスは、名前をオブジェクトに「バインドする」と呼ばれている。文脈オブジェクトは、「ネーム・サーバ」と呼ばれる特別な種類のオブジェクト・マネージャにおいて実行される。
【００１３】
たとえば、図２において、オブジェクトＯ３１は、オブジェクト・マネージャＯＭ３０において実行されるオブジェクトである。文脈Ｃ５１は、ネーム・サーバＮＳ５０中において実行される文脈オブジェクトである。文脈Ｃ５１は、状態データ５２と、文脈Ｃ５１中の状態データ５２を操作するオペレーション集合とを含んでいる。図２において、文脈Ｃの状態データ５２は、名前「ｆｏｏ」とオブジェクトＯ３１の間の対応付け（アソシエーション）を含んでいる。したがって、文脈Ｃにおいては、オブジェクトＯ３１は、名前「ｆｏｏ」にバインドされる。
【００１４】
特定のオブジェクトの名前を知っているクライエントは、オブジェクトの表示を得るため文脈におけるオブジェクトの名前を先ず「リゾルブ」することによりオブジェクトをアクセスすることができる。その後、クライエントは、文脈オブジェクトから受け取ったオブジェクトの表示を用いてオブジェクトをアクセスすることができる。
【００１５】
図２において、クライエントＢ４０は、文脈Ｃ５１における「ｆｏｏ」と名付けられたオブジェクトをアクセスすることを要求する。オブジェクトの表示を得るため、クライエントは、文脈Ｃ５１のリゾルブ・オペレーションを呼び出すことにより、オブジェクト名「ｆｏｏ」をリゾルブするよう文脈Ｃ５１に要求する。リゾルブ・オペレーションは、文脈Ｃ５１における状態データ５２を調べ、図３に示されたようにクライエントＢ４０にオブジェクトＯ３１の表示をリターンし、したがって、クライエントＢ４０はオブジェクトＯ３１の直接表示を得る。
【００１６】
拡張可能な補助サービス集合
オブジェクトが実行できるオペレーションは、オブジェクトにおいて実行されるオペレーション集合により規定される。各オブジェクトにおいて実行される固有のオペレーションの他、システムのオブジェクトに対して保守オペレーションを行なうことのできる補助サービス集合を有していると有利である。たとえば、オブジェクトを複写する補助サービスや、オブジェクトをフリーズしたりメルトしたりする補助サービスが使用可能である。一般に、それぞれのオブジェクトは、使用可能なそれぞれの種類の補助サービスを有している。さらに、特定の補助サービスの種類に関しては、それぞれのオブジェクト・マネージャがそれぞれの補助サービスを提供する。たとえば、２つの異なるオブジェクト・マネージャは、２つの異なるフリーズ・メルト・サービスを提供する。
【００１７】
補助サービス集合を実行するには、システムにおける各オブジェクトのオペレーションとして各補助サービスを実行すればよい。しかし、この技術はいくつかの問題点を有している。この技術に関する問題点の１つは、導入されたシステムに新しい補助サービスを加えることは非常に困難なことである。オブジェクトに新しいオペレーションを加えることは、オブジェクトのインタフェイスを変え、新しいオペレーションを実行するための新しいコードを書込み、新しいコードでオブジェクトをリコンパイルしなければならない。たとえ、新しい補助サービスを提供しないオブジェクトであっても、全てのオブジェクトを変更しなければならない。大型導入オブジェクト指向システムにおいては、新しい補助サービスが加えられるたびに、システムの全てのオブジェクトをリコンパイルすることは困難である。さらに、変更されたオブジェクトを使用する全てのクライエントは、新しいインタフェイスを使用するためリコンパイルされなければならない。全てのオブジェクトがリコンパイルされた以上、全てのクライエントも、リコンパイルされなければならない。したがって、システムの全てのオブジェクトをリコンパイルすることなく、補助サービスをオブジェクト指向システムに加えることができることが望まれている。
【００１８】
本発明は、オブジェクト指向システムのオブジェクトに拡張可能な補助サービス集合を提供する機構を有している。本発明において、拡張可能な補助サービス集合を提供するため、システムの全てのオブジェクトは、「get_OMID()」（ゲット・オブジェクト・マネージャ識別子）と名付けられたオペレーションを実行する。クライエントが、オブジェクトにおけるget_OMID()オペレーションを呼出す時、get_OMID()オペレーションは、オブジェクトを実行するオブジェクト・マネージャと対応付けられたオブジェクト・マネージャ識別子（ＯＭＩＤ）をリターンする。その後、オブジェクトのクライエントは、受け取ったオブジェクト・マネージャ識別子（ＯＭＩＤ）を、ＯＭＩＤをある名前に変換する要求されたタイプの補助サービスに関する周知の機能にパスする。その後、オブジェクトのクライエントは、要求されたタイプの補助サービスに関する周知の文脈において変換された名前をリゾルブし、要求された補助サービスの表示を得る。
【００１９】
本発明の機構を用いているシステムに新しい補助サービスを加えるには、管理者は、オブジェクト・マネージャ識別子を名前に変換する新しい補助サービスのタイプに関する周知の機能と、新しい補助サービス・タイプに関する周知の文脈を設定しなければならない。新しい補助サービスの提供を望んでいるオブジェクトに関し、そのオブジェクトのオブジェクト・マネージャは、新しい補助サービスを生成し、かつ周知の文脈における周知の機能によりリターンされた名前に新しい補助サービスをバインドする。これにより、新しい補助サービスを提供するオブジェクトのオブジェクト・マネージャと、新しい補助サービスを用いるクライエントだけをリコンパイルすればいい。新しい補助サービスを提供しないオブジェクトを有する他のオブジェクト・マネージャや、新しい補助サービスを使用しない他のクライエントをリコンパイルする必要はない。
【００２０】
図４〜図６は、本発明により開示された拡張可能な補助サービス集合を提供する機構を示しており、図７はその流れ図を示している。図４において、オブジェクト・マネージャＯＭ３０は、２つのオブジェクト、すなわちオブジェクトＯ３１およびオブジェクトＡＳ６１を実行する。図４のクライエントＢ４０は、オブジェクトＯのクライエントであって、オブジェクトＯの表示を有している。図４のクライエントＢ４０が、オブジェクトＯ３１のオペレーションを実行するのに補助サービスを使用する必要がある場合には、クライエントＢ４０は、その補助サービスを得るため図７に示された一連のステップに従わなければならない。
【００２１】
図４および図７のステップ１０１において、先ず、クライエントＢ４０は、オブジェクトＯ３１における「Get_OMID()」オペレーションを呼出し、オブジェクトを実行するオブジェクト・マネージャに関するオブジェクト・マネージャ識別子を得る。ステップ１０２において、Get_OMID()オペレーションのリターン値がテストされる。Get_OMID()オペレーションが首尾よく完了したら、オブジェクト・マネージャ識別名がクライエントにリターンされ、クライエントはステップ１０５に進む。たとえば、図４に示すように、名前「ＯＭ」がクライエントにリターンされる。しかし、オブジェクトＯ３１中のGet_OMID()オペレーションが失敗して、適切なオブジェクト・マネージャ識別名をリターンできない場合、補助サービスを得る試みは図７のステップ１１１において断念される。
【００２２】
適切なオブジェクト・マネージャ識別名を受け取ると、クライエントは、要求された補助サービスに対応付けられた名前にＯＭＩＤを変換する要求された補助サービスの種類に関する周知の機能を呼び出す。変換機能は、変更されないオブジェクト・マネージャ識別子をリターンする単なる識別機能である。図７のステップ１０５において、クライエントは、補助サービスのその種類がバインドされた周知の文脈における変換された名前をリゾルブする。たとえば、クライエントは、リゾルブ・リクエスト「AS=Context_Cー>Resolve(function_as_type( ＯＭＩＤ））を出す。function_as_type（ＯＭＩＤ）は、補助サービスの要求された種類の名前にＯＭＩＤを変換する。
【００２３】
図５において、クライエントＢ４０は、変換機能「function_as_type（「ＯＭ」）からリターンされた名前をリゾルブするよう文脈オブジェクトＣにリクエストする。ステップ１０７において、リゾルブ・オペレーションのリターン値がテストされる。リゾルブ・オペレーションが首尾よく完了した場合、補助サービスの表示は、クライエントにリターンされる。図６は、首尾よくいったリゾルブ・オペレーションを示しており、補助サービスＡＳの表示がクライエントＢにリターンされる。しかし、文脈Ｃにおけるリゾルブ・オペレーションが、その名前にバインドされたオブジェクトを見つけられなかった場合には、補助サービスを得る試みは、図７のステップ１１１において断念される。
【００２４】
補助サービスを受け取ると、クライエントＢは、そのオペレーションのいずれかを実行するよう補助サービスにリクエストする。たとえば、図６において、オブジェクトＯ３１の補助サービスを実行するため、クライエントＢはパラメータとして特別なオブジェクトＯと補助サービス・オブジェクトＡＳのオペレーションを呼び出す。
【００２５】
本発明の機構では、補助サービス名の「リアル・オーナー」だけが文脈中のその補助サービス名をバインドすることができるような方法で実行されなければならないことが明らかである。そうでなければ、簡単にシステムの安全性が損ねられてしまうことになる。
【００２６】
フリーズ・メルト補助サービス
フリーズ・メルト・サービスは、重要な補助サービスの種類である。フリーズ・メルト・サービスにより、クライエントは、クライエントが後でオブジェクトを再アクセスできるように、オブジェクトを永続させることができる。クライエントは、オブジェクトをフリーズするフリーズ・メルト・サービスを先ず要求することによりオブジェクトを永続させる。オブジェクトをフリーズした後、フリーズ・メルト・サービスは、フリーズされたオブジェクトを識別するフリーズ・トークンをリターンする。前にフリーズされたオブジェクトを検索するため、クライエントは、オブジェクトをメルトするようフリーズ・メルト・サービスを要求し、かつパラメータとしてフリーズ・トークンを与える。その後、フリーズ・メルト・サービスは、オブジェクトをメルトし、要求しているクライエントにオブジェクトの表示をリターンする。
【００２７】
永続ネーム・サーバは、オブジェクトの永続性が保持されるように名前をバインドしかつリゾルブする場合にフリーズ・メルト・サービスを使用する。フリーズ・トークンは悪意のあるクライエントにより偽造される場合もあるので、メルト・オペレーションを要求しているエンティティが、特定のオブジェクトをメルトするのを任せられていることを保証するよう、フリーズ・サービスへの接続は認証されなければならない。したがって、ネーム・サーバが、同じフリーズ・メルト・サービスを用いてオブジェクトをフリーズしかつメルトすることを保証することが重要なことである。そうでなければ、ネーム・サービスの安全保護が非常に簡単に損ねられてしまうことになる。たとえば、オブジェクト・マネージャ識別子（ＯＭＩＤ）を用いてフリーズ・メルト・サービスの名前を得るステップと、フリーズ・オペレーションを実行するステップを１つのオペレーションに結合することは当然のことである。上記のように規定した拡張可能な補助サービス機構を用いることなく、フリーズ・メルト・サービスを実行する最も明らかな方法では、１つのステップにおいて、オブジェクトをフリーズしかつオブジェクト・マネージャ識別子（ＯＭＩＤ）とフリーズ・トークンをリターンする各オブジェクトにおける「フリーズ」オペレーションを実行する。したがって、永続ネーム・サーバにおけるバインドおよびリゾルブ・オペレーションは、次のように実行される。
【００２８】
バインド（name,bind_type,object): 
<omid,freeze_token>=Object_O->freeze(); 
store_binding(name,bind_type,omid,freeze_token);
【００２９】
リゾルブ・オペレーションにおいてオブジェクトをメルトするため、永続ネーム・サーバは２つのステップを実行する。第１に、永続ネーム・サーバは、ＯＭＩＤを用いてフリーズ・メルト・サービス・オブジェクトの表示を得る。その後、永続ネーム・サーバは、パラメータとしてフリーズ・トークンでフリーズ・メルト・サービス中のメルト・オペレーションを呼出すことにより、オブジェクトをメルトする。
【００３０】
リゾルブ（name,mode): 
<omid,freeze_token>=get_binding_for_name(name); 
freeze_melt_service=Context->resolve(function_freeze_melt(omid)); 
Object_O=freeze_service->melt(freeze_token,mode); 
【００３１】
しかし、このストレート・フォワード方式は安全保護の問題点を有している。悪意のあるオブジェクト・マネージャと悪意のあるクライエントとが共謀して次のステップを実行することによりネーム・サーバの安全保護を損なう可能性がある。
【００３２】
１）狙ったオブジェクト（たとえば、パスワード・ファイル・オブジェクト）のフリーズ・トークンおよびオブジェクト・マネージャ識別子を得る。
２）悪意のあるオブジェクト・マネージャにより実行されるオブジェクトに名前をバインドする悪意のクライエントを確保する。
３）フリーズ・オペレーションに応じて、悪意のあるオブジェクト・マネージャは、狙っているオブジェクトのフリーズ・トークンおよびオブジェクト・マネージャ識別子をリターンする。
４）悪意のあるクライエントは、その後、書込みモードに関しオブジェクトをリゾルブするようネーム・サーバに要求する。（悪意のあるクライエントがバインドを行なったので、悪意のあるクライエントは認可される。）
【００３３】
したがって、ネーム・サーバはだまされ、パスワード・ファイル・オブジェクトのフリーズ・メルト・サービスでメルト・オペレーションを実行しかつ書込みモードにおいてファイルをリターンする。この安全保護の問題を避けるには、同じフリーズ・メルト・サービスにより、フリーズおよびメルト・オペレーションの両方を実行しなければならない。
【００３４】
前述したような補助サービスを提供する本発明の機構は、安全なフリーズ・メルト・サービスを実現するのに使用することができる。たとえば、ＰＩを用いて安全で永続性のあるネーム・サーバを実行するには、永続ＮＳにおけるバインドおよびリゾルブ・オペレーションは、次のように実行される。
【００３５】
バインド（name,bind_type,object): 
omid=Object_O->Get_OMID();
freeze_melt_service=Context->resolve(function_freeze_melt(omid)); 
freeze_token=freeze_melt_service->freeze(Object_O); 
store_binding(name,bind_type,omid,freeze_token);
【００３６】
リゾルブ（name,mode): 
<omid,freeze_token>=get_binding_for_name(name); 
freeze_melt_service=Context->resolve(function_freeze_melt(omid)); 
Object_O=freeze_melt_service->melt(freeze_token,mode);
【００３７】
本発明の機構では、バインドおよびリゾルブ・オペレーションの両方が同じステップを用いてフリーズ・メルト・サービスを得るので、フリーズ・オペレーションおよびメルト・オペレーションの両方を提供するのに、同じフリーズ・メルト・サービスが使用される。
freeze_melt_service=Context->resolve(function_freeze_melt(omid)); 
【００３８】
複写補助サービス
他の重要な補助サービスに複写サービスがある。複写サービスは、リゾルブ・オペレーションにおいてオブジェクトのコピーを生成するため、ネーム・サーバにより用いられる。複写サービスにより生成されたオブジェクトのコピーは、異なる「モード」またはアクセス特権で生成することができる。たとえば、クライエントは、オブジェクトの名前をリゾルブしかつ「読出し専用」モードでオブジェクトをリターンするようネーム・サーバにリクエストすることができる。
【００３９】
本発明により提供される拡張可能な補助サービス集合は、複写サービスを実行するのに使用できる。複写サービスをアクセスするには、クライエントは、図７に示したステップにしたがえばよい。
【００４０】
たとえば、次のリスティングは、リクエストされたモードでオブジェクトを複写し、その後、複写されたオブジェクトをリターンするネーム・サーバにおいてリゾルブ・オペレーションを実行する。
【００４１】
リゾルブ（name,mode)：
<omid,object>=get_binding_for_name(name); 
duplication_service=Context->resolve(function_duplication(omid)); 
duplicate_object=duplication_service->duplicate(object,mode);
return_to_client(duplicate_object); 
【００４２】
以上のように、オブジェクト指向システムにおいてオブジェクトに拡張可能な補助サービス集合を提供する装置および方法について図１〜７に関し述べてきたが、本発明はこれら図面に開示されたものよりはるかに超えた有用性を有していることは当業者には明白であろう。また、本発明は、本発明の思想から離れることなく、様々に改変および修正できることは当業者には明白であろう。
【００４３】
したがって、本発明は、オブジェクト指向システムにおいてオブジェクトに拡張可能な補助サービス集合を提供しかつ安全なフリーズ・サービスを提供することができる。
【図面の簡単な説明】
【００４４】
【図１】オブジェクトＯの表示を有するオブジェクトＯのクライエントとオブジェクト・マネージャＯＭにより管理されるオブジェクトＯおよびＡを示したブロック図である。
【図２】オブジェクト・マネージャＯＭにより管理されるオブジェクトＯ、オブジェクトＯへの名前「ｆｏｏ」のバインディングを含んでいる文脈オブジェクトＣ、および文脈オブジェクトＣの表示を有するクライエントＢを示したブロック図である。
【図３】クライエントＢが、オブジェクトＯの表示を受け取るため文脈オブジェクトＣにおける名前「ｆｏｏ」をリゾルブした後の図２ａのブロック図である。
【図４】オブジェクト・マネージャＯＭにより管理されるオブジェクトＯ、オブジェクトＯへの名前「ｆｏｏ」のバインディングおよびオブジェクトＡＳへの名前「ＯＭ」のバインディングとを含んでいる文脈オブジェクトＣ、および文脈オブジェクトＣの表示およびオブジェクトＯの表示とを有するクライエントＢを示したブロック図である。
【図５】クライエントＢが、オブジェクトＯからのＯＭＩＤを得かつ文脈オブジェクトＣにおけるリゾルブ・オペレーションをリクエストした後の図３ａのブロック図である。
【図６】文脈オブジェクトＣが、補助サービスを行なうオブジェクトＡＳの表示をリターンしてＯＭＩＤをリゾルブした後の図３ｂのブロック図である。
【図７】あるオブジェクトに関する補助サービスのアクセスを得るのに必要なステップを含んでいる流れ図である。
【符号の説明】
【００４５】
…３０…オブジェクト・マネージャＯＭ、３１…オブジェクトＡ、３２…オブジェクトＡの状態データ、３５…オブジェクトＯ、３６…オブジェクトＯの状態データ、４０…オブジェクトＯのクライエントＢ、４１…オブジェクトＯの表示、５０…ネーム・サーバＮＳ、５１…文脈オブジェクトＣ、５２…文脈オブジェクトＣの状態データ
【図１】
2006190328.tif 000003
【図２】
2006190328.tif 000004
【図３】
2006190328.tif 000005
【図４】
2006190328.tif 000006
【図５】
2006190328.tif 000007
【図６】
2006190328.tif 000008
【図７】
2006190328.tif 000009