(57)【要約】【課題】支障なくリモートメソッドの呼び出しが可能な実行環境を提供させることができる情報処理装置、情報処理システム、情報処理方法、及びコンピュータプログラムを提供する。【解決手段】各バンドルとは独立したＲＭＩレジストリ生成サービスバンドル１０４により、特定の処理を行なうようにしてあるカスタムクラスローダであるクラスローダ１０６が対応づけられた新たな別個のスレッドにてリモートメソッドの呼び出しを実現するＲＭＩレジストリ１０５を生成する。【選択図】図３
2011096193.tif 000002
【特許請求の範囲】
【請求項１】
演算処理部と、一又は複数のクラスを夫々含む複数のプログラムモジュールが記憶してある記憶部とを備え、前記演算処理部が前記記憶部に記憶してあるプログラムモジュールを読み込んで実行することによって情報を処理する情報処理装置において、
前記演算処理部は、
前記複数のプログラムモジュール夫々に対しスレッドを生成して前記複数のプログラムモジュールを実行する実行手段、
該実行手段により生成されるスレッドに割り付けられ、前記プログラムモジュールが含むクラスを読み込む読込手段、
前記プログラムモジュールが含む任意のクラスの名前を遠隔から受け取る手段、及び、
受け取った名前に対応するクラスの読み込みを前記読込手段へ要求し、前記クラスのオブジェクトを遠隔から呼び出し可能とする名前解決手段
として機能し、
前記読込手段は、
前記実行手段により実行中のプログラムモジュールに対応するスレッドに割り付けられ、前記プログラムモジュールのクラス空間に基づき前記プログラムモジュールが含むクラスを読み込むモジュール別読込手段と、
前記実行中のプログラムモジュールに対応するスレッドとは異なる新たなスレッドに割り付けられ、遠隔から呼び出し可能とされたオブジェクトに対応するプログラムモジュールのモジュール別読込手段を用いて前記プログラムモジュールに対応するクラスを読み込むモジュール間読込手段と
を有し、
前記名前解決手段は、前記新たなスレッドにて生成され、前記モジュール間読込手段へ前記クラスの読み込みを要求するようにしてあること
を特徴とする情報処理装置。
【請求項２】
前記演算処理部は、
前記複数のプログラムモジュールの内の一つにより、
前記モジュール間読込手段が割り付けられた前記新たなスレッドにて前記名前解決手段を生成する手段、
遠隔からの呼び出しを可能とするオブジェクトに対応するプログラムモジュールの前記モジュール別読込手段を前記モジュール間読込手段に登録する手段、並びに、
前記遠隔からの呼び出しを可能とするオブジェクトを前記名前解決手段に登録し、前記オブジェクトとその名前を関連付ける手段
として機能することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記一又は複数のクラスを夫々含む複数のプログラムモジュールは、Ｊａｖａ（登録商標）仮想マシン上のＯＳＧｉフレームワークに基づき実行されること
を特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
演算処理部と、一又は複数のクラスを夫々含む複数のプログラムモジュールが記憶してある記憶部とを備え、前記演算処理部が前記記憶部に記憶してあるプログラムモジュールを読み込んで実行することによって情報を処理する情報処理装置において、
前記演算処理部は、
前記複数のプログラムモジュール夫々に対しスレッドを生成して前記複数のプログラムモジュールを実行する実行手段、及び
該実行手段により生成されるスレッドに割り付けられ、前記プログラムモジュールが含むクラスを読み込む読込手段
として機能し、
前記読込手段は、前記実行手段により実行中のプログラムモジュールに対応するスレッドに割り付けられ、前記プログラムモジュールのクラス空間に基づき前記プログラムモジュールが含むクラスを読み込むモジュール別読込手段を有し、
前記複数のプログラムモジュールの内の一つは、他の情報処理装置で実行されるプログラムモジュール中の任意のクラスのオブジェクトを取得する取得手段として、新たなスレッドにて実行され、
前記取得手段は、
前記他の情報処理装置へ前記クラスの名前を送信する手段、
前記クラスのオブジェクトが遠隔から呼び出し可能となった通知を予約する手段、並びに、
前記他の情報処理から前記通知を受けた場合、前記オブジェクトへの接続を他の実行中のプログラムモジュールへ渡す手段
として機能することを特徴とする情報処理装置。
【請求項５】
演算処理部と、一又は複数のクラスを夫々含む複数のプログラムモジュールが記憶してある記憶部とを備え、前記演算処理部が前記記憶部に記憶してあるプログラムモジュールを読み込んで実行することによって情報を夫々処理するクライアント装置及びサーバ装置を含み、前記クライアント装置は、前記サーバ装置へ接続して該サーバ装置で実行されるプログラムモジュールが含むクラスのいずれかを遠隔から呼び出して実行するようにしてある情報処理システムにおいて、
前記クライアント装置及びサーバ装置の演算処理部は夫々、
前記複数のプログラムモジュール夫々に対しスレッドを生成して前記複数のプログラムモジュールを実行する実行手段、及び、
該実行手段により生成されるスレッドに割り付けられ、前記プログラムモジュールが含むクラスを読み込む読込手段
として機能し、
前記クライアント装置の演算処理部は、実行させるクラスの名前を前記サーバ装置へ送信する手段として機能し、
前記サーバ装置の演算処理部は、
前記プログラムモジュールが含む実行対象のクラスの名前を前記クライアント装置から受け取る手段、及び、
受け取った名前に対応するクラスの読み込みを前記読込手段へ要求し、前記クラスのオブジェクトを遠隔から呼び出し可能とする名前解決手段
として機能し、
前記読込手段は、
前記実行手段により実行中のプログラムモジュールに対応するスレッドに割り付けられ、前記プログラムモジュールのクラス空間に基づき前記プログラムモジュールが含むクラスを読み込むモジュール別読込手段と、
前記実行中のプログラムモジュールに対応するスレッドとは異なる新たなスレッドに割り付けられ、遠隔から呼び出し可能とされたオブジェクトに対応するプログラムモジュールのモジュール別読込手段を用いて前記プログラムモジュールに対応するクラスを読み込むモジュール間読込手段と
を有し、
前記名前解決手段は、前記新たなスレッドにて生成され、前記モジュール間読込手段へ前記クラスの読み込みを要求するようにしてあること
を特徴とする情報処理システム。
【請求項６】
前記クライアント装置は、
前記複数のプログラムモジュールの内の一つとして、他の情報処理装置で実行されるプログラムモジュール中の任意のクラスのオブジェクトを取得する取得手段を、新たなスレッドにて実行する機能を有し、
前記取得手段は、
前記他の情報処理装置へ前記クラスの名前を送信する手段、
前記クラスのオブジェクトが遠隔から呼び出し可能となった通知を予約する手段、並びに、
前記他の情報処理から前記通知を受けた場合、前記オブジェクトへの接続を他の実行中のプログラムモジュールへ渡す手段
を有することを特徴とする請求項５に記載の情報処理システム。
【請求項７】
演算処理部と、一又は複数のクラスを夫々含む複数のプログラムモジュールが記憶してある記憶部とを備える情報処理装置で、前記演算処理部が前記記憶部に記憶してあるプログラムモジュールを読み込んで、前記クラスのオブジェクトを遠隔から呼び出し可能にする情報処理方法において、
前記演算処理部が、
前記複数のプログラムモジュールを夫々に対し、前記プログラムモジュールのクラス空間に基づき前記プログラムモジュールが含むクラスを読み込むモジュール別クラスローダを割り付けてスレッドを生成して、前記複数のプログラムモジュールを実行し、
前記プログラムモジュールが含む任意のクラスの名前を遠隔から受け取り、
実行中のプログラムモジュールに対応するスレッドとは異なる新たなスレッドを生成し、
受け取った名前に対応するクラスのオブジェクトを遠隔から呼び出し可能とする名前解決処理を行い、
前記新たなスレッドには、遠隔から呼び出し可能とされたオブジェクトに対応するプログラムモジュールのモジュール別クラスローダを用いて前記プログラムモジュールに対応するクラスを読み込みモジュール間クラスローダを割り付ける
ことを特徴とする情報処理方法。
【請求項８】
コンピュータに、記憶してある一又は複数のクラスを夫々含む複数のプログラムモジュールを読み込んで実行させるコンピュータプログラムにおいて、
前記コンピュータを、
前記複数のプログラムモジュール夫々に対しスレッドを生成して前記複数のプログラムモジュールを実行する実行手段、
該実行手段により生成されるスレッドに割り付けられ、前記プログラムモジュールが含むクラスを読み込む読込手段、
前記プログラムモジュールが含む任意のクラスの名前を遠隔から受け取る手段、及び、
受け取った名前に対応するクラスの読み込みを前記読込手段へ要求し、前記クラスのオブジェクトを遠隔から呼び出し可能とする名前解決手段
として機能させ、
前記読込手段は、
前記実行手段により実行中のプログラムモジュールに対応するスレッドに割り付けられ、前記プログラムモジュールのクラス空間に基づき前記プログラムモジュールが含むクラスを読み込むモジュール別読込手段と、
前記実行中のプログラムモジュールに対応するスレッドとは異なる新たなスレッドに割り付けられ、遠隔から呼び出し可能とされたオブジェクトに対応するプログラムモジュールのモジュール別読込手段を用いて前記プログラムモジュールに対応するクラスを読み込むモジュール間読込手段と
を有し、
前記名前解決手段は、前記新たなスレッドにて生成され、前記モジュール間読込手段へ前記クラスの読み込みを要求するようにしてあること
を特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、Ｊａｖａ（登録商標）におけるリモート技術に関し、特に、支障なくリモートメソッドの呼び出しが可能な実行環境を提供させることができる情報処理装置、情報処理システム、情報処理方法、及びコンピュータプログラムに関する。
【背景技術】
【０００２】
近年、携帯型情報端末機、ＦＡ（Factory Automation）などの多様な分野で、Ｊａｖａベースのシステムに対し、ＯＳＧｉ(Open Services Gateway initiative)フレームワークの採用が進んでいる。
【０００３】
図７は、ＯＳＧｉフレームワークを用いたＪａｖａ環境におけるプログラム構成を模式的に示す説明図である。ＯＳＧｉフレームワークを用いる場合、図７に示すように、Ｊａｖａの基本プラットフォーム上でＯＳＧｉフレームワークがバンドル（Ａ，Ｂ，Ｃ）というクラスオブジェクト群のモジュールの生成、消滅、メモリ空間などを管理する。ＯＳＧｉフレームワークでは、各機器（Ｊａｖａ仮想マシン）を再起動するなどして動作を止めることなしに、各バンドルの生成（追加、変更）、消滅（変更）を可能とする仕組みを実現している。
【０００４】
ＯＳＧｉフレームワークを用いて機器で連携する場合、ＪａｖａＲＭＩを用いることができる。図８は、ＲＭＩ（Remote Method Invocation）技術の概要を示す説明図である。ＲＭＩ技術は、クライアントである機器から、サーバである機器上で動作するオブジェクトのメソッドを、ネットワークを介して利用するものである。
【０００５】
クライアントプログラムは、クライアント機器にて動作している１つのプロセスであり、リモートオブジェクトは他の機器から遠隔呼び出しを可能としたメソッドを持つクラスオブジェクトである。スタブオブジェクト及びスケルトンオブジェクトはいずれも通信を行なうオブジェクトである。クライアントプログラムは、サーバのリモートオブジェクトのメソッドを呼び出すに際し、クライアント側で起動しているスタブオブジェクトへ呼び出しを行ない、スタブオブジェクトがネットワークを介してサーバのスケルトンオブジェクトへメソッドの呼び出しを受け渡す。スケルトンオブジェクトは、ネットワークを介して受け渡されたメソッドの呼び出しを、リモートオブジェクトへ実施し、リモートオブジェクトからの戻り値を、ネットワークを介してスタブオブジェクトへ返す。スタブオブジェクトが、ネットワークを介して受けた戻り値を、呼び出し元のクライアントプログラムへ戻す。これにより、クライアントプログラムにて、他の機器で動作するクラスオブジェクトを利用することが可能である。
【０００６】
ここで、図８に示すようにクライアントプログラムからの呼び出しを可能とするには、クライアントプログラムにて、呼び出し対象のリモートオブジェクトのリモート参照を取得することが必要である。このため、ＲＭＩではＲＭＩレジストリが利用される。
【０００７】
ＲＭＩレジストリは、名前によってクライアント側からの所望のリモートオブジェクトのリモート参照を取得できるようにするネームサーバであり、サーバ側で１つだけ生成されて起動する。サーバ側で、リモート呼び出しを可能とするオブジェクトをリモートオブジェクトとしてＲＭＩレジストリに登録（バインド）しておくことにより、クライアントプログラムは名前でリモートオブジェクトのリモート参照をＲＭＩレジストリから探索して取得できる。
【先行技術文献】
【非特許文献】
【０００８】
【非特許文献１】小玉哲平、外３名、「OSGi FrameworkにおけるBundle共有方式の提案」、第７回情報科学技術フォーラム、２００８年９月、Ｃ−０２６
【発明の概要】
【発明が解決しようとする課題】
【０００９】
図８のＲＭＩレジストリも、ＯＳＧｉフレームワーク上で動作する１つのクラスオブジェクトである。ＲＭＩレジストリを生成、つまり実体化させる必要があるが、サーバのメインプログラムから生成される以外に、ＯＳＧｉフレームワーク上で動作する任意のバンドルが自身のリモートオブジェクトをバインドするために生成する場合がある。そして、ＯＳＧｉフレームワークでは、クラスオブジェクト群であるバンドルは相互に、完全には共有できないように構成されている。具体的には、ＯＳＧｉフレームワークを用いない一般的なＪａｖａアプリケーションでは、当該アプリケーションが持つ全てのクラスが１つのクラス（名前解決）空間を共有し、相互にクラスオブジェクトを完全に参照可能であった。これに対し、ＯＳＧｉフレームワークでは、バンドル毎にクラス空間（名前空間）が割り当てられるように管理される。したがって、異なるバンドル間では、一のバンドルは他のバンドルのクラスの少なくともprivate（非公開）クラスのインタフェースを知り得ず（名前が解らず）、参照できない。
【００１０】
しかしながら、上述したような任意のバンドルがＲＭＩレジストリを生成する場合には、ＲＭＩレジストリは生成者であるバンドル以外のバンドルのprivateのクラスオブジェクトを参照できないという問題が生じる。つまり、サーバ側で１つのＲＭＩレジストリしか生成できないにも拘わらず、当該ＲＭＩレジストリが自身の生成者以外のバンドルのprivateクラスオブジェクトを参照できない場合、前記生成者以外のバンドルは、ＲＭＩ通信を行なえない可能性がある。
【００１１】
これは、クラスオブジェクトを実際にメモリ領域にロードし、対応するクラス空間内でクラスオブジェクトを呼び出し可能にするクラスローダが、各バンドルが実行されるスレッド単位に対応付けられ、上述のように、バンドル毎にクラス空間が割り当てられているために、ＲＭＩレジストリの生成者であるバンドルが実行されるスレッドのクラスローダは、当該バンドル以外の非公開クラスオブジェクトを参照できないからである。Ｊａｖａでは、当該スレッド内でＲＭＩレジストリが生成された場合、ＲＭＩレジストリには当該スレッドのクラスローダが継承されるから、この場合のＲＭＩレジストリは、生成者のバンドル以外の非公開クラスオブジェクトを参照できなくなる。
【００１２】
非特許文献１でも、ＯＳＧｉフレームワークを適用する場合のバンドル間の相互利用における問題点が提示され、その解決の基本方針としてＲＭＩを使用することが提言されているが、具体的な解決策については今後の課題とされている。このように、ＯＳＧｉフレームワークを用いる場合でも、ＲＭＩを用いたリモートメソッドの呼び出しを可能とすることが望まれる。
【００１３】
本発明は斯かる事情に鑑みてなされたものであり、支障なくリモートメソッドの呼び出しが可能な実行環境を提供させることができる情報処理装置、情報処理システム、情報処理方法及びコンピュータプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１４】
第１発明に係る情報処理装置は、演算処理部と、一又は複数のクラスを夫々含む複数のプログラムモジュールが記憶してある記憶部とを備え、前記演算処理部が前記記憶部に記憶してあるプログラムモジュールを読み込んで実行することによって情報を処理する情報処理装置において、前記演算処理部は、前記複数のプログラムモジュール夫々に対しスレッドを生成して前記複数のプログラムモジュールを実行する実行手段、該実行手段により生成されるスレッドに割り付けられ、前記プログラムモジュールが含むクラスを読み込む読込手段、前記プログラムモジュールが含む任意のクラスの名前を遠隔から受け取る手段、及び、受け取った名前に対応するクラスの読み込みを前記読込手段へ要求し、前記クラスのオブジェクトを遠隔から呼び出し可能とする名前解決手段として機能し、前記読込手段は、前記実行手段により実行中のプログラムモジュールに対応するスレッドに割り付けられ、前記プログラムモジュールのクラス空間に基づき前記プログラムモジュールが含むクラスを読み込むモジュール別読込手段と、前記実行中のプログラムモジュールに対応するスレッドとは異なる新たなスレッドに割り付けられ、遠隔から呼び出し可能とされたオブジェクトに対応するプログラムモジュールのモジュール別読込手段を用いて前記プログラムモジュールに対応するクラスを読み込むモジュール間読込手段とを有し、前記名前解決手段は、前記新たなスレッドにて生成され、前記モジュール間読込手段へ前記クラスの読み込みを要求するようにしてあることを特徴とする。
【００１５】
第２発明に係る情報処理装置は、前記演算処理部は、前記複数のプログラムモジュールの内の一つにより、前記モジュール間読込手段が割り付けられた前記新たなスレッドにて前記名前解決手段を生成する手段、遠隔からの呼び出しを可能とするオブジェクトに対応するプログラムモジュールの前記モジュール別読込手段を前記モジュール間読込手段に登録する手段、並びに、前記遠隔からの呼び出しを可能とするオブジェクトを前記名前解決手段に登録し、前記オブジェクトとその名前を関連付ける手段として機能することを特徴とする。
【００１６】
第３発明に係る情報処理装置は、前記一又は複数のクラスを夫々含む複数のプログラムモジュールは、Ｊａｖａ（登録商標）仮想マシン上のＯＳＧｉフレームワークに基づき実行されることを特徴とする。
【００１７】
第４発明に係る情報処理装置は、演算処理部と、一又は複数のクラスを夫々含む複数のプログラムモジュールが記憶してある記憶部とを備え、前記演算処理部が前記記憶部に記憶してあるプログラムモジュールを読み込んで実行することによって情報を処理する情報処理装置において、前記演算処理部は、前記複数のプログラムモジュール夫々に対しスレッドを生成して前記複数のプログラムモジュールを実行する実行手段、及び該実行手段により生成されるスレッドに割り付けられ、前記プログラムモジュールが含むクラスを読み込む読込手段として機能し、前記読込手段は、前記実行手段により実行中のプログラムモジュールに対応するスレッドに割り付けられ、前記プログラムモジュールのクラス空間に基づき前記プログラムモジュールが含むクラスを読み込むモジュール別読込手段を有し、前記複数のプログラムモジュールの内の一つは、他の情報処理装置で実行されるプログラムモジュール中の任意のクラスのオブジェクトを取得する取得手段として、新たなスレッドにて実行され、前記取得手段は、前記他の情報処理装置へ前記クラスの名前を送信する手段、前記クラスのオブジェクトが遠隔から呼び出し可能となった通知を予約する手段、並びに、前記他の情報処理から前記通知を受けた場合、前記オブジェクトへの接続を他の実行中のプログラムモジュールへ渡す手段として機能することを特徴とする。
【００１８】
第５発明に係る情報処理システムは、演算処理部と、一又は複数のクラスを夫々含む複数のプログラムモジュールが記憶してある記憶部とを備え、前記演算処理部が前記記憶部に記憶してあるプログラムモジュールを読み込んで実行することによって情報を夫々処理するクライアント装置及びサーバ装置を含み、前記クライアント装置は、前記サーバ装置へ接続して該サーバ装置で実行されるプログラムモジュールが含むクラスのいずれかを遠隔から呼び出して実行するようにしてある情報処理システムにおいて、前記クライアント装置及びサーバ装置の演算処理部は夫々、前記複数のプログラムモジュール夫々に対しスレッドを生成して前記複数のプログラムモジュールを実行する実行手段、及び、該実行手段により生成されるスレッドに割り付けられ、前記プログラムモジュールが含むクラスを読み込む読込手段として機能し、前記クライアント装置の演算処理部は、実行させるクラスの名前を前記サーバ装置へ送信する手段として機能し、前記サーバ装置の演算処理部は、前記プログラムモジュールが含む実行対象のクラスの名前を前記クライアント装置から受け取る手段、及び、受け取った名前に対応するクラスの読み込みを前記読込手段へ要求し、前記クラスのオブジェクトを遠隔から呼び出し可能とする名前解決手段として機能し、前記読込手段は、前記実行手段により実行中のプログラムモジュールに対応するスレッドに割り付けられ、前記プログラムモジュールのクラス空間に基づき前記プログラムモジュールが含むクラスを読み込むモジュール別読込手段と、前記実行中のプログラムモジュールに対応するスレッドとは異なる新たなスレッドに割り付けられ、遠隔から呼び出し可能とされたオブジェクトに対応するプログラムモジュールのモジュール別読込手段を用いて前記プログラムモジュールに対応するクラスを読み込むモジュール間読込手段とを有し、前記名前解決手段は、前記新たなスレッドにて生成され、前記モジュール間読込手段へ前記クラスの読み込みを要求するようにしてあることを特徴とする。
【００１９】
第６発明に係る情報処理システムは、前記クライアント装置は、前記複数のプログラムモジュールの内の一つとして、他の情報処理装置で実行されるプログラムモジュール中の任意のクラスのオブジェクトを取得する取得手段を、新たなスレッドにて実行する機能を有し、前記取得手段は、前記他の情報処理装置へ前記クラスの名前を送信する手段、前記クラスのオブジェクトが遠隔から呼び出し可能となった通知を予約する手段、並びに、前記他の情報処理から前記通知を受けた場合、前記オブジェクトへの接続を他の実行中のプログラムモジュールへ渡す手段を有することを特徴とする。
【００２０】
第７発明に係る情報処理方法は、演算処理部と、一又は複数のクラスを夫々含む複数のプログラムモジュールが記憶してある記憶部とを備える情報処理装置で、前記演算処理部が前記記憶部に記憶してあるプログラムモジュールを読み込んで、前記クラスのオブジェクトを遠隔から呼び出し可能にする情報処理方法において、前記演算処理部が、前記複数のプログラムモジュールを夫々に対し、前記プログラムモジュールのクラス空間に基づき前記プログラムモジュールが含むクラスを読み込むモジュール別クラスローダを割り付けてスレッドを生成して、前記複数のプログラムモジュールを実行し、前記プログラムモジュールが含む任意のクラスの名前を遠隔から受け取り、実行中のプログラムモジュールに対応するスレッドとは異なる新たなスレッドを生成し、受け取った名前に対応するクラスのオブジェクトを遠隔から呼び出し可能とする名前解決処理を行い、前記新たなスレッドには、遠隔から呼び出し可能とされたオブジェクトに対応するプログラムモジュールのモジュール別クラスローダを用いて前記プログラムモジュールに対応するクラスを読み込みモジュール間クラスローダを割り付けることを特徴とする。
【００２１】
第８発明に係るコンピュータプログラムは、コンピュータに、記憶してある一又は複数のクラスを夫々含む複数のプログラムモジュールを読み込んで実行させるコンピュータプログラムにおいて、前記コンピュータを、前記複数のプログラムモジュール夫々に対しスレッドを生成して前記複数のプログラムモジュールを実行する実行手段、該実行手段により生成されるスレッドに割り付けられ、前記プログラムモジュールが含むクラスを読み込む読込手段、前記プログラムモジュールが含む任意のクラスの名前を遠隔から受け取る手段、及び、受け取った名前に対応するクラスの読み込みを前記読込手段へ要求し、前記クラスのオブジェクトを遠隔から呼び出し可能とする名前解決手段として機能させ、前記読込手段は、前記実行手段により実行中のプログラムモジュールに対応するスレッドに割り付けられ、前記プログラムモジュールのクラス空間に基づき前記プログラムモジュールが含むクラスを読み込むモジュール別読込手段と、前記実行中のプログラムモジュールに対応するスレッドとは異なる新たなスレッドに割り付けられ、遠隔から呼び出し可能とされたオブジェクトに対応するプログラムモジュールのモジュール別読込手段を用いて前記プログラムモジュールに対応するクラスを読み込むモジュール間読込手段とを有し、前記名前解決手段は、前記新たなスレッドにて生成され、前記モジュール間読込手段へ前記クラスの読み込みを要求するようにしてあることを特徴とする。
【００２２】
第１発明、第５発明、第７発明及び第８発明では、一又は複数のクラス夫々含む各プログラムモジュールが、演算処理部によって生成されたスレッドにて実行される。各スレッドには、プログラムモジュールのクラスを読み込むモジュール別の読込手段が夫々対応付けられる。
本発明では、実行中の各プログラムモジュールとは独立した新たなスレッドにて、各プログラムモジュール別の読込手段を介して各プログラムモジュールの呼び出し要求を可能とするモジュール間読込手段の機能が実現される。モジュール間読込手段の機能は、独立した新たなスレッドで実現されるので、実行中のプログラムモジュールのクラス空間による制限を避けることができ、各クラス空間を読み込むモジュール別読込手段を介して、支障なく各クラスを読み込むことが可能である。そして、名前情報に基づきオブジェクトを遠隔から呼び出し可能とする名前解決（ＪａｖａＲＭＩにおけるＲＭＩレジストリ）の機能が、前記モジュール間読込手段が割り付けられる前記新たなスレッドで実現される。したがって、名前解決の機能は、モジュール間読込手段により、各クラス空間の制限を受けることなく全てのプログラムモジュールのクラスを読み込み、各クラスのオブジェクトを遠隔から呼び出し可能にすることが可能となる。
【００２３】
第２発明では、いずれか一つのプログラムモジュールにより、前述のモジュール間読込手段が割り付けられる新たなスレッドにて名前解決の機能を実現する。また当該一つのプログラムモジュールにより、遠隔からの呼び出しを可能とするオブジェクトに対応するプログラムモジュールのモジュール別読込手段を、モジュール間読込手段から呼び出し可能に登録し、名前とオブジェクトとを関連付ける。当該一つのプログラムモジュールが、上述の機能を専門に実現することにより、処理が効率化される。
【００２４】
第３発明では、Ｊａｖａ（登録商標）仮想マシン上で実行されるＯＳＧｉフレームワーク上のバンドルとしてプログラムモジュールが実現される。Ｊａｖａ標準ではクラス空間が一つで共通であるところ、ＯＳＧｉフレームワークに基づく場合には、複数のモジュール夫々に異なるクラス空間を割り付けて各モジュールを実行することが可能である。したがって、名前解決をいずれかのモジュールを継承して実現させたときに、当該モジュールのクラス空間で定義されるクラスのみ読み込むことが可能となる。本発明では、実行中のプログラムモジュールからは独立したスレッドで名前解決が実現されるので、各プログラムモジュールが対応するクラス空間の制限を受けることなく各クラスの読み込みの要求が可能となる。
【００２５】
第４発明及び第６発明では、クライアント装置でも遠隔からの呼び出しを実現するためのプログラムモジュールを別途ユーティリティ的に実行するため、システム設計を効率化することが可能である。
【発明の効果】
【００２６】
本発明による場合、実現される名前解決（ＲＭＩレジストリ）の機能は実行中のプログラムモジュールのいずれにも従属しないから、全プログラムモジュールのクラスを読み込むことが可能となり、支障なく遠隔からの各クラスのオブジェクトの呼び出しを可能とすることができる。
【図面の簡単な説明】
【００２７】
【図１】第一の実施の形態における情報処理システムの構成を示す構成図である。
【図２】本実施の形態におけるサーバ装置及びクライアント装置にて実現される機能を概念的に説明する説明図である。
【図３】本実施の形態におけるサーバ装置でのＲＭＩレジストリの生成方法の概要を示す概念図である。
【図４】本実施の形態のサーバ装置におけるＲＭＩレジストリ生成サービスバンドル、ＲＭＩレジストリ及び専用のクラスローダ間で行われる処理の一例を示すフローチャートである。
【図５】第二の実施の形態におけるサーバ装置及びクライアント装置にて実現される機能を概念的に説明する説明図である。
【図６】第二の実施の形態のクライアント装置におけるリモートオブジェクト取得サービスバンドル、クラスローダ、サーバ装置のＲＭＩレジストリ生成サービスバンドル及びＲＭＩレジストリ間で行われる処理の一例を示すフローチャートである。
【図７】ＯＳＧｉフレームワークを用いたＪａｖａ環境におけるプログラム構成を模式的に示す説明図である。
【図８】ＲＭＩ技術の概要を示す説明図である。
【図９】クライアントとサーバとの間で異なるバンドルのメソッドをも用いることが望まれる場合の例を示す説明図である。
【発明を実施するための形態】
【００２８】
以下、本発明をその実施の形態を示す図面に基づいて具体的に説明する。
【００２９】
（第一の実施の形態）
図１は、第一の実施の形態における情報処理システムの構成を示す構成図である。本実施の形態における情報処理システムは、サーバ装置１及びクライアント装置２を含むサーバクライアントシステムであって、サーバ装置１及びクライアント装置２はインターネット等のネットワークＮにより接続される。本実施の形態では、クライアント装置２は、ネットワークＮに接続し、当該ネットワークＮからサーバ装置１と通信が可能である。サーバ装置１は、クライアント装置２にて実行される後述するエージェントとしての機能からの情報を収集するなどにより、クライアント装置２の動作を管理するエージェントシステムを実現する。クライアント装置２は、有線によりネットワークＮに接続するものであってもよいし、アクセスポイントＡＰを介して無線によりネットワークＮに接続するものでもよい。
【００３０】
サーバ装置１は、サーバコンピュータを用い、ＣＰＵ（Central Processing Unit：演算処理部）１０と、ＨＤ（Hard Disk）１１と、ＲＡＭ（Random Access Memory）１２と、通信部１３とを含む。
【００３１】
ＣＰＵ１０は、ＨＤ１１に記憶されているＯＳ（Operating System）ソフトウェアプログラム（図示せず）、Ｊａｖａ（登録商標）プラットフォームプログラム（図示せず）、サーバコンピュータをサーバ装置１として動作させるためのサーバプログラム１ＰをＲＡＭ１２に読み出して実行することにより、後述にて説明する特有の機能を実現する。
【００３２】
ＨＤ１１には、上述のように各種コンピュータプログラムが呼び出し専用に記憶されているほか、ＣＰＵ１０が処理に参照するデータが記憶されていてもよい。ＲＡＭ１２には、ＣＰＵ１０が上述のように各種コンピュータプログラムを実行する際に展開されたコードが記憶される。
【００３３】
通信部１３は、ネットワークＮのプロトコルに応じた通信を実現するネットワークコントローラ機能を実現する。ＣＰＵ１０は、通信部１３により、情報をパケット化して送信し、ネットワークＮを介して受信されるパケットから情報を抽出することが可能である。
【００３４】
クライアント装置２は、パーソナルコンピュータを用いることができ、ＣＰＵ２０と、ＨＤ２１と、ＲＡＭ２２と、通信部２３とを含む。ＨＤ２１の代替としてフラッシュメモリ、ＥＥＰＲＯＭ（Electrically Erasable and Programmable Read Only Memory）を用いてもよい。
【００３５】
ＣＰＵ２０は、ＨＤ２１に記憶されているＯＳソフトウェアプログラム（図示せず）、Ｊａｖａプラットフォームプログラム（図示せず）、パーソナルコンピュータをクライアント装置２として動作させるためのクライアントプログラム２ＰをＲＡＭ２２に読み出して実行することにより、後述にて説明する特有の機能を実現する。
【００３６】
ＨＤ２１には、上述のように各種コンピュータプログラムが呼び出し専用に記憶されているほか、ＣＰＵ２０が処理に参照するデータが記憶されていてもよい。ＲＡＭ２２には、ＣＰＵ２０が上述のように各種コンピュータプログラムを実行する際に展開されたコードが記憶される。
【００３７】
通信部２３は、ネットワークＮ（又はアクセスポイントＡＰ）を介した通信を実現するネットワーク機能を実現する。ＣＰＵ２０は、通信部２３により、情報をパケット化して送信し、ネットワークＮを介して受信されるパケットから情報を抽出することが可能である。
【００３８】
図２は、本実施の形態におけるサーバ装置１及びクライアント装置２にて実現される機能を概念的に説明する説明図である。サーバ装置１のＣＰＵ１０は、Ｊａｖａプラットフォームプログラム、サーバプログラム１Ｐを読み出して実行することにより、図２に示すようなプログラム構成にて各機能を実現する。
【００３９】
ＣＰＵ１０は、Ｊａｖａプラットフォームプログラムに基づきＪａｖａ仮想マシン１００として動作する。ＣＰＵ１０は、ＯＳＧｉフレームワークを用いたサーバプログラム１Ｐに基づき、Ｊａｖａ仮想マシン１００上にてＯＳＧｉフレームワーク１０１の機能を発揮する。ＣＰＵ１０は、サーバプログラム１Ｐを実行することにより、クラスオブジェクトモジュール（プログラムモジュール）であるバンドルＡ１０２，バンドルＢ１０３を、ＯＳＧｉフレームワーク１０１上で実行し、各バンドルにて実現される機能を発揮させる。
【００４０】
また、本実施の形態では、サーバ装置１のＣＰＵ１０は、ＯＳＧｉフレームワーク１０１上で、ＲＭＩレジストリ１０５としての動作を開始するためにＲＭＩレジストリ生成サービスバンドル１０４を実行する。ＲＭＩレジストリ１０５の生成を、従来のＪａｖａプラットフォームにおける生成方法と異なる方法で実現するために専用のバンドルを用意している。ＲＭＩレジストリ１０５の生成方法は後述にて説明する。また、ＲＭＩレジストリ１０５自体の名前を解決するという機能は、従来のＪａｖａプラットフォームにおけるＲＭＩレジストリと同様であって、上述のように生成のされ方が従来と異なる。また、ＲＭＩレジストリ１０５には専用のクラスローダ１０６（特定のクラスローダ）が対応付けられる点も従来と異なる。
【００４１】
ＣＰＵ１０は、ＯＳＧｉフレームワーク１０１として動作するに際し、サービスレジストリ１０７の機能を発揮する。ＯＳＧｉフレームワーク１０１のサービスレジストリ１０７は、バンドル間で参照可能なオブジェクト（＝サービスオブジェクト）のリポジトリを実現する。そしてこのサービスレジストリ１０７をリモートオブジェクトの管理に利用することができる。例えばバンドルＢ１０３として機能するＣＰＵ１０にて、自身が有するオブジェクトに対する外部からのメソッド呼び出しを可能とさせたい場合、バンドルＢ１０３はリモートオブジェクトであるリモートＢ１３０のサービスレジストリ１０７への登録を要求する。サービスレジストリ１０７は、リモートＢ１３０を登録すると、リモートオブジェクトの登録の通知を予め希望したＲＭIレジストリ生成サービスバンドル１０４へ通知する（ＯＳＧｉフレームワークにおけるWhite Board Pattern）。
【００４２】
ＣＰＵ１０は、ＲＭＩレジストリ生成サービスバンドル１０４としての機能により、ＲＭＩレジストリ１０５を生成する処理を専任する。また、ＲＭＩレジストリ生成サービスバンドル１０４は、ＲＭＩレジストリ１０５を生成する際に、特定のクラスローダ１０６を対応付けさせる。そしてＲＭＩレジストリ生成サービスバンドル１０４は、バンドルＡ１０２又はバンドルＢ１０３からのリモートオブジェクトの登録の通知を受け、当該リモートオブジェクトをＲＭＩレジストリ１０５へバインド（登録）する処理も行なう。
【００４３】
クライアント装置２でも、ＣＰＵ２０はＪａｖａプラットフォームプログラム、ＯＳＧｉフレームワークに基づくクライアントプログラム２Ｐを読み出して実行する。これにより、ＣＰＵ２０は、Ｊａｖａプラットフォームプログラムに基づきＪａｖａ仮想マシン２００として動作する。ＣＰＵ２０は、ＯＳＧｉフレームワークを用いたクライアントプログラム２Ｐに基づき、Ｊａｖａ仮想マシン２００上にてＯＳＧｉフレームワーク２０１の機能を発揮する。ＣＰＵ２０は、クライアントプログラム２Ｐを実行することにより、クラスオブジェクトモジュールであるバンドルＣ２０２をＯＳＧｉフレームワーク２０１上で実行し、各バンドルにて実現される機能を発揮させる。
【００４４】
このように構成されるサーバ装置１及びクライアント装置２にて、バンドルＣ２０２は、サーバ装置１におけるバンドルＢ１０３のオブジェクトのメソッドを呼び出して実行するようにしてある。サーバ装置１にて、クライアント装置２のバンドルＣ２０２から、バンドルＢ１０３のオブジェクトのリモート呼び出しが、ＲＭＩレジストリ生成サービスバンドル１０４及び専用のクラスローダ１０６にて可能となることを以下に説明する。
【００４５】
図３は、本実施の形態におけるサーバ装置１でのＲＭＩレジストリ１０５の生成方法の概要を示す概念図である。
【００４６】
Ｊａｖａでは、各クラスの実体は、スレッド毎に対応付けられるクラスローダ（Context Class Loader）によりロード（読込）される。実体としては、クラスローダも１つのクラスオブジェクトであり、スレッドで実行される各バンドルのクラスのロード、つまりインスタンス化されるクラスのリソース（定義ファイル）を探索して当該クラスのメモリ領域の確保を行なう。なお、各スレッドに対応づけられるクラスローダは、当該スレッドの親スレッドから、親スレッドのクラスローダを継承させるか否かを含めて設定が可能である。何ら設定されない場合は、親スレッドのコンテクスト・クラスローダが継承されて対応付けられる。
【００４７】
ＯＳＧｉフレームワーク１０１上においてＲＭＩレジストリ生成サービスバンドル１０４は、サーバ装置１のＣＰＵ１０にて実行されるメインプログラムにより、やはり１つのクラスオブジェクトとしてスレッドＴ内で生成され、実体化（実行）される。スレッドＴには、クラスローダＴが対応付けられる。
【００４８】
ここで、ＲＭＩレジストリ生成サービスバンドル１０４は、ＲＭＩレジストリ１０５を生成するに際し、自身の実行スレッドＴとは別個に新たなスレッドにて実行するようにし、当該新たなスレッド内でＲＭＩレジストリ１０５を生成するＪａｖａＲＭＩのＡＰＩ（java.rmi.registry.LocateRegistry.createRegistry();）を実行させる。そしてＲＭＩレジストリ生成サービスバンドル１０４は、新たなスレッドを生成するに際し、自身のクラスローダＴとは独立のクラスローダ１０６が対応付けられるように設定を行なう。しかも、当該クラスローダ１０６は、カスタムクラスローダとして設定され、クラスローダ１０６の内容は、デフォルトのクラスローダとは異なる構成としてある。クラスローダ１０６は、後述するようにＲＭＩレジストリ生成サービスバンドル１０４から登録される他のバンドルＡ１０２、バンドルＢ１０３のクラスローダを自身にて参照し、登録されたバンドルのクラスローダによってロードできるクラスオブジェクトの全てをロードできるようにしてある。
【００４９】
このような生成方法及びクラスローダ１０６の対応付けにより、生成されるＲＭＩレジストリ１０５は、新たに生成された実行スレッドに対応づけられるクラスローダ１０６を継承する。そして当該クラスローダ１０６から、いずれのバンドルの各リモートオブジェクトのスケルトンクラスをもロードすることが可能である。
【００５０】
図３に示す生成方法に比して、例えばバンドルＡ１０２がそのままＲＭＩレジストリを生成しようとする場合、バンドルＡ１０２の実行スレッドに対応付けられているクラスローダが継承されて対応付けられる。つまりＲＭＩレジストリはバンドルＡ１０２のクラスオブジェクトのみ参照することが可能となり、他のバンドルＢ１０３の少なくとも非公開（private）クラスオブジェクトを参照することができない。これにより、この場合のＲＭＩレジストリは、バンドルＢ１０３の非公開クラスオブジェクトのスケルトンクラスを
ロードできない。
【００５１】
図４は、本実施の形態のサーバ装置１におけるＲＭＩレジストリ生成サービスバンドル１０４、ＲＭＩレジストリ１０５及び専用のクラスローダ１０６間で行われる処理の一例を示すフローチャートである。
【００５２】
上述したように、ＣＰＵ１０は、ＲＭＩレジストリ生成サービスバンドル１０４の機能により、ＲＭＩレジストリ１０５を生成する別個のスレッドを作成し（ステップＳ１０１）、作成したスレッドに、上述のようにカスタムクラスローダであるクラスローダ１０６を設定し（ステップＳ１０２）、作成した別個のスレッドを実際にスタートさせる（ステップＳ１０３）。これにより、登録されたバンドルのクラスローダ（モジュール別読込手段）によってロードできるクラスオブジェクトの全てをロードできるようにしてあるカスタムクラスローダであるクラスローダ（モジュール間読込手段）１０６を継承するＲＭＩレジストリ１０５が生成されて、その処理を開始する。
【００５３】
次に、ＣＰＵ１０は、ＲＭＩレジストリ生成サービスバンドル１０４の機能により、バンドルＡ１０２、又はバンドルＢ１０３からの遠隔からの呼び出しを可能とするサービスへの登録を検知したかを判断する（ステップＳ１０４）。具体的には、予めＯＳＧｉフレームワーク１０１のサービスレジストリ１０７に、任意のバンドルからのサービス登録がされた場合の通知を要求しておき、サービスレジストリ１０７から通知がされた場合に、サービスレジストリ１０７に登録されたリモートオブジェクトを取得できるようにしてある。
【００５４】
ＣＰＵ１０は、ＲＭＩレジストリ生成サービスバンドル１０４の機能により、遠隔からの呼び出しを可能とするサービスへの登録を検知していないと判断した場合（Ｓ１０４：ＮＯ）、処理をステップＳ１０４へ戻して待機する。ＣＰＵ１０は、ＲＭＩレジストリ生成サービスバンドル１０４の機能により、遠隔からの呼び出しを可能とするサービスへの登録を検知したと判断した場合（Ｓ１０４：ＹＥＳ）、サービスレジストリ１０７に登録されたリモートオブジェクトを取得する（ステップＳ１０５）。
【００５５】
そしてＣＰＵ１０は、取得したリモートオブジェクトのバンドルに対応するクラスローダを取得し、クラスローダ１０６への登録を要求する（ステップＳ１０６）。これに応じてクラスローダ１０６は、要求を受けてＲＭＩレジストリ生成サービスバンドル１０４に取得されたクラスローダを自身に関連付ける（ステップＳ１０７）。
【００５６】
更にＣＰＵ１０は、ＲＭＩレジストリ生成サービスバンドル１０４の機能により、ステップＳ１０５にて取得したリモートオブジェクトをＲＭＩレジストリ１０５にバインドする（ステップＳ１０８）。
【００５７】
これに応じてＣＰＵ１０は、ＲＭＩレジストリ１０５により、ＲＭＩレジストリ生成サービスバンドル１０４からのリモートオブジェクトのバインドを受け付ける（ステップＳ１０９）。ＣＰＵ１０は、ＲＭＩレジストリ１０５により、当該リモートオブジェクトのスケルトンクラスのロードをクラスローダ１０６へ要求する（ステップＳ１１０）。
【００５８】
ＣＰＵ１０は、クラスローダ１０６として機能することにより、ＲＭＩレジストリ１０５からの要求に係るスケルトンクラスを、関連付けている全クラスローダにて走査して探索する（ステップＳ１１１）。ＣＰＵ１０は、クラスローダ１０６として機能することにより、走査により探索して得られたスケルトンクラスをロードし、ＲＭＩレジストリ１０５へ受け渡す（ステップＳ１１２）。
【００５９】
ＣＰＵ１０は、ＲＭＩレジストリ１０５にてクラスローダ１０６から受け渡されたスケルトンクラスを取得する（ステップＳ１１３）。
【００６０】
このように、本実施の形態では、クライアント装置２から任意の名前を受け取った場合でも、ＲＭＩレジストリ１０５によって、支障なく外部からリモートオブジェクトのスケルトンクラスの取得が実現され、支障なく遠隔からのメソッドの呼び出しが可能となる。本実施の形態では、異なるクラス空間を割り当てて実行されるバンドルに対応するスレッドとは異なる新たなスレッドにてＲＭＩレジストリ１０５が生成・実行され、そのスレッドにはカスタムクラスローダが割り付けられる。ＲＭＩレジストリ１０５は、そのカスタムクラスローダによって、実行されているバンドルのクラスローダのいずれかをクラスの読み込みに利用することが可能となる。このため、ＲＭＩレジストリ１０５の実行スレッドに特定のバンドルのクラスローダが割り付けられている場合と異なり、ＲＭＩレジストリ１０５は、クライアント装置２から任意の名前を受け取った場合でも、その名前に対応した適当なクラスローダを利用してクラスの読込を要求することができる。
【００６１】
なお、上述の実施の形態では、図２に示したように、クライアント装置２において、ＯＳＧｉフレームワークに基づくクライアントプログラム２Ｐを実行する構成とした。しかしながら、ＲＭＩクライアントはこれに限られるものではなく、非ＯＳＧｉのＪａｖａアプリケーションプログラムを実行する構成としてもよい。
【００６２】
（第二の実施の形態）
第二の実施の形態では、クライアント装置２側で、リモートオブジェクトを取得するための専用のユーティリティ的なバンドルが実行される点が、第一の実施の形態と異なる。第二の実施の形態におけるハードウェアの構成は、第一の実施の形態と同様であるため同一の符号を付して詳細な説明を省略する。以下、第二の実施の形態におけるサーバ装置１とクライアント装置２とで実現される機能について説明する。
【００６３】
図５は、第二の実施の形態におけるサーバ装置１及びクライアント装置２にて実現される機能を概念的に説明する説明図である。第二の実施の形態では、サーバ装置１及びクライアント装置２でＪａｖａ仮想マシン１００，２００及びＯＳＧｉフレームワーク１０１，２０１が実行される点は第一の実施の形態と同様である。また、サーバ装置１にてＣＰＵ１０が、バンドルＡ１０２，バンドルＢ１０３とは独立して、ＲＭＩレジストリ生成サービスバンドル１０４を実行し、ＲＭＩレジストリ１０５を専用のクラスローダ１０６を対応付けた新たなスレッドにて実行させる構成についても第一の実施の形態と同様である。
【００６４】
第二の実施の形態では、クライアント装置２のＣＰＵ２０は第二の実施の形態におけるクライアントプログラム２ＰをＨＤ２１からＲＡＭ２２に読み出して実行することにより、図５に示すような機能を発揮する。具体的には、ＣＰＵ２０は、ＯＳＧｉフレームワーク２０１上でユーティリティ的に機能するリモートオブジェクト取得サービスバンドル２０３が実行されることが第一の実施の形態と異なる。なお、リモートオブジェクト取得サービスバンドル２０３に対応してクラスローダ２０４も実行される。
【００６５】
バンドルＣ２０２は、サーバ装置１で実行されるバンドルＢ１０３のリモートオブジェクト（リモートＢ１３０）のスタブの取得を希望していることを予めＯＳＧｉフレームワーク２０１のサービスレジストリに登録する。具体的には、リスナーオブジェクトをサービスレジストリに登録する。リモートオブジェクト取得サービスバンドル２０３は、ＯＳＧｉフレームワーク２０１のサービスレジストリに、リスナーオブジェクトが登録された場合に通知するように予約しておく。サービスレジストリは、バンドルＣ２０２からのリスナーオブジェクトを登録すると、リモートオブジェクト取得サービスバンドル２０３へ通知するようにしてある。
【００６６】
リモートオブジェクト取得サービスバンドル２０３は、サービスレジストリからリスナーオブジェクトの登録の通知を受けると、当該リスナーオブジェクトに対応するリモートオブジェクトをサーバ装置１から取得してリスナーオブジェクトに対応するバンドルへ受け渡す処理を実行する。
【００６７】
図６は、第二の実施の形態のクライアント装置２におけるリモートオブジェクト取得サービスバンドル２０３、クラスローダ２０４、サーバ装置１のＲＭＩレジストリ生成サービスバンドル１０４及びＲＭＩレジストリ１０５間で行われる処理の一例を示すフローチャートである。
【００６８】
ＣＰＵ２０は、リモートオブジェクト取得サービスバンドル２０３の機能により、バンドルＣ２０２からのリスナーオブジェクトの登録が通知されたか否かを判断する（ステップＳ２０１）。ＣＰＵ２０は、リスナーオブジェクトの登録が通知されていないと判断した場合（Ｓ２０１：ＮＯ）、処理をステップＳ２０１へ戻し、待機する。
【００６９】
ＣＰＵ２０は、リモートオブジェクト取得サービスバンドル２０３の機能により、リスナーオブジェクトの登録が通知されたと判断した場合（Ｓ２０１：ＹＥＳ）、サービスレジストリに登録されたリスナーオブジェクトを取得し（ステップＳ２０２）、当該リスナーオブジェクトに対応するバンドル（バンドルＣ２０２）のクラスローダを取得し、自身に対応するクラスローダ２０４への登録を要求する（ステップＳ２０３）。
【００７０】
ＣＰＵ２０は、クラスローダ２０４の機能により、要求に係るクラスローダを関連付けしてバンドル（バンドルＣ２０２）を参照できるようにしておく（ステップＳ２０４）。
【００７１】
次にＣＰＵ２０は、リモートオブジェクト取得サービスバンドル２０３の機能により、リスナーオブジェクトに係る所望のリモートオブジェクトが登録された場合にコールバックを実行するコールバックオブジェクトの登録要求をサーバ装置１のＲＭＩレジストリ生成サービスバンドル１０４へ行なう（ステップＳ２０５）。
【００７２】
サーバ装置１のＣＰＵ１０は、ＲＭＩレジストリ生成サービスバンドル１０４としての機能により、クライアント装置２のリモートオブジェクト取得サービスバンドル２０３からの要求に応じてコールバックオブジェクトを登録する（ステップＳ２０６）。そして、ＣＰＵ１０は、ＲＭＩレジストリ生成サービスバンドル１０４の機能により、ＯＳＧｉフレームワーク１０１のサービスレジストリ１０７からの通知により、対象となるバンドルＢ１０３のリモートオブジェクト（リモートＢ１３０）の登録がされたか否かを判断する（ステップＳ２０７）。ＣＰＵ１０は、リモートオブジェクトの登録がされていないと判断した場合（Ｓ２０７：ＮＯ）、処理をステップＳ２０７へ戻し、待機する。ＣＰＵ１０はＲＭＩレジストリ生成サービスバンドル１０４の機能により、リスナーオブジェクトの登録がされたと判断した場合（Ｓ２０７：ＹＥＳ）、リモートオブジェクトをＲＭＩレジストリ１０５へバインドする（ステップＳ２０８）。
【００７３】
サーバ装置１のＣＰＵ１０が実行するＲＭＩレジストリ１０５は、リモートオブジェクトのバインドを受け付ける（ステップＳ２０９）。なお、これに応じて、第一の実施の形態にて示したように、クラスローダ１０６にてスケルトンクラスのロードを行なう。
【００７４】
そして、サーバ装置１のＣＰＵ１０は、ＲＭＩレジストリ生成サービスバンドル１０４の機能により、所望のバンドルＢ１０３のリモートオブジェクトの登録がされたので、クライアント装置２のリモートオブジェクト取得サービスバンドル２０３へ、コールバックを実行する（ステップＳ２１０）。
【００７５】
クライアント装置２のＣＰＵ２０は、リモートオブジェクト取得サービスバンドル２０３により、コールバックを受け付け（ステップＳ２１１）、バンドルＢ１０３のリモートオブジェクトが登録されたことを認識して、一時的にコンテキストクラスローダをカスタムクラスローダ（クラスローダ２０４）に設定する（ステップＳ２１２）。ＣＰＵ２０は、クラスローダ２０４を利用して、リモートオブジェクトのスタブクラスをロードする。
【００７６】
そしてＣＰＵ２０は、リモートオブジェクト取得サービスバンドル２０３により、サーバ装置１のＲＭＩレジストリ１０５から、所望のリモートオブジェクト（リモートＢ１３０）を取得し（ステップＳ２１３）、リスナーオブジェクトを介してリモートオブジェクトを受け渡す（ステップＳ２１４）。
【００７７】
このように、リモートオブジェクト取得サービスバンドル２０３が、リモートオブジェクトを取得する処理をユーティリティ的に実行することにより、クライアント装置２では、バンドルＣ２０２を含む各機能を実現するバンドルを、リモートオブジェクトを取得するために既存のものから改変することなく、そのまま利用できる。したがって、ＯＳＧｉフレームワーク上で動作するシステム設計を効率化することが可能である。
【００７８】
上述の実施の形態では、ＯＳＧｉフレームワーク１０１を用いたＪａｖａプラットフォーム上にて動作するＲＭＩレジストリ１０５について、従来の生成方法とは異なる方法を用いることを記載し、その効果を説明した。ＯＳＧｉフレームワーク１０１を用いる場合には、各バンドルの生成、消滅をＪａｖａ仮想マシン１００の動作を停止させることなく実行させることに関し、クラス空間が各バンドルに個別に割り当てられているために起こるＲＭＩレジストリについての問題を、本発明にて解決できるからである。しかしながら、本発明は、ＪａｖａプラットフォームでＯＳＧｉフレームワークを用いる場合のみならず、クラス空間が個別に割り当てられて実行される全てのオブジェクト、スレッドに対して権限を有するような別個のオブジェクトをユーティリティサービス的に実行させる場合の問題をも解決する。例えば、アプリケーションサーバにて個別に動作している各アプリケーションは、相互にクラス空間を参照することはできない。この場合に、本発明のように独立に起動しており、且つ全アプリケーションのインタフェースを参照できるように構成されるユーティリティオブジェクト（ＲＭＩレジストリ生成サービスバンドル１０３に対応）が実行されることによって問題が解決できる。
【００７９】
なお、開示された実施の形態は、全ての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上述の説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味及び範囲内での全ての変更が含まれることが意図される。
【符号の説明】
【００８０】
１  サーバ装置
１０  ＣＰＵ
１０２，１０３  バンドル（プログラムモジュール）
１０４  ＲＭＩレジストリ生成サービスバンドル
１０５  ＲＭＩレジストリ（名前解決手段）
１０６  クラスローダ（モジュール間読込手段）
２  クライアント装置
２０  ＣＰＵ
２０３  リモートオブジェクト取得サービスバンドル（取得手段）
Ｎ  ネットワーク
【図１】
2011096193.tif 000003
【図２】
2011096193.tif 000004
【図３】
2011096193.tif 000005
【図４】
2011096193.tif 000006
【図５】
2011096193.tif 000007
【図６】
2011096193.tif 000008
【図７】
2011096193.tif 000009
【図８】
2011096193.tif 000010
【図９】
2011096193.tif 000011