(57)【要約】【課題】仮想マシーンを自由に停止、再開しても、利用権限制限が正しく働く、信頼性の高いコンピュータ装置の提供。【解決手段】ネットワークを介したコンピュータ１上に仮想マシーン２を備えており、仮想マシーン２上を移動しながら実行する移動エージェント１２がコンピュータ１に移動したときには、クラスローダ６によって、エージェント１２に含まれるクラス情報を、ロード元情報と対応付けて記憶装置４に記憶する。また、エージェント１２は、実行を開始する。仮想マシーン２が中断し、再開されると、エージェント１２のクラス情報が記憶装置４から読み出されるが、そのときに、併せて記憶される移動元ロード情報を移動元とする。これにより、前記権限制限手段１５で、移動元に対応した、一貫した権限制限が適用される。【選択図】  図２
2004355516.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介して接続される他のコンピュータの仮想マシーン上で実行されていた、オブジェクトおよびこのオブジェクトが参照するクラス情報からなる移動エージェントの移動を受けて、この移動エージェントの実行を継続して行なうコンピュータ装置であって、
前記仮想マシーンと同じ実行環境を提供する仮想マシーンと、
記憶手段と、
前記オブジェクトを前記仮想マシーン上へ登録する手段と、
前記クラス情報を前記仮想マシーン上へ登録するとともに、前記クラス情報と前記他のコンピュータを示す情報とを関連付けて前記記憶手段に記憶するクラスローダ手段とを備え、
前記移動エージェントが動作している前記仮想マシーンを停止して再起動する場合に、前記クラスローダ手段は、前記記憶手段に記憶した前記クラス情報を前記仮想マシーンへ関連付けられた前記他のコンピュータを示す情報を、前記クラス情報の送信元であると決定して前記仮想マシーン上へ前記クラス情報を登録するようにしたことを特徴とするコンピュータ装置。
【請求項２】
前記仮想マシーンは、アクセス元に応じたアクセス権限のレベルを、各アクセス元ごとに予め定義した前記アクセス権限情報に応じて、前記クラス情報へのアクセスに対し、実行可否制限を行なう権限管理手段を備えたことを特徴とする請求項１記載のコンピュータ装置。
【請求項３】
アクセス元ごとにアクセス制限を行なうことが可能な権限制限手段を有する仮想マシーンを備えた複数のコンピュータ間をネットワークを移動しながら実行を継続するソフトウェアエージェントを受信して実行するものであり、前記仮想マシーンを備えるコンピュータ装置であって、
記憶手段と、
前記ソフトウェアエージェントが含むクラス情報を、ロード元情報として、移動元のコンピュータを示す情報と関連付けて前記記憶手段に記録し、また、その記録した前記クラス情報を、クラス定義として、前記仮想マシーン上へ読み込むことが可能なクラスローダ手段と、
前記クラスローダと関連付けられており、前記ソフトウェアエージェントが含むオブジェクトを、前記仮想マシーン上へ登録するオブジェクト管理手段とを備え、
前記クラスローダは、前記ソフトウェアエージェントのクラス情報を、前記ネットワーク、および、前記記憶手段の何れから前記仮想マシーン上へ読み込んだとしても、前記権限制限手段で、前記ロード元情報を用いた一貫した権限制限が適用されるようにしたことを特徴とするコンピュータ装置。
【請求項４】
ネットワークを介して接続され、それぞれ仮想マシーンを備えた複数のコンピュータ間で、前記仮想マシーン上で実行するオブジェクトおよびこのオブジェクトが参照するクラス情報からなるソフトウェアエージェントが移動しながら実行を継続するエージェントシステムにおいてエージェントの実行継続方法であって、
ある記憶手段を有するコンピュータは、
移動してきたオブジェクトを前記仮想マシーン上へ登録し、
移動してきたクラス情報を、前記クラス情報と移動元のコンピュータを示す情報とを関連付けて前記記憶手段に記憶するとともに、前記移動してきたクラス情報を前記仮想マシーン上へ登録することによりエージェントの実行を開始させ、前記実行中のエージェントの前記仮想マシーンが停止して再起動する場合には、前記記憶手段に記憶された前記移動元のコンピュータを示す情報を、前記クラス情報の読み出し元であるとして、前記記憶手段に記憶された前記クラス情報を読み出して、前記仮想マシーン上へ登録するようにしたことを特徴とするエージェントの実行継続方法。
【請求項５】
アクセス元ごとにアクセス制限を行なうことが可能な権限制限手段を有する仮想マシーンを備えた複数のコンピュータ間をネットワークを移動しながら実行を継続するソフトウェアエージェントを受信して実行する、あるコンピュータの仮想マシーンに対するアクセス制限保証方法において、
前記あるコンピュータは、
前記ソフトウェアエージェントが含むクラス情報を、ロード元情報として、移動元のコンピュータを示す情報と関連付けて、自コンピュータの記憶手段に記録し、また、その記録した前記クラス情報を、クラス定義として、自コンピュータの前記仮想マシーン上へ読み込み、
前記クラスローダと関連付けられており、前記ソフトウェアエージェントが含むオブジェクトを、自コンピュータの前記仮想マシーン上へ登録し、
前記ソフトウェアエージェントのクラス情報を、前記ネットワーク、および、前記記憶手段の何れから自コンピュータの前記仮想マシーン上へ読み込んだとしても、前記権限制限手段で、前記ロード元情報を用いた一貫した権限制限が適用されるようにしたことを特徴とするアクセス制限保証方法。
【請求項６】
ネットワークを介して接続される他のコンピュータの仮想マシーン上で実行されていた、オブジェクトおよびこのオブジェクトが参照するクラス情報からなる移動エージェントの移動を受けて、この移動エージェントの実行を継続して行なう、前記仮想マシーンおよび記憶手段を備えるコンピュータ装置上で実行されるプログラムであって、
前記オブジェクトを前記仮想マシーン上へ登録する手段と、
前記クラス情報を前記仮想マシーン上へ登録するとともに、前記クラス情報と前記他のコンピュータを示す情報とを関連付けて前記記憶手段に記憶するクラスローダ手段とを備え、
前記移動エージェントが動作している前記仮想マシーンを停止して再起動する場合に、前記クラスローダ手段は、前記記憶手段に記憶した前記クラス情報を前記仮想マシーンへ関連付けられた前記他のコンピュータを示す情報を、前記クラス情報の送信元であると決定して前記仮想マシーン上へ前記クラス情報を登録するようにしたことを特徴とするプログラム。
【請求項７】
アクセス元ごとにアクセス制限を行なうことが可能な権限制限手段を有する仮想マシーンを備えた複数のコンピュータ間をネットワークを移動しながら実行を継続するソフトウェアエージェントを受信して実行するものであり、前記仮想マシーンと記憶手段とを備えるコンピュータ装置上で実行されるプログラムであって、
前記ソフトウェアエージェントが含むクラス情報を、ロード元情報として、移動元のコンピュータを示す情報と関連付けて前記記憶手段に記録し、また、その記録した前記クラス情報を、クラス定義として、前記仮想マシーン上へ読み込むことが可能なクラスローダ手段と、
前記クラスローダと関連付けられており、前記ソフトウェアエージェントが含むオブジェクトを、前記仮想マシーン上へ登録するオブジェクト管理手段とを備え、
前記クラスローダは、前記ソフトウェアエージェントのクラス情報を、前記ネットワーク、および、前記記憶手段の何れから前記仮想マシーン上へ読み込んだとしても、前記権限制限手段で、前記ロード元情報を用いた一貫した権限制限が適用されるようにしたことを特徴とするプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、仮想マシーンを備えた複数のコンピュータ間を移動しながら実行するソフトウェアエージェントに関し、特に、移動元を保証するようにしたコンピュータ装置、エージェントの実行継続方法、アクセス制限保証方法、および、プログラムに関する。
【０００２】
【従来の技術】
近年、コンピュータ上に、動的にクラス定義可能なオブジェクト言語であるＪａｖａ（Ｒ）２言語を用いるためのＪａｖａ（Ｒ）仮想マシーンと呼ばれる実行環境を利用したシステムが普及してきている（例えば、非特許文献１、２参照）。このシステムは、Ｊａｖａ（Ｒ）仮想マシーン上に複数のオブジェクトを配置してオブジェクト同士がメッセージを送りあうことにより、プログラムが動作する。
【０００３】
これらオブジェクトは、プログラム作成者が定義したデータ構造とメソッドと呼ばれる関数群とからなるクラス定義を、コンパイルしてクラス・ファイルを生成し、生成されたクラス・ファイルに基づいて、Ｊａｖａ（Ｒ）仮想マシーン上にクラス情報を登録し、登録されたクラス情報から生成される。これら登録及び生成の処理は、クラスローダと呼ばれるＪａｖａ（Ｒ）仮想マシーン上の特殊なクラス情報及びオブジェクトによって行なわれる。なお、クラス・ファイルは、様々なリソースからロードすることが可能であるが、一つのリソース、もしくはリソースのグループに対し、一つのクラスローダが生成され、対応する。
【０００４】
また、Ｊａｖａ（Ｒ）仮想マシーンは、セキュリティ機能として、マシーン起動時にアクセスコントロールリスト（以下、ＡＣＬ）をＪａｖａ（Ｒ）
仮想マシーン上に読み込み、利用権限制限を行なう。ＡＣＬは、扱われるプログラム、データのリソース元ごとにアクセス制限をユーザの指定によって行なうことができる。
【０００５】
このようなシステムの応用として、ネットワークを介して接続される複数のコンピュータのそれぞれのＪａｖａ（Ｒ）仮想マシーン間を移動しながら、設定されたゴールを達成するようなソフトウェアエージェントが構築されつつある。この場合、ソフトウェアエージェントは、複数のオブジェクトで構成される。そして、Ｊａｖａ（Ｒ）仮想マシーンから別のＪａｖａ（Ｒ）仮想マシーンへソフトウェアエージェントが移動される場合には、送り側のＪａｖａ（Ｒ）仮想マシーンのオブジェクト管理手段でソフトウェアエージェントの各オブジェクトをデータ化（これを、シリアライズと呼ぶ）し、ネットワーク上をデータ転送し、受け側のＪａｖａ（Ｒ）仮想マシーンのオブジェクト管理手段で受け取ったデータをオブジェクト化（これを、デシリアライズと呼ぶ）する。また、各オブジェクトが参照する各クラス情報も併せて転送する必要があり、これは、送り側のＪａｖａ（Ｒ）仮想マシーンのオブジェクト管理手段がクラスローダに送信対象となるクラス情報を、受け側のＪａｖａ（Ｒ）仮想マシーンへ送る旨要請し、送り側のＪａｖａ（Ｒ）仮想マシーンのクラスローダが、対象となるクラス情報を探して、それらをネットワークを介して送る。受け側のＪａｖａ（Ｒ）仮想マシーンのクラスローダは、ネットワークを介して受け取ったクラス情報を受け側のＪａｖａ（Ｒ）仮想マシーン上に登録する。これによって、受け側のＪａｖａ（Ｒ）仮想マシーン上で、ソフトウェアエージェントが動作を再開できる。
【０００６】
【非特許文献１】
”Ｊａｖａ（Ｒ）言語仕様  第２版”  ジェームズ・ゴスリン他著、株式会社ピアソン・エデュケーション発行、２０００年
【０００７】
【非特許文献２】
”Ｊａｖａ（Ｒ）仮想マシン仕様  第２版”  ティム・リンドホルム他著、株式会社ピアソン・エデュケーション発行、２００１年
【０００８】
【発明が解決しようとする課題】
ところで、Ｊａｖａ（Ｒ）仮想マシーンは、停止、再開が容易にできる。この停止時において、Ｊａｖａ（Ｒ）仮想マシーン上のオブジェクトは、オブジェクト管理手段によってシリアライズしてデータ化し、このＪａｖａ（Ｒ）仮想マシーンが動作するコンピュータの記憶装置に記憶され、またクラス情報は、クラスローダによって、そのまま記憶装置に記憶される。そして、再開時において、オブジェクト管理手段は、記憶装置に記憶されるデータをデシリアライズしてＪａｖａ（Ｒ）仮想マシーン上へ登録し、また、クラスローダは、記憶装置に記憶されるクラス情報をそのままＪａｖａ（Ｒ）仮想マシーン上へ登録する。このとき、クラスローダは、記憶装置用のクラスローダが使用されるので、Ｊａｖａ（Ｒ）仮想マシーン上へ登録されたクラス情報のロード元は記憶装置となる。
【０００９】
従って、上記で説明したソフトウェアエージェントが移動してきた後に、Ｊａｖａ（Ｒ）仮想マシーンの停止、再開を行なうと、Ｊａｖａ（Ｒ）仮想マシーン上に登録されるクラス情報のロード元が、記憶装置となってしまい、本来のロード元である、送り側のＪａｖａ（Ｒ）仮想マシーンが不明となってしまう。そのため、このソフトウェアエージェントのオブジェクトにおいて、先に説明したＪａｖａ（Ｒ）仮想マシーンのＡＣＬによる利用権限制限が、記憶装置となってしまうという問題点が生じる。一般に、自身の記憶装置は、ネットワークを介して接続される他のコンピュータ装置よりも、格段に高レベルの利用権限が与える場合が多く、信頼性が低いクラス情報に高レベルの利用権限を与えてしまうこととなってしまい、この対策としてはＪａｖａ（Ｒ）仮想マシーンを停止、再開することを不可とするしかなかった。
【００１０】
本発明は、このような問題点に鑑みなされたものであり、複数のＪａｖａ（Ｒ）仮想マシーン上を移動可能なソフトウェアエージェントにおいて、Ｊａｖａ（Ｒ）仮想マシーンを自由に停止、再開しても、利用権限制限が正しく働く、信頼性の高いコンピュータ装置、エージェントの実行継続方法、アクセス制限保証方法、および、プログラムを提供することを目的とする。
【００１１】
【課題を解決するための手段】
本発明は、ネットワークを介して接続される他のコンピュータの仮想マシーン上で実行されていた、オブジェクトおよびこのオブジェクトが参照するクラス情報からなる移動エージェントの移動を受けて、この移動エージェントの実行を継続して行なうコンピュータ装置であって、前記仮想マシーンと同じ実行環境を提供する仮想マシーンと、記憶手段と、前記オブジェクトを前記仮想マシーン上へ登録する手段と、前記クラス情報を前記仮想マシーン上へ登録するとともに、前記クラス情報と前記他のコンピュータを示す情報とを関連付けて前記記憶手段に記憶するクラスローダ手段とを備え、前記移動エージェントが動作している前記仮想マシーンを停止して再起動する場合に、前記クラスローダ手段は、前記記憶手段に記憶した前記クラス情報を前記仮想マシーンへ関連付けられた前記他のコンピュータを示す情報を、前記クラス情報の送信元であると決定して前記仮想マシーン上へ前記クラス情報を登録するようにしたことを特徴とする。
【００１２】
これにより、移動エージェントが移動してきた後に一時停止して再開する場合に、ネットワークが切断されていても、一時停止する前の移動エージェントと同じ状態で移動エージェント１２の実行を再開できるようになった。
【００１３】
また、本発明は、アクセス元ごとにアクセス制限を行なうことが可能な権限制限手段を有する仮想マシーンを備えた複数のコンピュータ間をネットワークを移動しながら実行を継続するソフトウェアエージェントを受信して実行するものであり、前記仮想マシーンを備えるコンピュータ装置であって、記憶手段と、前記ソフトウェアエージェントが含むクラス情報を、ロード元情報として、移動元のコンピュータを示す情報と関連付けて前記記憶手段に記録し、また、その記録した前記クラス情報を、クラス定義として、前記仮想マシーン上へ読み込むことが可能なクラスローダ手段と、前記クラスローダと関連付けられており、前記ソフトウェアエージェントが含むオブジェクトを、前記仮想マシーン上へ登録するオブジェクト管理手段とを備え、前記クラスローダは、前記ソフトウェアエージェントのクラス情報を、前記ネットワーク、および、前記記憶手段の何れから前記仮想マシーン上へ読み込んだとしても、前記権限制限手段で、前記ロード元情報を用いた一貫した権限制限が適用されるようにしたことを特徴とする。
【００１４】
これにより、移動エージェントが実行される仮想マシーンが備える、ロード元情報による適切な権限設定を行うことができるようになった。
【００１５】
なお、これら装置の発明は、同様な方法の発明としても成立する。また、これら装置の発明は、同様なプログラムの発明としても成立する。
【００１６】
【発明の実施の形態】
以下、本発明の実施の形態に関し、図面を用いて詳細に説明する。なお、本発明の実施形態はコンピュータ上に実現され、実施形態の各機能はＪａｖａ（Ｒ）言語動作環境と、人間によって書かれたＪａｖａ（Ｒ）言語プログラムが、このコンピュータを制御することによって実現される。本明細書における各「部」は、実施形態の各機能に対応する概念的なもので、必ずしも特定のハードウェアやソフトウェア・ルーチンに１対１には対応しない。
【００１７】
図１は、本実施の形態に関するエージェントシステムの全体図を示したものである。
【００１８】
このエージェントシステムは、ネットワークを介して互いに通信可能な複数のコンピュータ１の間を、ソフトウェアである移動エージェント１２が移動し実行することを繰り返すことにより、ユーザの代わりにユーザが要求する目的を達成するものである。各コンピュータ１は、仮想マシーン２を備えている。仮想マシーン２とは、各コンピュータのＯＳや、ＣＰＵの違いを吸収して、特定の言語で記述したプログラムを実行可能とするものである。本実施の形態では、Ｊａｖａ（Ｒ）２仮想マシーンを用いるが、以下では単に仮想マシーン２と称すこととする。
【００１９】
図２は、各コンピュータ１の機能ブロックを示す図である。ただし、本実施の形態に係る機能以外については省略している。
【００２０】
仮想マシーン２は、ここではＪａｖａ（Ｒ）２の実行環境を与えるものであり、モバイルエージェント実行装置３と、複数のオブジェクト１３からなる移動エージェント１２と、これらオブジェクト１３の動作を定義する複数のクラス情報１１と、アクセスコントロールリスト（ＡＣＬ）１６に基づいて、実行権限の管理を行なう権限管理手段１５とを備える。
【００２１】
モバイルエージェント実行装置３は、移動エージェント１２が利用できるためのものであり、オブジェクト１３のシリアライズ、デシリアライズを管理するオブジェクトストリーム管理手段５、要請に応じてクラス情報を外部からロードし、システムに登録するためのクラスローダ６、ネットワークを介し、他のコンピュータ１との間の通信を管理する通信部７、移動エージェント１２を一時停止・再開するためのエージェント管理手段１４とを備える。
【００２２】
記憶装置４は、不揮発性の記憶媒体であり、例えばＨＤＤで構成され、コンピュータ１内の各種データ、プログラムなどを記憶可能である。
【００２３】
エージェント１２を構成する複数のオブジェクト１３のそれぞれは、データ領域（データ構造）とクラス情報１１への参照機能とを備え、クラス情報１１は、複数の関数（メソッド）を備える。オブジェクト１３は、クラス情報１２を参照することによって動作する。
【００２４】
権限管理手段１５は、オブジェクト１３の実行権限を管理するものであり、オブジェクト１３が属するクラス情報に対して関連付けられたコードソース（ロード元情報）と、Ｊａｖａ（Ｒ）２実行環境の起動者によって予め定義される、リソース元による権限制限が記述されたＡｃｃｅｓｓ  Ｃｏｎｔｒｏｌ  Ｌｉｓｔ（ＡＣＬ）とから、実行可否を判断して、決定するものである。なお、ロード元情報は、コードソース（ｃｏｄｅＳｏｕｒｃｅ）と呼ばれ、多くはクラスパスなどだが、アプリケーション固有のリソースから読み込まれた場合は、アプリケーションが定義する独自のコードソースでも良い。
【００２５】
権限管理手段１５は、ＡＣＬを仮想マシーン２の起動時に読み込んで保持しておき、その後、メソッドが実行される際、そのメソッドを呼び出したオブジェクトが、そのメソッドが果たす機能を実行するために必要な権限を持っているかどうかを、呼び出し元を全て遡ってチェックする。ＡＣＬによって制御可能な機能は、クラスローダの作成、取得、スレッドの作成、取得、実行環境停止、ファイルシステムへのアクセス、ネットワークへのアクセスなど多岐にわたる。
【００２６】
ＡＣＬの例は、例えば以下のようなものである。
ｇｒａｎｔ  ｃｏｄｅＢａｓｅ  ”ｆｉｌｅ：＄［ｊａｖａ．ｈｏｍｅ］／ｌｉｂ／ｅｘｔ／＊”  ［
ｐｅｒｍｉｓｓｉｏｎ  ｊａｖａ．ｓｅｃｕｒｉｔｙ．ＡｌｌＰｅｒｍｉｓｓｉｏｎ；
］；
このＡＣＬは、仮想マシーン２が属するコンピュータのファイルシステム上で、”ｆｉｌｅ：＄［ｊａｖａ．ｈｏｍｅ］／ｌｉｂ／ｅｘｔ／＊”で表されるディスク領域から読み込まれた全てのクラスから派生するオブジェクトに対し、全ての権限を許可することを表す。
【００２７】
次に、エージェント実行装置３に備わっているオブジェクトストリーム管理手段５、及び、クラスローダ６について説明する。
【００２８】
オブジェクトストリーム管理手段５は、特殊なクラス情報とオブジェクトとから構成されており、仮想マシーン２実行中に仮想マシーン２上のオブジェクトをデータ化することや、逆にデータ化されたオブジェクトを仮想マシーン２上にロードすることが可能である。オブジェクトのデータ化をシリアライズと呼び、データのオブジェクト化をデシリアライズと呼ぶ。デシリアライズによるオブジェクト生成の場合、通常のオブジェクト生成とは異なり、初期化過程を経ることなく、仮想マシーン２上に生成される。
【００２９】
また、シリアライズされたデータには、クラス情報の実体が含まれないため、シリアライズ前のクラスのコードソースは不明であるため、デシアライズ時には、その時点で検索されるクラス情報とそれに付随するロード元情報が自動的に用いられる。
【００３０】
クラスローダ６は、特殊なクラス情報とオブジェクトとから構成されており、クラス情報を仮想マシーン２上に登録するものである。図３に示すように、仮想マシーン２上には、クラスローダ６とは別に、ロード元情報ごとに他のクラスローダ（以下、標準クラスローダと称す）が存在し、クラスローダ６は、これから登録しようとするクラス情報を得るロード元情報に応じた他の標準クラスローダに対する参照を備え、参照先の他の標準クラスローダによってクラス情報を登録する。この登録の際、クラス情報のロード元情報を併せて他の標準クラスローダに渡さなければならない。
【００３１】
登録されたクラス情報には、この時に得られたロード元情報が付加され、後述するセキュリティモデルを成立させるために用いられる。全てのクラスローダ（クラスローダ６及び標準クラスローダ）は、特定のロード元情報に関連付けることができるため、仮想マシーン２に登録したクラス情報について、ＡＣＬとロード元情報に基づいた権限設定を行える。
【００３２】
また、クラスローダ６は、更に、ロード元情報と、ロードしたクラス情報とを対応付けて記憶装置４に記憶する。クラスローダ６は、この点が標準クラスローダとは大きく異なっている。記憶装置４に記憶されたクラス情報の一例を図４に示す。クラス情報は、ロード元のコンピュータ名によって分類されており、クラス１，２，３はコンピュータＡに関連付けられ、クラス２，４，５はコンピュータＢに関連付けられている。また、クラス２は、双方のコンピュータに関連付けられており、即ちディスク上の二箇所に記録されている。
【００３３】
次に、本実施の形態の各動作について以下に詳細に説明する。
【００３４】
まず、自コンピュータ１が受け取ったことのないエージェント１２が、他のコンピュータ１から移動し、自コンピュータ１上で動作を開始する、即ちエージェントの移動についての動作を、図５及び図６のフローチャートを用いて説明する。
【００３５】
図５において、まず、通信部７は、ネットワークを介し他のコンピュータ１との通信を行い、他のコンピュータ１からエージェント１２が移動しようとしていることを検知する（Ｓ１０１）。
【００３６】
通信部７は、他のコンピュータ１から転送されるシリアライズされたオブジェクトをパラメータとして、オブジェクトストリーム管理手段５のオブジェクト処理の実行を開始する（Ｓ１０２）。
【００３７】
オブジェクトストリーム管理手段５は、通信内容を調べ、それがシリアライズされたオブジェクト群であることを確認し、他のコンピュータ１の仮想マシン２上でシリアライズされたオブジェクトが送信され、この送信されたデータを受け取り、一時保持する（Ｓ１０３）。
【００３８】
次に、オブジェクトストリーム管理手段５は、一時保持したデータに、登録していないオブジェクトを含むか否かを確認し（Ｓ１０４）、含まれる場合に、一つのシリアライズされたオブジェクトをデシリアライズし、このデシリアライズされたオブジェクトからクラス名を抽出し、そのクラス名をオブジェクトストリーム管理手段５にコピーする（Ｓ１０５）。
【００３９】
オブジェクトストリーム管理手段５は、クラスローダ６に対し、クラス名と移動元コンピュータ名をパラメータとして、クラスロード要求メソッドを実行する（Ｓ１０６）。
【００４０】
クラスローダ６は、クラス情報の仮想マシン２への登録を行う（Ｓ１０７）。このステップＳ１０７の詳細な動作を図６を用いて説明する。
【００４１】
まず、ロード要求メソッドのパラメータとして与えられた、クラス名とコンピュータ名について、そのコンピュータ名に関連付けられる形で記録された、指定クラス名のクラス情報がディスク４上にあるかを判断する（Ｓ２０１）。クラス情報が存在した場合、これをクラス定義としてステップＳ２０４へ進む。
【００４２】
一方、クラスデータが存在しなかった場合、通信部７により、パラメータとして与えられたコンピュータからクラス情報を転送し（Ｓ２０２）、コピーする。図では省略されているが、クラス情報の転送に失敗した場合、エージェントの移動はエラーで終了する。
【００４３】
クラスローダ６にコピーされたクラス情報を、ディスク４に対し、コンピュータ名に関連付けて記録する（Ｓ２０３）。
【００４４】
次に、指定されたコンピュータをロード元情報とする標準クラスローダ（図１６）が存在するかどうかを判断する（Ｓ２０４）。存在しなかった場合、新しいＪａｖａ（Ｒ）２標準クラスローダを生成する（Ｓ２０５）。クラスローダ６は、生成した標準クラスローダに対する参照を表１の新しい行として保持する（Ｓ２０６）。標準クラスローダによってクラス情報を仮想マシーン２上へ登録する（Ｓ２０７）。
【００４５】
以上のようにし、クラス情報の仮想マシーン２への登録を行う。
【００４６】
図５に戻り、この登録の結果を元に、クラスが実際にロードされたかを判断し（Ｓ１０８）、ロードに失敗していれば、エージェント１２の移動はエラーで終了し、ロードに成功していれば、このオブジェクトに対する手順を終え、ステップＳ１０４に戻る。
【００４７】
最終的に、オブジェクトデータ群が必要とする全てのクラス情報のロードに成功した場合（Ｓ１０４のＮｏ）、エージェント１２を構成する全てのオブジェクト１３は適切にロードされ、エージェント１２は実行を開始する。
【００４８】
以上のように、他コンピュータ１から移動してきたエージェント１２を構成するオブジェクトのクラス情報は、全てロード元情報としてコンピュータ１を指定されている。従って、エージェント１２の動作は、仮想マシーン２により、他のコンピュータ１をロード元情報とするＡＣＬ定義に従った権限制限を受ける。
【００４９】
次に、前記動作後に、仮想マシーン２の停止に伴う、コンピュータ１で動作するエージェント１２の一時停止についての動作を説明する。
【００５０】
仮想マシーン２の停止は、ユーザによる命令や、エージェント実行装置３が異常を検知した場合などに、エージェント管理手段１４によって開始され、図７のフローチャートで表される以下の手順が適用される。
【００５１】
まず、エージェント１２が動作停止する（Ｓ３０１）。停止方法の詳細は、個々のエージェントシステムによって異なるものであり、何れの方法であっても良い。次に、エージェント１２を構成する全てのオブジェクト１３を、オブジェクトストリーム管理手段５によってシリアライズし、オブジェクトをデータ化する（Ｓ３０２）。
【００５２】
次に、一時停止したエージェント１２を記録するための領域（ファイル）をディスク４に用意する（Ｓ３０３）。エージェント１２を構成するオブジェクトのクラス情報からロード元情報をコピーし、記録領域に記録する（Ｓ３０４）。次に、シリアライズされたオブジェクトを記憶する（Ｓ３０５）。そして、エージェント１２を構成するオブジェクト１３を破棄する（Ｓ３０６）。なお、オブジェクトの破棄は、仮想マシーン２に標準に備えられたものである。以上により、コンピュータ１で動作するエージェント１２は一時停止する。
【００５３】
次に、前記動作後に、仮想マシーン２が再起動し、一時停止したエージェント１２を再開する場合についての動作を、図８を用いて説明する。
【００５４】
仮想マシーン２の再起動に伴い、仮想マシーン２上でエージェント実行装置３が生成され、これに伴って生成されるエージェント管理手段１４は、一時停止したエージェント１２が存在する場合には、エージェント１２の再開を行う。
【００５５】
まず、エージェント管理手段１４は、記憶装置４から一時停止記録領域（ファイル）を検索する（Ｓ４０１）。次に、検索により得られた記録領域から、先頭のロード元情報を読み出し、コピーしてメモリ中に保持する（Ｓ４０２）。記録領域の残り部分から、オブジェクト１３を読み出し、オブジェクトストリーム管理手段５が扱うデータとして、メモリ中にコピーーする。これ以降は、図５のフローチャートで示されるステップＳ１０４の手順と同様な手順が行なわれ、エージェント１２が再開される。この際、オブジェクト１３が必要な全てのクラス情報１１は、既に指定コンピュータ名に関連付けられて記憶装置４に記録されているため、実際の他のコンピュータ１に対する通信は必要とせず、また、標準クラスローダによるクラス情報の登録時には、記憶装置４とはならず、以前に送られてきた他のコンピュータ１をロード元情報としてクラス登録が行われる。
【００５６】
従って、エージェント１２に対する権限管理手段１５のＡＣＬ１６に基づく権限設定は、一時停止前のロード元情報と同じ他のコンピュータ１から移動した場合と同様に扱われることができるようになった。
【００５７】
以上説明した本実施の形態によれば、移動エージェント１２が移動してきた後に、仮想マシーン２が一時停止し、その後仮想マシーン２が再起動される際に、ネットワークが切断されていても、記憶装置４に記憶される移動エージェント１２のクラス情報にロード元情報が付加されているから、仮想マシーン２の一時停止前と同じ状態で移動エージェント１２の実行を再開できるようになった。
【００５８】
更に、仮想マシーン２の一時停止前と同じ状態で移動エージェント１２の実行を再開できるようになったから、その際にも移動エージェント１２のロード元情報による適切な権限設定を行うことができるようになった。
【００５９】
【発明の効果】
本発明によれば、移動エージェントが移動してきた後に一時停止して再開する場合に、ネットワークが切断されていても、一時停止する前の移動エージェントと同じ状態で移動エージェント１２の実行を再開できるようになった。
【００６０】
また、移動エージェントが実行される仮想マシーンが備える、ロード元情報による適切な権限設定を行うことができるようになった。
【図面の簡単な説明】
【図１】本実施の形態に関するエージェントシステムの全体図。
【図２】各コンピュータ１の機能ブロックを示す図。
【図３】クラスローダ６及び標準クラスローダの関係を示す図。
【図４】クラスローダ６で記憶装置４に記憶した一例。
【図５】エージェントの移動についての動作を示すフローチャート。
【図６】クラスローダ６でクラス情報の仮想マシン２への登録を行う際の詳細動作を示すフローチャート。
【図７】仮想マシーン２の停止に伴う、コンピュータ１で動作するエージェント１２の一時停止についての動作を示すフローチャート。
【図８】一時停止後に、仮想マシーン２が再起動し、一時停止したエージェント１２を再開する場合についての動作を示すフローチャート。
【符号の説明】
１・・・コンピュータ、２・・・仮想マシーン
３・・・モバイルエージェント実行装置
４・・・記憶装置、５・・・オブジェクトストリーム管理手段
６・・・クラスローダ
７・・・通信部、１１・・・クラス情報、１２・・・エージェント
１３・・・オブジェクト
１４・・・エージェント管理手段、１５・・・権限管理手段
１６・・・ＡＣＬ
【図１】
2004355516.tif 000003
【図２】
2004355516.tif 000004
【図３】
2004355516.tif 000005
【図４】
2004355516.tif 000006
【図５】
2004355516.tif 000007
【図６】
2004355516.tif 000008
【図７】
2004355516.tif 000009
【図８】
2004355516.tif 000010