(57)【要約】【課題】本発明は，ネーミングサービスからオブジェクト参照情報を取得するための方法およびそのシステムに関するものである。従来は，オブジェクト呼び出し時に，必ずネーミングサービスへの問い合わせによる通信が発生していたため，呼び出しにオーバヘッドがあり，ネーミングサービスにも多大な負荷がかかっていた。【解決手段】オブジェクトを実行する際に，ネーミングサービスを提供する計算機へ当該オブジェクトのオブジェクト名を含む検索要求を送付し，該検索要求の応答として取得したオブジェクト参照情報に基づいて当該オブジェクトを実行する。さらに、上記オブジェクトを実行する際に，上記取得したオブジェクト参照情報が記憶された参照情報記憶領域に当該オブジェクトのオブジェクト参照情報が記憶されているか否かを判定し，記憶されている場合は上記記憶されたオブジェクト参照情報に基づいて当該オブジェクトを実行するための実行要求を送付する【選択図】　図１
2004030486.tif 000002
【特許請求の範囲】
【請求項１】
第１の計算機におけるオブジェクトを実行する際に，ネーミングサービスを提供する第２の計算機へ当該オブジェクトのオブジェクト名を含む検索要求を送付し，該検索要求の応答として取得したオブジェクト参照情報に基づいて当該オブジェクトを実行する分散オブジェクト制御方法において，
上記オブジェクトを実行する際に，上記取得したオブジェクト参照情報が記憶された第１の参照情報記憶領域に当該オブジェクトのオブジェクト参照情報が記憶されているか否かを判定し，
記憶されている場合は上記記憶されたオブジェクト参照情報に基づいて当該オブジェクトを実行するための実行要求を送付することを特徴とする分散オブジェクト制御方法。
【請求項２】
第１の計算機におけるオブジェクトを実行する際に，ネーミングサービスを提供する第２の計算機へ当該オブジェクトのオブジェクト名を含む検索要求を送付し，該検索要求の応答として取得したオブジェクト参照情報に基づいて当該オブジェクトを実行する分散オブジェクト制御方法において，
上記オブジェクトを実行する際に，上記取得したオブジェクト参照情報が記憶された第１の参照情報記憶領域に当該オブジェクトのオブジェクト参照情報が記憶されているか否かを判定し，
記憶されている場合は上記記憶されたオブジェクト参照情報に基づいて当該オブジェクトを実行し，
格納されていない場合は当該オブジェクトのオブジェクト名を含む検索要求を上記ネーミングサービスを提供する第２の計算機へ送付し，該検索要求の応答として取得したオブジェクト参照情報と当該オブジェクトのオブジェクト名を第１の参照情報記憶領域に記憶し，該取得したオブジェクト参照情報に基づいて当該オブジェクトを実行するための実行要求を出力することを特徴とする分散オブジェクト制御方法。
【請求項３】
第１の計算機におけるオブジェクトを実行する際に，ネーミングサービスを提供する第２の計算機へ当該オブジェクトのオブジェクト名を含む検索要求を送付し，該検索要求の応答として取得したオブジェクト参照情報に基づいて当該オブジェクトを実行する分散オブジェクト制御方法において，
上記オブジェクトを実行する際に，上記取得したオブジェクト参照情報が記憶された第２の参照情報記憶領域に当該オブジェクトのオブジェクト参照情報が記憶されているか否かを判定し，
記憶されている場合は上記記憶されたオブジェクト参照情報に基づいて当該オブジェクトを実行し，
格納されていない場合は，当該オブジェクトが上記第１の計算機の同一プロセス内に存在するか否かを判定し，存在する場合は第２の参照情報記憶領域に当該オブジェクトのオブジェクト名および当該オブジェクトのオブジェクト参照情報を記憶し，上記第２の当該オブジェクトのオブジェクト名を含む格納要求を上記ネーミングサービスを提供する第２の計算機へ送付することを特徴とする分散オブジェクト制御方法。
【請求項４】
上記実行要求の応答として障害情報を取得した場合，上記第１の参照情報記憶領域に記憶されたオブジェクト名とオブジェクト参照情報を全て削除することを特徴とする請求項１または２記載の分散オブジェクト制御方法。
【請求項５】
上記実行要求の応答として障害を起こしたオブジェクト名を含む障害情報を取得した場合，当該オブジェクト名に対応する上記第１の参照情報記憶領域に記憶されたオブジェクト名とオブジェクト参照情報とを削除することを特徴とする請求項１または２記載の分散オブジェクト制御方法。
【請求項６】
上記実行したオブジェクトが障害を起こした場合，当該オブジェクトのオブジェクト名に対応する上記第２の参照情報記憶領域に記憶されたオブジェクト名とオブジェクト参照情報とを削除し，上記第２の当該オブジェクトのオブジェクト名を含む削除要求を上記ネーミングサービスを提供する第２の計算機へ送付することを特徴とする請求項３記載の分散オブジェクト制御方法。
【請求項７】
上記第１の参照情報記憶領域に記憶する際に上記オブジェクト名に登録時刻を対応付けて記憶し，第１の所定時間が経過した場合、上記第１の参照情報記憶領域に記憶されている各上記オブジェクト名に対応付けて格納された登録時刻が第２の所定時間を経過しているか否かを判定し、所定時間が登録時刻に対応するオブジェクト名と参照情報とを上記第１の参照情報記憶領域から削除し、該オブジェクト名を含む検索要求を上記ネーミングサービスを提供する第２の計算機へ送付し，該検索要求の応答として取得したオブジェクト参照情報と該オブジェクト名と登録時刻を第１の参照情報記憶領域に記憶することを特徴とする請求項１または２記載の分散オブジェクト制御方法。
【請求項８】
ネーミングサービスを提供する第２の計算機と、オブジェクトを実行する際に上記第２の計算機へ当該オブジェクトのオブジェクト名を含む検索要求を送付し，該検索要求の応答として取得したオブジェクト参照情報に基づいて当該オブジェクトを実行する第１の計算機とを備えた計算機システムにおいて，
上記オブジェクトを実行する際に，上記取得したオブジェクト参照情報が記憶された第１の参照情報記憶領域に当該オブジェクトのオブジェクト参照情報が記憶されているか否かを判定する手段と，
記憶されている場合は上記記憶されたオブジェクト参照情報に基づいて当該オブジェクトを実行するための実行要求を送付する手段とを備えたことを特徴とする計算機システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
ネーミングサービスに登録されたオブジェクト参照情報を取得するための技術に関する。
【０００２】
【従来の技術】
オブジェクトを呼び出すときに，呼び出すオブジェクトがどこにあるかについて知る必要がある。オブジェクトの存在する位置等に関する情報を取得する方法の一つに，ｈｔｔｐ：／／ｗｗｗ．ｏｍｇ．ｏｒｇに開示されているように，ネーミングサービスを利用する方法がある。なお，同様の技術は，特開２００１−２５６２０２や特開２０００−２７６４５３にも開示されている。
【０００３】
【発明が解決しようとする課題】
従来は，特開２００１−２５６２０２に開示されているように，オブジェクト呼び出しのたびにネーミングサービスへの検索が発生していた。ネーミングサービスへの検索には，通信が発生するため時間がかかるという課題がある。また，ネーミングサービスの検索結果を利用して，オブジェクトに処理を要求する際には通信が発生するため処理に時間がかかるという課題がある。
【０００４】
本発明の目的は，検索時に発生する通信回数を削減することにより，オブジェクト呼び出しの処理時間を短縮することにある。
【０００５】
本発明の他の目的は，検索時に発生する通信回数を削減することにより，ネーミングサービスの負荷を削減することにある。
【０００６】
本発明の他の目的は，同一プロセス内に存在するオブジェクトへの処理要求時に発生する通信を削減することにある。
【０００７】
【課題を解決するための手段】
ネーミングサービスには，オブジェクト名とオブジェクト参照情報が格納される。本発明でオブジェクト名とは，登録するオブジェクトに論理名であり，システム内でオブジェクトを一意に識別するための名前である。また，オブジェクト参照情報とは，オブジェクトリソースの存在場所を特定するための識別子であり，ＩＰアドレスやポート番号，ＵＲＬ等の組み合わせ等で示されるものである。ｈｔｔｐ：／／ｗｗｗ．ｏｍｇ．ｏｒｇに開示されている情報によれば，オブジェクトリファレンスとも呼ばれている。本発明では，オブジェクト名とオブジェクト参照情報等の組をエントリと呼ぶ。各エントリはオブジェクト名を使って検索し取得することが可能である。通常は，ネーミングサービスからオブジェクト名をキーに検索を行って，オブジェクト参照情報取得し，これを利用してオブジェクトに処理を要求する。オブジェクトへの処理要求には通信が発生する。
【０００８】
上記目的を達成するために，オブジェクト名とオブジェクト参照情報をネーミングサービスと計算機内のキャッシュ部に格納する。本発明での計算機とは，論理的な単位であり，実際の環境では，一台のマシン内に複数の計算機が存在することがある。キャッシュ部は，ローカルキャッシュとグローバルキャッシュの２つに分類される。ローカルキャッシュには，ローカルキャッシュと同一計算機上に存在するオブジェクトのオブジェクト名とオブジェクト参照情報を格納する。また，グローバルキャッシュには，グローバルキャッシュと異なる計算機上のオブジェクトを格納する。
【０００９】
あるオブジェクトが別のオブジェクトを呼び出すときには，ネーミングインタフェース部にあるキャッシュ制御部に対して，呼び出されるオブジェクトのオブジェクト名を通知して，オブジェクト参照情報を検索を依頼する。キャッシュ制御部は，ローカルキャッシュ，グローバルキャッシュ，ネーミングサービスの順番でオブジェクト参照情報を検索する。
【００１０】
呼び出されるオブジェクトが同じ計算機上に存在する場合には，ローカルキャッシュからオブジェクト参照情報を取得することができる。ローカルキャッシュは検索要求元オブジェクトと同一計算機上に存在するので，通信を発生させずにオブジェクト参照情報の検索を行うことができる。また，ローカルキャッシュから取得したオブジェクト参照情報は，同一計算機上のオブジェクトを指し示しており，通信を発生させずにオブジェクトへの処理を要求することができる。
【００１１】
呼び出されるオブジェクトが別の計算機上に存在する場合で，すでに一度呼び出されたことがある場合，グローバルキャッシュからオブジェクト参照情報を取得することができる。グローバルキャッシュは検索要求元オブジェクトと同一計算機上に存在するので，通信を発生させずにオブジェクト参照情報の検索を行うことができる。
【００１２】
本発明を実施すると，ネーミングサービスへの検索が実行されるのは，別の計算機上に存在するオブジェクトが初めて呼び出される場合だけになる。また，同一計算機に存在するオブジェクト間の処理要求には，通信がまったく発生しない。
【００１３】
【発明の実施の形態】
以下，本発明の実施例を説明する。図１は，本発明の分散オブジェクトシステムの一実施例である。本実施例は，ネットワーク１で接続された計算機１００，計算機２００，計算機３００で実現されるシステムである。
計算機１００は，オブジェクトの実行環境を提供するコンテナ１１０，ネーミングインタフェース部１２０，キャッシュ部１３０，リモート呼び出し部１４０，分散オブジェクト基盤１５０，例外通知部１６０から構成される。さらに，コンテナ１１０には，オブジェクト１１１，オブジェクト１１２，　オブジェクト１１３が配置されており，ネーミングインタフェース部１２０には，キャッシュ制御部１２１が存在する。また，キャッシュ部１３０はローカルキャッシュ１３１とグローバルキャッシュ１３２という２つの部分に分類される。ローカルキャッシュ１３１には，プロセス内部のオブジェクトに関する情報を保存する。また，グローバルキャッシュ１３２には，プロセス外部のオブジェクトに関する情報を保存する。
計算機２００は，オブジェクトの実行環境を提供するコンテナ２１０，ネーミングインタフェース部２２０，キャッシュ部２３０，リモート呼び出し部２４０，分散オブジェクト基盤２５０および例外通知部２６０から構成される。さらに，コンテナ２１０には，オブジェクト２１１，オブジェクト２１２およびオブジェクト２１３が配置されており，ネーミングインタフェース部２２０には，キャッシュ制御部２２１が存在する。また，キャッシュ部２３０はローカルキャッシュ２３１とグローバルキャッシュ２３２という２つの部分に分かれている。
計算機３００には，ネーミングサービス部３１０，分散オブジェクト基盤３５０が配置されている。ネーミングサービス部３１０には，ネームテーブル３１１が存在する。
以下，各部について簡単に説明する。
【００１４】
コンテナ（１００，２００）は，オブジェクトの実行環境を提供する。オブジェクト（１１１，１１２，１１３，２１１，２１２，２１３）は，要求された処理を実行する。ネーミングインタフェース部（１２０，２２０）は，ネーミングサービス部３１０へアクセスする場合のインタフェースである。キャッシュ部（１３０，２３０）は，通知されたオブジェクトの名前とオブジェクト参照情報を保存する。ローカルキャッシュとグローバルキャッシュに分類される。リモート呼び出し部（１４０，２４０）は，リモートオブジェクトへのリクエストを送る通信層である。公知例としては，ｈｔｔｐ：／／ｊａｖａ．ｓｕｎ．ｃｏｍに示される技術があり，本実施例では，その機能を使用している。分散オブジェクト基盤部（１５０，２５０，３５０）は，分散オブジェクトへのリクエストを送る通信層である。ｈｔｔｐ：／／ｊａｖａ．ｓｕｎ．ｃｏｍで開示されている技術をそのまま適用している。
【００１５】
例外通知部（１６０，２６０）は，例外を取得し，例外処理の実行や例外通知を行う。キャッシュ制御部（１２１，２２１）は，キャッシュ部への登録や削除をおこなう。ローカルキャッシュ　（１３１，２３１）は，同一計算機上のオブジェクト名，オブジェクト参照情報および更新日時を格納する。グローバルキャッシュ　（１３１，２３１）は，別計算機上のオブジェクト名，オブジェクト参照情報および更新日時を格納する。ネーミングサービス部（３１０）は，通知されたオブジェクト名をキーとしてネームテーブル３１１からオブジェクト参照情報を検索したり，通知されたオブジェクト名とオブジェクト参照情報を格納したりする。ネームテーブル（３１１）は，システム上のオブジェクトのオブジェクト名，オブジェクト参照情報を格納する。
【００１６】
以下では，ネーミングサービス部３１０を利用した場合のオブジェクト呼び出し，グローバルキャッシュを利用した場合のオブジェクト呼び出し，ローカルキャッシュを利用した場合のオブジェクト呼び出しについて簡単に説明する。
【００１７】
ネーミングサービス部３１０のネームテーブル３１１には，システムに存在するオブジェクト名とオブジェクト参照情報が格納されている。ネームテーブルへの格納は，オブジェクトの開始時にオブジェクトからオブジェクト名とオブジェクト参照情報を受け取って行われる。あるオブジェクトが別のオブジェクトを呼び出す場合には，ネーミングサービス部３１０にオブジェクト名を通知して，オブジェクト名に対応するオブジェクト参照情報を問い合わせる。ネーミングサービス部３１０は，受け取ったオブジェクト名をキーにネームテーブルを検索し，オブジェクト参照情報を通知する。
【００１８】
ネーミングサービス部を利用したオブジェクト呼び出しでは，呼び出しのたびにネーミングサービスへの問い合わせが発生する。グローバルキャッシュ１３１には，グローバルキャッシュ１３２が存在する計算機１００とは別のオブジェクトが呼び出されたときに，呼び出されたオブジェクトのオブジェクト名とオブジェクト参照情報および更新日時が格納される。
【００１９】
計算機１００のオブジェクト１１１から計算機２００のオブジェクト２１１の呼び出しでは，オブジェクト２１１を始めて呼び出した後に，オブジェクト２１１のオブジェクト名とオブジェクト参照情報および更新日時がグローバルキャッシュ１３２に格納される。オブジェクト１１１は，オブジェクト２１１を再び呼び出す時には，オブジェクト２１１のオブジェクト名をグローバルキャッシュ１３２に通知して，オブジェクト２１１のオブジェクト参照情報を受け取り，受け取ったオブジェクト参照情報を使ってオブジェクト２１１へ処理を依頼する。グローバルキャッシュを利用すると，同一のオブジェクトを複数回呼び出す場合でも，ネーミングサービスへの問い合わせが１回しか発生しない。
【００２０】
ローカルキャッシュ１３１には，ローカルキャッシュ１３１が存在する計算機１００上のオブジェクトが開始したときに，当該オブジェクトのオブジェクト名とオブジェクト参照情報および更新日時が格納される。オブジェクト１１１からオブジェクト１１２を呼び出す場合には，ローカルキャッシュ１３１に呼び出したいオブジェクト１１２のオブジェクト名を通知して，オブジェクト参照情報を取得する。ローカルキャッシュ１３１に格納されているオブジェクト参照情報によって示されるオブジェクトは，同一計算機上に存在するので，リモート呼び出し部１４０や分散オブジェクト基盤部１５０への通信を発生させずに呼び出すことができる。ローカルキャッシュを利用すると，ネーミングサービスへの問い合わせと，呼び出しのための通信を削減できる。
図２は，計算機１００上のオブジェクト１１２を用いてローカルキャッシュへのオブジェクト登録の流れを説明する。
（１）　オブジェクト１１２は自身が開始されると，オブジェクト名（計算機１／コンテナ／Ｏ２）とオブジェクト参照情報（Ｒｅｆｅｒｅｎｃｅ２）を通知して，ネーミングインタフェース部１２０のキャッシュ制御部１２１に，ネーミングサービス部３１０およびローカルキャッシュ部１３１への格納を要求する。
（２）　キャッシュ制御部は，ローカルキャッシュにオブジェクト１１２から受け取ったオブジェクト名（計算機１／コンテナ／Ｏ２）とオブジェクト参照情報（Ｒｅｆｅｒｅｎｃｅ２）を格納することを要求する。
（３）　ローカルキャッシュは格納後，キャッシュ制御部に終了を通知する。
（４）　キャッシュ制御部は，オブジェクト１１２から受け取ったオブジェクト名（計算機１／コンテナ／Ｏ２）とオブジェクト参照情報（Ｒｅｆｅｒｅｎｃｅ２）を分散オブジェクト基盤１５０に通知して，ネーミングサービス部３１０に格納することを要求する。
（５）　分散オブジェクト基盤１５０では，通信を発生させて，受け取ったオブジェクト名（計算機１／コンテナ／Ｏ２）とオブジェクト参照情報（Ｒｅｆｅｒｅｎｃｅ２）を計算機３００の分散オブジェクト基盤３５０に通知してネーミングサービス部３１０に格納を要求する。
（６）　計算機３００の分散オブジェクト基盤３５０は，ネーミングサービス部３１０にあるネームテーブル３１１に，受け取ったオブジェクト名（計算機１／コンテナ／Ｏ２）とオブジェクト参照情報（Ｒｅｆｅｒｅｎｃｅ２）を格納する。登録の結果は，表３０００の列３００１のようになる。
（７）　ネーミングサービス部３１０は，終了を通知するリターンコードを分散オブジェクト基盤３５０に通知する。
（８）　分散オブジェクト基盤３５０は通信を発生させて，受け取ったリターンコードを分散オブジェクト基盤１５０に通知する。
（９）　分散オブジェクト基盤１５０は，受け取ったリターンコードをキャッシュ制御部１２１に通知する。
（１０）　キャッシュ制御部１２１は，オブジェクト１１２に受け取ったリターンコードを通知する。
【００２１】
図３のオブジェクト１１１からオブジェクト１１２にアクセスする例を用いて，ローカルキャッシュの登録情報を用いたオブジェクトの流れを説明する。
（１）　オブジェクト１１１は，キャッシュ制御部１２１にオブジェクト１１２のオブジェクト名（計算機１／コンテナ／Ｏ２）を通知して，オブジェクト１１２のオブジェクト参照情報を問い合わせる。
（２）　キャッシュ制御部では，受け取った引数オブジェクト名（計算機１／コンテナ／Ｏ２）をローカルキャッシュ１３１に通知して，オブジェクト１１２のオブジェクト参照情報を問い合わせる。
（３）　ローカルキャッシュ１３１は，問い合わせ結果のオブジェクト参照情報（Ｒｅｆｅｒｅｎｃｅ２）をキャッシュ制御部１２１に通知する。
（４）　キャッシュ制御部１２１は，受け取ったオブジェクト参照情報（Ｒｅｆｅｒｅｎｃｅ２）をオブジェクト１１１に通知する。
（５）　オブジェクト１１１は受け取ったオブジェクト参照情報（Ｒｅｆｅｒｅｎｃｅ２）を使って，　オブジェクト１１２を呼び出して，処理を要求する。
（６）　オブジェクト１１２は，オブジェクト１１１に処理結果を通知する。
【００２２】
ローカルキャッシュを利用すると，ネーミングサービスに問い合わせを行うことなく，オブジェクト参照情報を取得できる。これにより，ネーミングサービスに問い合わせ時に通信が発生しなくなる。
また，ネーミングサービス部３１０に保存されているオブジェクト参照情報を利用したオブジェクトの呼び出しでは，通信が発生する。しかし，ローカルキャッシュに格納されているオブジェクト参照情報で示されるオブジェクトは，呼び出し側オブジェクトと同一計算機上に存在することが分かっているため，通信を発生させずに呼び出すことができる。
ローカルキャッシュを利用することにより，ネーミングサービスへの問い合わせ時に発生する通信と，オブジェクト呼び出し時に発生する通信を削減できる。
【００２３】
図４の，オブジェクト１１２を削除する例を用いて，ローカルキャッシュ１３２の削除について説明する。なお，オブジェクト１１１，オブジェクト１１２，オブジェクト１１３はすでに開始しており，ローカルキャッシュ１３２，およびネームテーブル３１１に格納されているものとする。格納後のローカルキャッシュ２１１を図１４の（１）に示す。
（１）　オブジェクト１１２は自身が停止するときに，キャッシュ制御部１２１に，オブジェクト名（計算機１／コンテナ／Ｏ２）を通知して，ローカルキャッシュ１３１から対応するエントリの削除を要求する。
（２）　キャッシュ制御部１２１は，受け取ったオブジェクト名（計算機１／コンテナ／Ｏ２）をローカルキャッシュ１３１に通知して対応するエントリの削除を要求する。
（３）　ローカルキャッシュ１３１は，受け取ったオブジェクト名（計算機１／コンテナ／Ｏ２）対応するエントリを削除すると，削除終了をキャッシュ制御部１２１に通知する。削除後のローカルキャッシュ１３１は，表１０００のようになる。
（４）　キャッシュ制御部１２１は，オブジェクト１１２から受け取ったオブジェクト名（計算機１／コンテナ／Ｏ２）を分散オブジェクト基盤１５０に通知して，ネームテーブル３１１から対応するエントリを削除することを要求する。
（５）　分散オブジェクト基盤１５０では，通信を発生させて，受け取ったオブジェクト名（計算機１／コンテナ／Ｏ２）を分散オブジェクト基盤３５０に通知して，ネームテーブル３１１から対応するエントリを削除することを要求する。
（６）　分散オブジェクト基盤３５０は，ネーミングサービス部３１０に，ネームテーブル３１１から受け取ったオブジェクト名（計算機１／コンテナ／Ｏ２）に対応するエントリを削除することを要求する。削除後のネームテーブルは，表３０００のようになる。
（７）　ネーミングサービス部３１０は，終了を通知するリターンコードを分散オブジェクト基盤３５０に通知する。
（８）　分散オブジェクト基盤３５０は通信を発生させて，受け取ったリターンコードを分散オブジェクト基盤１５０に通知する。
（９）　分散オブジェクト基盤１５０は，受け取ったリターンコードをキャッシュ制御部１２１に通知する。
（１０）　キャッシュ制御部１２１は，オブジェクト１１２に受け取ったリターンコードを通知する。
【００２４】
図５は，グローバルキャッシュ１３２へのオブジェクト登録について説明する。グローバルキャッシュ１３２には，ネーミングサービス部３１１のネームテーブル３１０から取得したオブジェクトを保存する。グローバルキャッシュへの保存は，ローカルキャッシュ１３１およびグローバルキャッシュ１３２に，対象のオブジェクトが保存されていない場合，実行される。
以下では，オブジェクト１１１がオブジェクト２１１に初めてアクセスする場合を例に，グローバルキャッシュ１３２への登録について説明する。この場合，ローカルキャッシュ１３１，グローバルキャッシュ１３２には，オブジェクト２１１に関する情報が保存されていないものとする。
（１）　オブジェクト１１１は，キャッシュ制御部１２１にオブジェクト２１１のオブジェクト名（計算機２／コンテナ／Ｏ４）を通知して，オブジェクト２１１の参照情報を問い合わせる。
（２）　ローカルキャッシュ１３１，グローバルキャッシュ１３２にオブジェクト２１１に関する情報が保存されていないので，キャッシュ制御部は，分散オブジェクト基盤１５０にオブジェクト名（計算機２／コンテナ／Ｏ４）を通知してオブジェクト参照情報の検索を要求する。
（３）　分散オブジェクト基盤１５０では，通信を発生させて，受け取ったオブジェクト名（計算機１／コンテナ／Ｏ２）を計算機３００の分散オブジェクト基盤３５０に通知してオブジェクト参照情報を問い合わせる。
（４）　分散オブジェクト基盤３５０は，ネーミングサービス部３１０に，受け取ったオブジェクト名（計算機１／コンテナ／Ｏ２）を通知してオブジェクト参照情報を問い合わせる。
（５）　ネーミングサービス部３１０は，受け取ったオブジェクト名（計算機１／コンテナ／Ｏ２）を使ってネームテーブル３１１からオブジェクト２１１の参照情報を検索し，検索結果（Ｒｅｆｅｒｅｎｃｅ４）を分散オブジェクト基盤３５０に通知する。
（６）　分散オブジェクト基盤３５０は，通信を発生させて，受け取った検索結果（Ｒｅｆｅｒｅｎｃｅ４）を分散オブジェクト基盤１５０に通知する。
（７）　分散オブジェクト基盤１５０は，受け取った検索結果（Ｒｅｆｅｒｅｎｃｅ４）をキャッシュ制御部１２１に通知する。
（８）　キャッシュ制御部１２１は，受け取った検索結果（Ｒｅｆｅｒｅｎｃｅ４）とオブジェクト１１１から通知されたオブジェクト名（計算機２／コンテナ／Ｏ４）をグローバルキャッシュ１３２に格納することを要求する。
（９）　グローバルキャッシュ１３２は受け取ったオブジェクト名（計算機２／コンテナ／Ｏ４）と検索結果（Ｒｅｆｅｒｅｎｃｅ４）と更新日時を格納すると，キャッシュ制御部１２１に終了を通知する。格納の結果は，表２０００の列２００１　のようになる。
（１０）　キャッシュ制御部１２１は，オブジェクト１１１に受け取った検索結果（Ｒｅｆｅｒｅｎｃｅ４）を通知する。
図６は，グローバルキャッシュ１３２の格納情報を用いたオブジェクトの流れを説明する。オブジェクト１１１からオブジェクト２１１にアクセス場合を例とする。
（１）　オブジェクト１１１は，キャッシュ制御部１２１にオブジェクト２１１のオブジェクト名（計算機２／コンテナ／Ｏ４）を通知して，オブジェクト１１２のオブジェクト参照情報を問い合わせる。
（２）　ローカルキャッシュ１３１には，オブジェクト２１１のオブジェクト参照情報が保存されていないので，キャッシュ制御部１２１は，グローバルキャッシュ１３２にオブジェクト名（計算機２／コンテナ／Ｏ４）を通知して，オブジェクト１１２のオブジェクト参照情報を問い合わせる。
（３）　グローバルキャッシュ１３２は，問い合わせ結果のオブジェクト参照情報（Ｒｅｆｅｒｅｎｃｅ４）をキャッシュ制御部１２１に通知する。
（４）　キャッシュ制御部１２１は，受け取ったオブジェクト参照情報（Ｒｅｆｅｒｅｎｃｅ４）をオブジェクト１１１に通知する。
（５）　オブジェクト１１１は受け取ったオブジェクト参照情報（Ｒｅｆｅｒｅｎｃｅ４）を使って，　オブジェクト２１１を呼び出して，処理を要求する。
（６）　オブジェクト２１１は，オブジェクト１１１に処理結果を通知する。
グローバルキャッシュ１３２を利用すると，同一オブジェクトの２回目以降の呼び出しには，通信を発生させずにオブジェクト参照情報を取得できる。
【００２５】
システム運用中にオブジェクト２１１が削除される，ネットワーク障害の発生などにより，分散オブジェクト基盤で通信不能となるなどの場合，グローバルキャッシュ１３２に格納されているエントリを削除する必要がある。
【００２６】
図７は，例外通知部１を利用したグローバルキャッシュ１３２の削除の実施例である。計算機１００のグローバルキャッシュ１３２は，オブジェクト２１１，２１２，２１３を一度呼び出した後の状態であるとする。このときのグローバルキャッシュ１３２を図１４の（２）に示す。
このとき，オブジェクト１１１がオブジェクト２１１を呼び出す場合を例に説明する。
（１）オブジェクト１１１はキャッシュ制御部１２１に，オブジェクト名（計算機２／コンテナ／Ｏ４）を通知して，オブジェクト２１１のオブジェクト参照情報を問い合わせる。
（２）キャッシュ制御部１２１は，グローバルキャッシュ１３２にオブジェクト名（計算機２／コンテナ／Ｏ４）を通知して，オブジェクト２１１のオブジェクト参照情報を問い合わせる。
（３）グローバールキャッシュ１３２に格納されている，オブジェクト２１１のオブジェクト参照情報（Ｒｅｆｅｒｅｎｃｅ４）をキャッシュ制御部１２１に通知する。
（４）キャッシュ制御部１２１は受け取ったオブジェクト参照情報（Ｒｅｆｅｒｅｎｃｅ４）をオブジェクト１１１に通知する。
（５）オブジェクト１１１は受け取ったオブジェクト参照情報（Ｒｅｆｅｒｅｎｃｅ４）を使って，リモート呼び出し部１４０にオブジェクト２１１への処理要求を通知する。
（６）リモート呼び出し部１４０は，分散オブジェクト基盤部１５０にオブジェクト２１１への処理要求を通知する。
（７）分散オブジェクト基盤１５０は，通信を発生させて，分散オブジェクト基盤２５０に，オブジェクト２１１への処理要求を通知する。分散オブジェクト基盤２５０では受け取った処理要求を実施するオブジェクト２１１が見つからないため，通信例外が発生する。
（８）発生した通信例外は，分散オブジェクト基盤２５０から，分散オブジェクト基盤１５０に通知される。
（９）分散オブジェクト基盤１５０は，通知された通信例外をリモート呼び出し部１４０で通信できる形に変換するため，例外通知部１に通知する。
（１０）例外通知部１は，通信例外が通知されると，キャッシュ制御部１２１に，グローバルキャッシュ１３２の全エントリを削除することを要求する。
（１１）キャッシュ制御部１２１は，グローバルキャッシュ１３２に全エントリを削除することを要求する。
（１２）グローバルキャッシュ１３２に全エントリを削除すると，キャッシュ制御部１２１に終了通知をする。
（１３）キャッシュ制御部１２１は，受け取った終了通知を例外通知部１に通知する。
（１４）例外通知部１は，キャッシュ制御部１２１から終了通知を受け取ると，受け取った通信例外をリモート呼び出し部１４０に通知する。
（１５）リモート呼び出し部１４０は，受け取った通信例外を呼び出し元のオブジェクト１１１に通知する。
分散オブジェクト基盤で通信不能となったことを，オブジェクトがグローバルキャッシュに通知するためには，ブロードバンド通信が必要であり，非効率である。また，グローバルキャッシュを使用するが，グローバルキャッシュに保存されているオブジェクト参照情報に対応するオブジェクトが存在するかについて，確認する方法も考えるが，呼び出しのたびに通信が発生するため，これも非効率である。本発明では，オブジェクト２１１の呼び出し時に，通信例外を検知して，グローバルキャッシュ１３２を削除するため，通信は１回しか発生しない。
【００２７】
図８は，例外通知部２を利用したグローバルキャッシュ１３２の削除の実施例である。
例外通知部２を利用したグローバルキャッシュ１３２の削除を実施するために，ネームテーブル３１１およびグローバルキャッシュ１３２に格納するオブジェクト参照情報にオブジェクト名を含めておく。オブジェクト２１１，２１２，２１３を呼び出した後の，グローバルキャッシュ１３２の状態を図１４の（３）に示す。
オブジェクト１１１がオブジェクト２１１を呼び出す場合を例に説明する。
（１）　オブジェクト１１１はキャッシュ制御部１２１に，オブジェクト名（計算機２／コンテナ／Ｏ４）を通知して，オブジェクト２１１のオブジェクト参照情報を問い合わせる。
（２）　キャッシュ制御部１２１は，グローバルキャッシュ１３２にオブジェクト名（計算機２／コンテナ／Ｏ４）を通知して，オブジェクト２１１のオブジェクト参照情報を問い合わせる。
（３）　グローバルキャッシュ１３２に格納されている，オブジェクト２１１のオブジェクト参照情報（Ｒｅｆｅｒｅｎｃｅ４：ｎａｍｅ＝計算機２／コンテナ／Ｏ４）をキャッシュ制御部１２１に通知する。
（４）　キャッシュ制御部１２１は受け取ったオブジェクト参照情報（Ｒｅｆｅｒｅｎｃｅ４：ｎａｍｅ＝計算機２／コンテナ／Ｏ４）をオブジェクト１１１に通知する。
（５）　オブジェクト１１１は受け取ったオブジェクト参照情報（Ｒｅｆｅｒｅｎｃｅ４：ｎａｍｅ＝計算機２／コンテナ／Ｏ４）を使って，リモート呼び出し部１４０にオブジェクト２１１への処理要求を通知する。
（６）　リモート呼び出し部１４０は，分散オブジェクト基盤部１５０にオブジェクト２１１への処理要求を通知する。
（７）　分散オブジェクト基盤１５０は，通信を発生させて，分散オブジェクト基盤２５０に，オブジェクト２１１への処理要求を通知する。分散オブジェクト基盤２５０では受け取った処理要求を実施するオブジェクト２１１が見つからないため，通信例外が発生する。
（８）　発生した通信例外は，分散オブジェクト基盤２５０から，分散オブジェクト基盤１５０に通知される。
（９）　分散オブジェクト基盤１５０は，通知された通信例外を例外通知部２に通知する。
（１０）　例外通知部２は，通信例外が通知されると，オブジェクト参照情報（Ｒｅｆｅｒｅｎｃｅ４：ｎａｍｅ＝計算機２／コンテナ／Ｏ４）からオブジェクト名を取り出す。その後，取り出したオブジェクト名をキャッシュ制御部１２１に通知して，グローバルキャッシュ１３２から通知したオブジェクト名に対応したエントリを削除することを要求する。
（１１）　キャッシュ制御部１２１は，グローバルキャッシュ１３２に受け取ったオブジェクト名に対応するエントリを削除することを要求する。
（１２）　グローバルキャッシュ１３２は，受け取ったオブジェクト名に対応するエントリを削除し，キャッシュ制御部１２１に終了通知をする。
（１３）　キャッシュ制御部１２１は，受け取った終了通知を例外通知部２に通知する。
（１４）　例外通知部２は，キャッシュ制御部１２１から終了通知を受け取ると，受け取った通信例外をリモート呼び出し部１４０に通知する。
（１５）　リモート呼び出し部１４０は，受け取った通信例外を呼び出し元オブジェクト１１１に通知する。
【００２８】
図７の方式では，例外を起こしたオブジェクトのオブジェクト名を特定できることが前提ではないため，グローバルキャッシュの全エントリを削除するのに対し，図８の方式では，オブジェクト参照情報にオブジェクト名を含めることによって，例外の発生した特定のエントリを削除することができる。
【００２９】
図９にオブジェクト名を通知されたときに，キャッシュ制御部（１２１　，　２２１）がオブジェクト名に対応したオブジェクトを検索するフローチャートを示す。
ローカルキャッシュに対して，オブジェクト名に対応したエントリがあるか判定する（ステップ４０１）。存在する場合には，オブジェクト名に対応するエントリの更新日時に現在日時を格納した後，検索結果のオブジェクト参照情報を検索要求元のオブジェクトに返して終了する（ステップ４０６）。存在しない場合，グローバルキャッシュに対して，オブジェクト名に対応するエントリがあるか判定する（ステップ４０２）。存在する場合には，オブジェクト名に対応するエントリの更新日時に現在日時を登録した後，検索結果のオブジェクト参照情報を検索要求元のオブジェクトに返して終了する（ステップ４０７）。ローカルキャッシュにもグローバルキャッシュにも存在しない場合は，ネーミングサービスに対して，オブジェクト名に対応したエントリがあるかどうか判定する（ステップ４０３）。存在しない場合には，検索要求元のオブジェクトに例外を通知する（ステップ４０８）。存在する場合には，検索結果のオブジェクト参照情報を検索要求元オブジェクトに返す（ステップ４０４）。さらに，検索結果の情報をグローバルキャッシュに登録して終了する（ステップ４０５）。
図１０に分散オブジェクト基盤で通信例外を発生した場合のグローバルキャッシュ削除についてのフローチャートを示す。
分散オブジェクト基盤は，処理結果のリターンコードが通信例外かどうかチェックする（ステップ５０１）。リターンコードが通信例外を発生した場合，例外通知部では，オブジェクト参照情報からオブジェクト名を取得し，キャッシュ制御部に取得したオブジェクト名を通知して，対応するグローバルキャッシュのエントリを削除する（ステップ５０２）。
なお，フローチャートには示していないが，オブジェクト名の通知時に，キャッシュ制御部にキャッシュ部の全クリアを要求してもよい。
図１１は，キャッシュ制御部がインターバルタイム経過時に，ネーミングサービス部に登録されている情報と比較して，グローバルキャッシュのエントリを更新および削除するフローチャートである。まず，インターバルタイムが経過したか調べる（ステップ７０１）。インターバルタイムが経過していなければ，処理を終了する。インターバルタイムが経過した場合，グローバルキャッシュの全エントリについてネームテーブル上に存在するか問い合わせる（ステップ７０２）。存在する場合には，グローバルキャッシュのエントリを更新して終了する（ステップ７０３）。存在しない場合には，グローバルキャッシュのエントリから削除して終了する（ステップ７０４）。
例えば，インターバルタイムが３０分，インターバル開始日時が２００２／０５／０８／２３：３０：４５６　ＪＳＴであり，計算機２００のオブジェクト２１１が，２００２／０５／０８／２３：４５：００６　ＪＳＴに停止し，オブジェクト２１３が２００２／０５／０８／２３：３１：０２７　ＪＳＴに停止後，２００２／０５／０８／２３：３５：０４０　ＪＳＴに開始したとする。既に，計算機１００のグローバルキャッシュ１３２には，図１４の（２）で示すようにオブジェクト２１１に関するエントリが列４００４に，オブジェクト２１３に関するエントリが列４００６に保存されているものとする。現在日時が２００２／０５／０９／０：００：４５６　ＪＳＴになり，インターバルタイムが経過すると，図１４の（２）の列４００４のエントリは削除され，列４００６のエントリは，新しくネーミングサービスからオブジェクト参照情報を取得して，更新日時を現在日時の２００２／０５／０９／０：０１：０２４：ＪＳＴに変更する。
【００３０】
図１２は，インターバルタイム経過時に，キャッシュ制御部が一定時間を経過したキャッシュ（ローカルキャッシュおよびグローバルキャッシュ）のエントリを削除するフローチャートである。
まず，インターバルタイムが経過したか調べる（ステップ８０１）。インターバルタイムが経過していなければ，処理を終了する。インターバルタイムが経過した場合，一定時間経過したエントリをグローバルキャッシュから削除して終了する（ステップ８０２）。
例えば，インターバルタイムが６０分，インターバル開始日時が２００２／０５／０８／２３：００：４５６　ＪＳＴ，６０分経過したキャッシュエントリを削除するとした場合，図１４の（２）では，表４０００の列４００６のエントリが削除される。
例外通知によるグローバルキャッシュの削除処理に加えて，図１２，図１３で示したインターバルタイムによるキャッシュの削除・更新を行うと，定期的なキャッシュの更新・削除により，例外が発生する確率を小さくすることができる。
【００３１】
図１３は，キャッシュ制御部がキャッシュ数によりキャッシュ（ローカルキャッシュ，グローバルキャッシュ）を管理してエントリの格納および削除を行うフローチャートである。以下では，最大キャッシュ数，最小キャッシュ数があらかじめ指定されているものとして説明する。
キャッシュにオブジェクト参照情報の格納が要求されると（ステップ６０１），キャッシュ制御部に記憶されているオブジェクト参照情報数が最大キャッシュ数を超えていないかチェックする（ステップ６０２）。超えていない場合，オブジェクト参照情報と更新日時をキャッシュに格納して処理を終了する（ステップ６０４）。超えている場合は，キャッシュ数が最小キャッシュ数より小さくなるまで，更新時間が古い順にキャッシュエントリを削除する（ステップ６０３）。
本発明のローカルキャッシュを利用することにより，同一計算機上に存在するオブジェクトを呼び出す場合には，ネーミングサービスへ問い合わせを行うことがなくなる。また，オブジェクトへの処理要求実行時に関しても通信が発生しなくなる。さらに，本発明のグローバルキャッシュを利用することにより，別計算機上に存在するオブジェクトを複数回呼び出す場合にも，最初の呼び出し時以外，ネーミングサービスへ問い合わせを行うことがなくなる。
【００３２】
以上から，検索時に発生する通信回数を削減することにより，オブジェクト呼び出しの処理時間を短縮することが可能となる。また，検索時に発生する通信回数を削減することにより，ネーミングサービスの負荷を削減することができる。また，同一プロセス内に存在するオブジェクトへの処理要求時に発生する通信を削減することにある。
【００３３】
【発明の効果】
以上，本発明によれば実行するオブジェクトの検索時に発生する通信回数を削減することが可能となる。
【図面の簡単な説明】
【図１】本発明における一実施例であるシステムの全体構成を示すものである。
【図２】オブジェクト１１２のオブジェクト名，オブジェクト参照情報，更新日時をローカルキャッシュへの格納する方法を示す図である。
【図３】ローカルキャッシュを利用したオブジェクト１１１からオブジェクト１１２の呼び出しを示すものである。
【図４】オブジェクト１１２のオブジェクト名，オブジェクト参照情報，更新日時をローカルキャッシュから削除する方法を示す図である。
【図５】オブジェクト２１２のオブジェクト名，オブジェクト参照情報，更新日時をグローバルキャッシュへの格納する方法を示す図である。
【図６】グローバルキャッシュを利用したオブジェクト１１１からオブジェクト２１１を呼び出す方法を示すものである。
【図７】通信例外を取得してグローバルキャッシュの全エントリを削除する方法を示すものである。
【図８】通信例外を取得してグローバルキャッシュの特定エントリを削除する方法を示すものである。
【図９】キャッシュ制御部が通知されたオブジェクト名を使用して，オブジェクト位置情報を検索する流れを示すフローチャートである。
【図１０】通信例外を取得してグローバルキャッシュの特定エントリを削除するフローチャートである。
【図１１】インターバルタイム経過時に，ネーミングサービス部に登録されている情報と比較して，グローバルキャッシュのエントリを更新・削除するフローチャートである。
【図１２】インターバルタイム経過時に，一定時間を経過したエントリを削除するフローチャートである。
【図１３】キャッシュサイズを超過したキャッシュエントリを削除するフローフローチャートである。
【図１４】計算機１００のローカルキャッシュ１３１およびグローバルキャッシュ１３２の状態を示すものである。
【符号の説明】
１００，２００　　　　コンテナ
１１１，１１２，１１３，２１１，２１２，２１３　オブジェクト
１２０，２２０　　　　ネーミングインタフェース部
１３０，２３０　　　　キャッシュ部
１４０，２４０　　　　リモート呼び出し部
１５０，２５０，３５０　分散オブジェクト基盤部
１６０，２６０　　　　例外通知部
１２１，２２１　　　　キャッシュ制御部
１３１，２３１　　　　ローカルキャッシュ
１３１，２３１　　　　グローバルキャッシュ
３１０　　　　　　　ネーミングサービス部
３１１　　　　　　　ネームテーブル
【図１】
2004030486.tif 000003
【図２】
2004030486.tif 000004
【図３】
2004030486.tif 000005
【図４】
2004030486.tif 000006
【図５】
2004030486.tif 000007
【図６】
2004030486.tif 000008
【図７】
2004030486.tif 000009
【図８】
2004030486.tif 000010
【図９】
2004030486.tif 000011
【図１０】
2004030486.tif 000012
【図１１】
2004030486.tif 000013
【図１２】
2004030486.tif 000014
【図１３】
2004030486.tif 000015
【図１４】
2004030486.tif 000016