JPH10320205A - 情報処理装置 - Google Patents

情報処理装置

Info

Publication number
JPH10320205A
JPH10320205A JP9130160A JP13016097A JPH10320205A JP H10320205 A JPH10320205 A JP H10320205A JP 9130160 A JP9130160 A JP 9130160A JP 13016097 A JP13016097 A JP 13016097A JP H10320205 A JPH10320205 A JP H10320205A
Authority
JP
Japan
Prior art keywords
class
class data
data
function
program
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.)
Pending
Application number
JP9130160A
Other languages
English (en)
Inventor
Takeshi Nishigaya
岳 西ヶ谷
Ichiro Iida
一朗 飯田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP9130160A priority Critical patent/JPH10320205A/ja
Priority to US09/009,461 priority patent/US6308182B1/en
Priority to DE69815946T priority patent/DE69815946T2/de
Priority to EP98300383A priority patent/EP0880093B1/en
Publication of JPH10320205A publication Critical patent/JPH10320205A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/656Updates while running
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99944Object-oriented database structure

Abstract

(57)【要約】 【課題】 動作中のプログラムを停止させることな
く、そのプログラムコードの一部を削除したり、置き換
えたりすることを可能とする。 【解決手段】 クラスデータ監視手段2は、クラスデー
タ記憶手段1に記憶されているクラスデータの使用状況
を追加されたクラスデータごとに監視し、クラスデータ
処理手段3は、クラスデータ監視手段2で監視されてい
るクラスデータの使用状況に基づいて、クラスデータの
削除や置換を行うことにより、プログラムの動作中に、
そのプログラムの一部の削除や置換を行えるようにす
る。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、情報処理装置に関
し、特に、分散オブジェクト指向プログラミングを行う
場合などに適用して好適なものである。
【0002】
【従来の技術】従来、分散オブジェクト指向技術である
CORBA(Common Object Reque
st Broker Architecture)、D
COM(Distributed Component
Object Model)、JavaRMI(Ja
va Remote Method Invocati
on)などを利用することにより、ローカルに存在する
オブジェクトに対してメソッドを発行するのとほとんど
同じ手続で、遠隔のコンピュータに存在するオブジェク
トに対してメソッドを発行することが可能なことから、
分散システムを比較的容易に開発することが可能だっ
た。
【0003】
【発明が解決しようとする課題】しかしながら、従来の
分散オブジェクト指向技術では、動作中のサーバオブジ
ェクトの一部のプログラムコードを置き換える機能や、
一部のプログラムコードを遠隔実行する機能がないた
め、分散オブジェクトの運用を柔軟に行うことができな
かった。
【0004】例えば、データベースサーバオブジェクト
において、新たな問い合わせコマンドに対応するプログ
ラムを実行する場合には、そのサーバオブジェクトを終
了させ、新たに追加するプログラムをサーバオブジェク
トが使用できるように設定を変更した後、サーバオブジ
ェクトを再起動しなければならなかった。
【0005】このため、分散システムにおけるサーバオ
ブジェクトのプログラムコードの追加・更新には一般に
長い時間を要することから、更新されるサービスに関連
するサーバオブジェクトの数が多くなるにつれて、その
サービスを停止しなければならない時間が長くなるとい
う問題があった。
【0006】また、同一のオブジェクトに対して複数の
メソッド呼出しを行い、それらの結果に依存して次のメ
ソッド呼出しのパラメータを決定する場合や、メソッド
呼出しのパラメータや戻り値のデータ量が大きい場合に
は、メソッド呼出しによるネットワーク遅延の影響が大
きく、分散システムの利点が生かされないという問題が
あった。
【0007】また、サーバオブジェクトをある程度汎用
的な目的に使えるようにしたり、サーバの動作を呼出し
側のプログラムでカスタマイズできるようにするために
は、サーバオブジェクトのメソッドインタフェースを増
やして細分化しなければならなかった。
【0008】このため、従来の分散システムでは、イン
タフェースが複雑になって分かりにくいものになるだけ
でなく、1つの目的を達成するために呼び出さなければ
ならないメソッドの数が増加し、サービスの応答速度が
ネットワーク遅延により劣化するという問題があった。
【0009】さらに、従来の分散システムでは、プログ
ラムコードの追加・更新を行う場合、インタフェースの
セキュリティを確保するための保守・運用に関わる管理
者の負担が大きいという問題があった。
【0010】そこで、本発明の第1の目的は、動作中の
プログラムを停止させることなく、そのプログラムコー
ドの一部を削除したり、置き換えたりすることを可能と
することである。
【0011】また、本発明の第2の目的は、プログラマ
にクラス管理の知識がなくても、プログラムを容易にカ
スタマイズできるようにすることである。また、本発明
の第3の目的は、分散システムにおけるプログラムコー
ドの追加・更新のインターフェイスのセキュリティを向
上させることである。
【0012】
【課題を解決するための手段】上述した課題を解決する
ために、本発明によれば、オブジェクトに追加されたク
ラスデータを記憶するクラスデータ記憶手段と、クラス
データの使用状況を監視するクラスデータ監視手段と、
クラスデータの使用状況に基づいて、クラスデータの処
理を行うクラスデータ処理手段とを備えている。
【0013】このことにより、プログラムをクラスデー
タで構成することが可能となるとともに、プログラムの
使用状況を追加されたクラスデータごとに監視すること
が可能となり、プログラムが動作している場合にどのク
ラスデータが使用されているかを判別することが可能と
なることから、そのプログラムコードの一部の削除や置
換をそのプログラムの動作中に行うことが可能となる。
【0014】また、本発明の一態様によれば、処理要求
があったクラスデータが使用中の場合、そのクラスデー
タの使用が終了するまで、そのクラスデータの処理を延
期するようにしている。
【0015】このことにより、動作中のプログラムに対
して削除や置換などの処理要求が行われた場合において
も、そのプログラムの動作を停止させることなく、その
プログラムの一部の機能に対する削除や置換などの処理
を行わせることが可能となり、プログラムのカスタマイ
ズ時におけるプログラマの負担を軽減することが可能と
なる。
【0016】また、本発明の一態様によれば、クラスデ
ータについての処理要求を受け付けるかどうかを検査す
る検査手段を備えている。このことにより、プログラム
コードの追加要求や更新要求を却下することが可能とな
り、プログラムコードの追加・更新のインターフェイス
のセキュリティを向上させることが可能となる。
【0017】また、本発明の一態様によれば、クラスデ
ータの追加要求単位でクラスデータをクラスデータ記憶
手段に追加するようにしている。このことにより、クラ
スデータの追加要求を識別することが可能となり、追加
要求時のクラスデータからなる機能単位でプログラムに
対する処理を行うことが可能となることから、プログラ
マにクラス管理の知識がなくても、プログラムを容易に
カスタマイズすることが可能となる。
【0018】また、本発明の一態様によれば、クラスデ
ータの使用状況を監視するエージェントクラスオブジェ
クトを生成するためのエージェントクラスを設け、クラ
スデータに対する処理が行われる場合、エージェントク
ラスに基づいてエージェントクラスオブジェクトを生成
するようにしている。
【0019】このことにより、監視対象となるプログラ
ム自体にそのプログラムを監視する機能を容易に付加す
ることが可能となり、プログラマにクラス管理の知識が
なくても、プログラムの使用状況の監視を容易に行うこ
とが可能となるとともに、そのプログラムコードの一部
の削除や置換をそのプログラムの動作中に行うことが可
能となる。
【0020】また、本発明の一態様によれば、エージェ
ントクラスは、エージェントクラスオブジェクトに追加
されたクラスデータの管理を行うクラス管理オブジェク
トを、クラスデータの追加要求が行われるごとに生成す
るようにしている。
【0021】このことにより、プログラムに新たに追加
された機能ごとにプログラムの監視を行うことが可能と
なり、プログラムが動作している場合にプログラムのど
の機能が使用されているのかを判別することが可能とな
ることから、プログラムの一部の機能を特定するだけ
で、そのプログラムの機能の削除や置換をそのプログラ
ムの動作中に行うことが可能となる。
【0022】また、本発明の一態様によれば、クラスデ
ータの追加要求に対して生成されたクラス管理オブジェ
クトとクラス管理オブジェクトの識別情報との対応関係
を記憶するようにしている。
【0023】このことにより、クラス管理オブジェクト
に与えられた名前などの識別情報を指定するだけで、プ
ログラムコードの一部の削除や置換をそのプログラムの
動作中に行うことが可能となり、プログラムをカスタマ
イズする際のプログラマの負担を軽減することが可能と
なる。
【0024】また、本発明の一態様によれば、クラス管
理オブジェクトは、そのクラス管理オブジェクトに固有
のクラスデータを格納する局所クラスデータテーブルを
備えている。
【0025】このことにより、他のオブジェクトから送
られてきたクラスデータとクラス管理オブジェクトが既
に管理しているクラスデータとの間に衝突が発生した場
合においても、他のオブジェクトから送られてきたクラ
スデータをクラス管理オブジェクトが既に管理している
クラスデータと独立に保有することが可能となり、エー
ジェントクラスオブジェクトは、他のオブジェクトから
送られてきたクラスデータを遠隔実行することが可能と
なる。
【0026】また、本発明の一態様によれば、クラス管
理オブジェクトは、クラスデータの削除要求を記憶する
削除フラグを備えている。このことにより、クラスデー
タに対する削除要求を記憶しておくことが可能となり、
削除要求されたクラスデータが使用中の場合において
も、そのクラスデータに対する削除要求を受け入れるこ
とが可能となることから、クラスデータに対する削除要
求が拒否されたために、そのクラスデータに対する削除
要求を改めて行う必要がなくなり、プログラマがクラス
データを削除する際の負担を軽減することが可能とな
る。
【0027】また、本発明の一態様によれば、クラス管
理オブジェクトは、クラスデータの置換要求時の新たな
クラスデータを記憶する置換クラスデータ記憶領域を備
えている。
【0028】このことにより、置換要求時の新たなクラ
スデータを記憶しておくことが可能となり、置換要求さ
れたクラスデータが使用中の場合においても、そのクラ
スデータに対する置換要求を受け入れることが可能とな
ることから、クラスデータに対する置換要求が拒否され
たために、そのクラスデータに対する置換要求を改めて
行う必要がなくなり、プログラマがクラスデータを置換
する際の負担を軽減することが可能となる。
【0029】また、本発明の一態様によれば、クラス管
理オブジェクトは、クラスデータを実行しているスレッ
ドの識別情報を記憶する実行中スレッドリストを備えて
いる。
【0030】このことにより、実行中スレッドリストを
参照するだけで、実行されているクラスデータが存在す
るかどうかを判別することができ、クラスデータの使用
状況を容易に把握することが可能となる。
【0031】また、本発明の一態様によれば、クラス管
理オブジェクトは、追加されたクラスデータに対応する
クラス名を記憶するクラス名リストを備えている。この
ことにより、クラス管理オブジェクトは、自己が管理し
ているクラスデータを容易に把握することが可能とな
り、追加されたクラスデータを単位としてクラスデータ
に対する処理を行うことが可能となる。
【0032】また、本発明の一態様によれば、クラス管
理オブジェクトは、クラスデータの参照先のクラスデー
タを管理しているクラス管理オブジェクトの識別情報を
記憶する参照オブジェクトリストと、クラスデータの参
照元のクラスデータを管理しているクラス管理オブジェ
クトの識別情報を記憶する被参照オブジェクトリストと
を備える。
【0033】このことにより、クラスデータの参照関係
を考慮しながらクラスデータに対する処理を行うことが
可能となり、プログラマがクラスデータの参照関係を認
識する必要がなくなることから、プログラムのカスタマ
イズを容易に行うことが可能となる。
【0034】また、本発明の一態様によれば、エージェ
ントクラスは、他のエージェントクラスオブジェクトか
らのアクセス権をチェックするアクセス制御クラスを備
えている。
【0035】このことにより、エージェントクラスオブ
ジェクトは、他のエージェントクラスオブジェクトから
のアクセスがあった場合、アクセス制御クラスに基づい
てアクセス制御オブジェクトを生成することが可能とな
ることから、エージェントクラスオブジェクトからのア
クセスがある度に、アクセス権のチェックを行うことが
可能となるとともに、エージェントクラスオブジェクト
ごとにアクセス条件を容易に変更することが可能とな
り、プログラムコードの追加・更新のインターフェイス
のセキュリティを向上させることが可能となる。
【0036】また、本発明の一態様によれば、エージェ
ントクラスオブジェクトにクラスデータを追加する外部
公開メソッドを備えている。このことにより、プログラ
ムの実行中においても、そのプログラムに対してクラス
データを新たに追加することが可能となる。
【0037】また、本発明の一態様によれば、エージェ
ントクラスオブジェクトに追加されたクラスデータに対
応するクラス管理オブジェクトを生成するクラス管理オ
ブジェクト生成手段と、クラス管理オブジェクト内のク
ラス名リストにクラスデータのクラス名を登録するクラ
ス名登録手段と、クラスデータを前記共有クラスデータ
テーブルに書き込むクラスデータテーブル書き込み手段
と、クラス管理オブジェクトの識別情報を前記クラス管
理オブジェクトテーブルに登録するクラス管理オブジェ
クトテーブル登録手段とを備えている。
【0038】このことにより、エージェントクラスオブ
ジェクトは、追加されたクラスデータごとにその使用状
況を監視することが可能となるとともに、追加されたク
ラスデータを容易に特定してそのクラスデータに対する
処理を実行することが可能となる。
【0039】また、本発明の一態様によれば、エージェ
ントクラスオブジェクトに追加されたクラスデータのク
ラス名が、共有クラスデータテーブルに登録されている
クラスデータのクラス名と重複する場合、エージェント
クラスオブジェクトに追加されたクラスデータを共有ク
ラスデータテーブルから削除するようにしている。
【0040】このことにより、共有クラスデータテーブ
ル内で同一のクラスの衝突が発生することを防止するこ
とができる。また、本発明の一態様によれば、エージェ
ントクラスオブジェクトに保有されているクラスデータ
を実行する外部公開メソッドを備えている。
【0041】このことにより、エージェントクラスオブ
ジェクトはプログラムを実行させることが可能となる。
また、本発明の一態様によれば、実行中のクラスデータ
が他のクラスデータを参照している場合、実行中のクラ
スデータを管理しているクラス管理オブジェクトに実行
情報を設定するとともに、参照先のクラスデータを管理
しているクラス管理オブジェクトにも実行情報を設定す
るようにしている。
【0042】このことにより、参照元のクラスデータの
実行中に参照先のクラスデータの削除要求や置換要求が
なされても、参照元のクラスデータの実行が終了するま
で参照先のクラスデータの削除や置換を一時的に保留し
ておくが可能となり、クラスデータの実行が途中で不可
能になることを防止することが可能となる。
【0043】また、本発明の一態様によれば、実行中ス
レッドリストが空で、かつ、削除フラグがオンのクラス
管理オブジェクトが存在している場合、そのクラス管理
オブジェクトのクラス名リストのクラス名に対応するク
ラスデータを共有クラスデータテーブルから削除するよ
うにしている。
【0044】このことにより、削除要求があったプログ
ラムの一部の機能について、そのプログラムの一部の機
能の実行が終了した後に、そのプログラムの一部の機能
を削除することが可能となることから、プログラムの一
部の機能を削除する際に、実行中のプログラムを途中で
停止させたり、そのプログラムを再起動させたりする手
間を省くことが可能となる。
【0045】また、本発明の一態様によれば、実行中ス
レッドリストが空で、かつ、置換クラスデータ記憶領域
にクラスデータが記憶されている場合、共有クラスデー
タテーブルに記憶されている置換対象のクラスデータ
を、置換クラスデータ記憶領域に記憶されているクラス
データで置換するようにしている。
【0046】このことにより、置換要求があったプログ
ラムの一部の機能について、そのプログラムの一部の機
能の実行が終了した後に、そのプログラムの一部の機能
を他の機能で置換することが可能となることから、プロ
グラムの一部の機能を置換する際に、実行中のプログラ
ムを途中で停止させたり、そのプログラムを再起動させ
たりする手間を省くことが可能となる。
【0047】また、本発明の一態様によれば、エージェ
ントクラスオブジェクトからクラスデータを削除する外
部公開メソッドを備えている。このことにより、エージ
ェントクラスオブジェクトはプログラムの一部を削除す
ることが可能となる。
【0048】また、本発明の一態様によれば、クラス管
理オブジェクトの実行中スレッドリストにスレッドの識
別情報が設定されている場合、そのスレッドで実行され
ているクラスデータの削除を中止し、そのクラス管理オ
ブジェクトの削除フラグをオンに設定するようにしてい
る。
【0049】このことにより、実行中のクラスデータに
対して削除要求が行われた場合においても、そのクラス
データの実行を停止させることなく、そのクラスデータ
に対する削除要求を受け入れることが可能となることか
ら、そのクラスデータの実行に影響を与えることなく、
そのクラスデータを削除することが可能となる。
【0050】また、本発明の一態様によれば、エージェ
ントクラスオブジェクトのクラスデータを置換する外部
公開メソッドを備えている。このことにより、エージェ
ントクラスオブジェクトはプログラムの一部を置換する
ことが可能となる。
【0051】また、本発明の一態様によれば、クラス管
理オブジェクトの実行中スレッドリストにスレッドの識
別情報が設定されている場合、そのスレッドで実行され
ているクラスデータの置換を中止し、そのクラス管理オ
ブジェクトの置換クラスデータ記憶領域に新たなクラス
データを設定するようにしている。
【0052】このことにより、実行中のクラスデータに
対して置換要求が行われた場合においても、そのクラス
データの実行を停止させることなく、そのクラスデータ
に対する置換要求を受け入れることが可能となり、その
クラスデータの実行に影響を与えることなく、そのクラ
スデータを置換することが可能となる。
【0053】また、本発明の一態様によれば、削除要求
や置換要求に対し、クラス管理オブジェクトの被参照オ
ブジェクトリストが空でない場合、エラーを通知し、ク
ラス管理オブジェクトの参照オブジェクトリストが空で
ない場合、参照先のクラス管理オブジェクトの被参照オ
ブジェクトリストから、参照元のクラス管理オブジェク
トの識別情報を削除するようにしている。
【0054】このことにより、他のクラスデータが参照
しているクラスデータが消失することを防止することが
可能となるとともに、不要となった情報を削除すること
が可能となり、プログラムをカスタマイズする際の利便
性を向上させることが可能となる。
【0055】また、本発明の一態様によれば、他のエー
ジェントクラスオブジェクトから送られたクラスデータ
を実行する外部公開メソッドを備えている。このことに
より、エージェントクラスオブジェクトはプログラムの
遠隔実行を行うことが可能となる。
【0056】また、本発明の一態様によれば、他のエー
ジェントクラスオブジェクトから送られたクラスデータ
をクラス管理オブジェクトの局所クラスデータテーブル
に格納するようにしている。
【0057】このことにより、クラス管理オブジェクト
に対応して既に格納されているクラスデータとの衝突を
回避することが可能となる、エージェントクラスオブジ
ェクトによる遠隔実行を円滑に行うことが可能となる。
【0058】また、本発明の一態様によれば、クラスデ
ータ及びクラスデータから生成されたオブジェクトのシ
リアライズデータに基づいて、そのクラスデータから生
成されたオブジェクトを復元するようにしている。
【0059】このことにより、クラスデータから生成さ
れたオブジェクトを他のエージェントクラスオブジェク
トに送信して、そのオブジェクトの遠隔実行を行うこと
が可能となる。
【0060】また、本発明の一態様によれば、実行対象
のクラスデータとともにその実行対象のクラスデータが
参照しているクラスデータを、他のエージェントクラス
オブジェクトに送信するようにしている。
【0061】このことにより、参照関係を有しているク
ラスデータについても、遠隔実行を行うことが可能とな
る。また、本発明の一態様によれば、送信先のエージェ
ントクラスオブジェクトに存在しているクラスデータを
除外して、実行対象のクラスデータをその送信先のエー
ジェントクラスオブジェクトに送信するようにしてい
る。
【0062】このことにより、遠隔実行を行う際の通信
量を減らすことが可能となり、遠隔実行の速度を上げる
ことが可能となる。また、本発明の一態様によれば、複
数の機能からなるプログラムの実行状況を、それぞれの
機能ごとに監視し、そのプログラムの機能の実行状況に
基づいて、そのプログラムの機能に対する処理を行うよ
うにしている。
【0063】このことにより、プログラムの実行中に一
部の機能が実行されない場合や、プログラムの実行中に
一部の機能の実行が終了した場合、その一部の機能の削
除または置換をそのプログラムの実行中に行うことが可
能となり、プログラムのカスタマイズを迅速に行うこと
が可能となる。
【0064】
【発明の実施の形態】以下、本発明の実施例について図
面を参照しながら説明する。図1は、本発明の一実施例
に係わる情報処理装置の機能的な構成を示すブロック図
である。
【0065】図1において、クラスデータ記憶手段1
は、オブジェクトに追加されたクラスデータを記憶す
る。クラスデータ監視手段2は、クラスデータ記憶手段
1に記憶されているクラスデータの使用状況を追加され
たクラスデータごとに監視する。クラスデータ処理手段
3は、クラスデータ監視手段2で監視されているクラス
データの使用状況に基づいて、クラスデータの処理を追
加されたクラスデータごとに行う。
【0066】このため、クラスデータ監視手段2は、プ
ログラムに新たに追加された機能ごとにプログラムの監
視を行うことが可能となり、プログラムが動作している
場合にプログラムのどの機能が使用されているのかを判
別することが可能となる。この結果、クラスデータ処理
手段3は、プログラムの一部の機能を特定するだけで、
そのプログラムの機能に対する処理をそのプログラムの
動作中に行うことが可能となる。
【0067】図2は、図1のクラスデータ処理手段3の
構成例を示すブロック図である。図2において、受付手
段11は、クラスデータ記憶手段1に記憶されているク
ラスデータについての削除要求や置換要求などを受け付
ける。判定手段12は、クラスデータ監視手段2での監
視結果に基づいて、削除要求や置換要求などがあったク
ラスデータが使用中かどうかを判定する。延期手段13
は、クラスデータが使用中の場合、そのクラスデータの
使用が終了するまで、そのクラスデータの削除や置換な
どを延期する。
【0068】ここで、受付手段11は、実行中のクラス
データに対して削除要求や置換要求が行われた場合、そ
のクラスデータの実行を停止させることなく、そのクラ
スデータに対する削除要求や置換要求を受け付ける。そ
して、遅延手段13は、判定手段12による判定結果を
参照することにより、削除対象または置換対象となって
いるクラスデータの使用が終了したがどうかを識別し、
削除対象または置換対象となっているクラスデータの使
用が終了してから、受付手段11が受け付けた削除や置
換などの処理を実行する。
【0069】このことにより、削除要求や置換要求があ
ったプログラムの一部の機能について、そのプログラム
の一部の機能の実行が終了した後に、そのプログラムの
一部の機能を削除したり、他の機能で置換したりするこ
とが可能となり、プログラムの一部の機能を削除したり
置換したりする際に、実行中のプログラムを途中で停止
させたり、そのプログラムを再起動させたりする手間を
省くことが可能となる。
【0070】図3は、本発明の一実施例に係わるコンピ
ュータの機能的な構成を示すブロック図である。図3に
おいて、開発言語のライブラリの基本クラスとしてエー
ジェントクラスが設けられ、このエージェントクラスは
エージェントクラスライブラリ31に格納されている。
プログラマは、システム開発を行う場合、この基本クラ
スとしてのエージェントクラスに基づいて、サブクラス
を生成することにより、アプリケーションを記述する。
【0071】エージェントクラスには、クラスデータの
追加要求に対して生成されたクラス管理オブジェクト2
4a〜24mとクラス管理オブジェクト24a〜24m
の名前との対応関係を記憶したクラス管理オブジェクト
テーブル23、エージェントクラスオブジェクト22a
〜22nに追加されたクラスデータの管理を行うクラス
管理オブジェクト24a〜24mと、クラス管理オブジ
ェクト24a〜24mで管理されるクラスデータを記憶
する共有クラスデータテーブル25及びクラスデータに
対する処理を実行する外部公開メソッド26が設けられ
ている。
【0072】エージェントクラスオブジェクト22a〜
22nは、エージェントクラスライブラリ31に格納さ
れているエージェントクラスのインスタンスとして、コ
ンピュータ21上に生成される。エージェントクラスオ
ブジェクト22aのクラス管理オブジェクトテーブル2
3には、例えば、クラス管理オブジェクト24a〜24
mの名前“function−1”〜“functio
n−m”がそれぞれ登録されるとともに、それぞれの名
前“function−1”〜“function−
m”に対応するクラス管理オブジェクト24a〜24m
へのポインタが格納されている。
【0073】エージェントクラスオブジェクト22aの
外部公開メソッド26として、例えば、remov
e()メソッド26a、add()メソッド26b、g
et()メソッド26c、set()メソッド26d、
eval()メソッド26e、call()メソッド2
6fが設けられている。
【0074】remove()メソッド26aは、削除
対象となるクラスデータを管理しているクラス管理オブ
ジェクト24a〜24mの名前を引数として、共有クラ
スデータテーブル25からクラスデータを削除する。
【0075】add()メソッド26bは、追加対象と
なるクラスデータを管理するクラス管理オブジェクト2
4a〜24mの名前及び追加対象となるクラスデータを
引数として、追加対象となるクラスデータを管理するク
ラス管理オブジェクト24a〜24mを新たに生成する
とともに、そのクラス管理オブジェクト24a〜24m
の名前をクラス管理オブジェクトテーブル23に登録
し、追加対象となるクラスデータを共有クラスデータテ
ーブル25に格納する。
【0076】get()メソッド26cは、取得対象と
なるクラスデータを管理しているクラス管理オブジェク
ト24a〜24mの名前を引数として、共有クラスデー
タテーブル25からクラスデータをコピーする。
【0077】set()メソッド26dは、置換対象と
なるクラスデータを管理しているクラス管理オブジェク
ト24a〜24mの名前及び置換する新たなクラスデー
タを引数として、共有クラスデータテーブル25の置換
対象となるクラスデータを新たなクラスデータで置換す
る。
【0078】eval()メソッド26eは、実行対象
となるクラスデータ及びそのクラスデータのオブジェク
トのシリアライズデータを引数として、そのクラスデー
タまたはそのオブジェクトについての遠隔実行を行う。
【0079】call()メソッド26fは、実行対象
となるクラスデータを管理しているクラス管理オブジェ
クト24a〜24mの名前を引数として、共有クラスデ
ータテーブル25に格納されているクラスデータからオ
ブジェクトを生成して実行する。
【0080】コンピュータ21には、また、通信デーモ
ン28、ネットワークソケットAPI(アプリケーショ
ン プログラミング インターフェイス)29、オペレ
ーティング・システム30及びシステムクラスライブラ
リ32が設けられている。
【0081】外部公開メソッド26が呼ばれた際には、
通信スレッド27a〜27kが割り当てられ、1つのプ
ログラム中で複数の実行の流れ(例えば、メソッドや関
数)が、データ領域を共有しながら並列して行われるこ
とが可能となっている。なお、このマルチスレッド機能
は、Java言語などでは標準的に備わっているもので
ある。
【0082】コンピュータ21内のエージェントクラス
オブジェクト22a〜22n間での情報の通信や、他の
コンピュータとの間で情報の通信は、ネットワークソケ
ットAPIを介して行われる。
【0083】エージェントクラスオブジェクト22a〜
22nのクラス置換機能や遠隔実行機能が実際のシステ
ムで利用される状況としては、例えば、ソフトウェアの
遠隔保守が挙げることができる。そして、こられのクラ
ス置換機能や遠隔実行機能を利用することにより、サー
バを停止させることなく、ソフトウェアの入れ替えを遠
隔に行うことが可能になるとともに、複数のサーバをバ
ッチ処理的に行うことができるようになる。
【0084】このため、サーバソフトの一部だけを対象
として、プログラムを変更する場合でも、サーバを停止
し、プログラムを変更した後に、サーバを再起動するよ
うな手間をなくすことが可能となり、特に、分散システ
ムの場合には、管理者の負担を大幅に軽減することが可
能となる。また、一般的なアプリケーションについて
も、エージェントクラスオブジェクト22a〜22n内
部で動作するクラスとして作成することにより、アプリ
ケーションのカスタマイズをより柔軟に行うことが可能
となる。
【0085】このように、図3の実施例では、複数のエ
ージェントクラスオブジェクト22a〜22nが連携
し、動作中のエージェントクラスオブジェクト22a〜
22nが、そのエージェントクラスオブジェクト22a
〜22nを構成するプログラムコードであるクラスデー
タの追加要求または削除要求を受け付ける場合に、それ
ぞれのエージェントクラスオブジェクト22a〜22n
内に共有クラスデータテーブル25を設け、追加要求の
発生ごとにクラス管理オブジェクト24a〜24mを生
成する。
【0086】そして、そのクラス管理オブジェクト24
a〜24mが、共有クラスデータテーブル25の検索や
追加されたクラス群の実行及び削除を管理することによ
り、追加されたクラス群を共有することが可能となると
ともに、部分的なクラス群を動的に削除・更新すること
が可能となる。
【0087】また、ランタイム環境におけるプログラム
の置換機能やプログラムの一部の遠隔実行を利用するこ
とにより、分散型ネットワーク管理システム、分散型ネ
ットワークサービス、分散型グループウェアなどでの柔
軟な相互連携や動的な負荷分散が可能となる。
【0088】さらに、動作中のサーバオブジェクトのプ
ログラムコードの追加・更新をサーバオブジェクトの動
作中に行うことが可能となり、更新されるサービスに関
連するサーバオブジェクトを完全に停止させる必要がな
くなることから、サービスの停止期間を飛躍的に短くす
ることが可能となる。
【0089】なお、オブジェクトを構成するクラスデー
タを監視する機能をそのオブジェクトに設けたものをエ
ージェントと呼ぶ。図4は、図3のクラス管理オブジェ
クトの構成例を示す図である。
【0090】図4において、クラス管理オブジェクト2
4a〜24mには、局所クラスデータテーブル(loc
al classes)41、削除フラグ(remov
able flag)42、置換クラスデータ記憶領域
(next classes)43、実行中スレッドI
Dリスト(running threads)44、ク
ラス名リスト(class names)45、参照オ
ブジェクトリスト(referring)46、被参照
オブジェクトリスト(referred)47及びクラ
スデータの検索を行うクラス探索機能48が設けられて
いる。
【0091】局所クラスデータテーブル41は、プログ
ラムの遠隔実行時に受信したクラスデータを保存するも
ので、遠隔実行時に他のエージェントクラスオブジェク
ト22a〜22nからクラスデータが送られてきた場
合、そのクラスデータをクラス管理オブジェクト24a
〜24mにより既に管理されているクラスデータと独立
に保有することにより、送信されたクラスデータとクラ
ス管理オブジェクト24a〜24mが既に管理している
クラスデータとの間の衝突を防止することを可能とし、
クラスデータの遠隔実行を行うことを可能とするもので
ある。
【0092】削除フラグ42は、共有クラスデータテー
ブル25に追加されたクラスデータの削除要求が発生し
たかどうかを示すもので、クラスデータに対する削除要
求を削除フラグ42に記憶しておくことにより削除要求
されたクラスデータが使用中の場合においても、そのク
ラスデータに対する削除要求を受け入れることを可能と
するものである。
【0093】置換クラスデータ記憶領域43は、共有ク
ラスデータテーブル25に追加されたクラスデータの置
換要求が発生した場合に、置換する新しいクラスデータ
を一時的に保存しておくもので、置換要求時の新たなク
ラスデータを置換クラスデータ記憶領域43に記憶して
おくことにより、置換要求されたクラスデータが使用中
の場合においても、そのクラスデータに対する置換要求
を受け入れることを可能とするものである。
【0094】実行中スレッドリスト44は、共有クラス
データテーブル25に追加されたクラスデータを実行し
ているスレッドIDを記憶するもので、実行中スレッド
リスト44にスレッドIDを記憶することにより、実行
中スレッドリスト44を参照するだけで、実行されてい
るクラスデータが存在するかどうかを判別することを可
能とするものである。
【0095】クラス名リスト45は、共有クラスデータ
テーブル25に追加されたクラスデータの各クラス名を
記憶するもので、クラス管理オブジェクト24a〜24
mが管理しているクラスデータを把握することを可能と
し、クラス管理オブジェクト24a〜24mが管理する
クラスデータを単位として処理を行うことを可能とする
ものである。
【0096】参照オブジェクトリスト46は、共有クラ
スデータテーブル25に追加されたクラスデータが利用
する他のクラスデータを、どのクラス管理オブジェクト
24a〜24mが管理しているかを記憶するもので、参
照先のクラスデータを考慮しながらクラスデータに対す
る処理を行うことを可能とするものである。
【0097】被参照オブジェクトリスト47は、クラス
データを利用している他のクラスデータを、どのクラス
管理オブジェクト24a〜24mが管理しているかを記
憶するもので、参照元のクラスデータを考慮しながらク
ラスデータに対する処理を行うことを可能とするもので
ある。
【0098】図5は、エージェントクラスの構成例を示
す図である。エージェントクラスは、クラスライブラリ
51の基本クラス52として設けられ、この基本クラス
52には、クラス管理オブジェクトテーブル53、クラ
ス管理オブジェクト5、共有クラスデータテーブル55
及び外部公開メソッド56が設けられている。また、ク
ラスライブラリ51には、基本クラス52から生成され
たサブクラス57が登録され、エージェントクラスオブ
ジェクト22a〜22nは、サブクラス57からのイン
スタンス58a〜58jとして生成することができる。
【0099】このように、分散システムの開発者は、エ
ージェントクラスのサブクラス57を作成して、アプリ
ケーションを記述することにより、クラス管理に関する
特別な知識がなくとも、ランタイム環境でのクラスデー
タの置換機能を実現したり、外部のエージェントクラス
オブジェクト22a〜22nからクラスデータを送り付
けることにより、遠隔実行機能を利用した柔軟なシステ
ムを構築することができる。
【0100】図6は、クラスデータ追加時のクラス管理
オブジェクトの生成方法を示す図である。図6におい
て、例えば、“function−1”という名前でク
ラスデータA、クラスデータB及びクラスデータCをエ
ージェントクラスオブジェクト301に追加する場合、
クラスデータA、クラスデータB及びクラスデータCが
共有クラスデータテーブル302に格納されるととも
に、クラスデータA、クラスデータB及びクラスデータ
Cを管理するクラス管理オブジェクト303が生成され
る。
【0101】クラス管理オブジェクト303には、クラ
ス管理オブジェクト303が管理するクラスデータA、
クラスデータB及びクラスデータCのクラス名がそれぞ
れ登録されるとともに、クラス管理オブジェクト303
の名前として、“function−1”がクラス管理
オブジェクトテーブルに登録される。
【0102】クラスデータA、クラスデータB及びクラ
スデータCがエージェントクラスオブジェクト301に
追加された後、“function−2”という名前で
クラスデータD及びクラスデータEをエージェントクラ
スオブジェクト301に追加する場合、クラスデータD
及びクラスデータEが共有クラスデータテーブル302
に格納されるとともに、クラスデータD及びクラスデー
タEを管理するクラス管理オブジェクト304が新たに
生成される。
【0103】クラス管理オブジェクト304には、クラ
ス管理オブジェクト304が管理するクラスデータD及
びクラスデータEのクラス名がそれぞれ登録されるとと
もに、クラス管理オブジェクト304の名前として、
“function−2”がクラス管理オブジェクトテ
ーブルに登録される。
【0104】クラスデータD及びクラスデータEがエー
ジェントクラスオブジェクト301に追加された後、
“function−3”という名前でクラスデータ
F、クラスデータG及びクラスデータHをエージェント
クラスオブジェクト301に追加する場合、クラスデー
タF、クラスデータG及びクラスデータHが共有クラス
データテーブル302に格納されるとともに、クラスデ
ータF、クラスデータG及びクラスデータHを管理する
クラス管理オブジェクト305が新たに生成される。
【0105】クラス管理オブジェクト305には、クラ
ス管理オブジェクト305が管理するクラスデータF、
クラスデータG及びクラスデータHのクラス名がそれぞ
れ登録されるとともに、クラス管理オブジェクト305
の名前として、“function−3”がクラス管理
オブジェクトテーブルに登録される。
【0106】このように、クラスデータにより構成され
る機能が、エージェントクラスオブジェクト301に追
加されるごとに、クラス管理オブジェクト303〜30
5を生成することにより、クラスデータにより構成され
る機能ごとに、プログラムの監視を行うことが可能とな
る。このため、プログラムが動作している場合にプログ
ラムのどの機能が使用されているのかを判別することが
可能となり、そのプログラムの一部の機能の削除や置換
をそのプログラムの動作中に行うことが可能となる。
【0107】また、クラス管理オブジェクト303〜3
05の名前“function−1”〜“functi
on−3”をクラス管理オブジェクトテーブルに登録し
ておくことにより、クラス管理オブジェクト303〜3
05の名前“function−1”〜“functi
on−3”を指定するだけで、プログラマがプログラム
に追加した機能を特定することが可能となり、プログラ
ムをカスタマイズする際の利便性を向上させることが可
能となる。
【0108】次に、本発明の一実施例に係わるアプリケ
ーションのカスタマイズ方法について説明する。図7
は、テンプレートのコード化の例を示す図である。
【0109】図7において、例えば、Eメールの着信通
知をスクリーニングするアプリケーションが、初期設定
ファイルを使ったテンプレート(型枠)形式で提供され
ているものとする。このテンプレートは、特定の発信者
からのメールの着信通知にスクリーニングをかけるため
のもので、初期設定メニュー81のフィールド欄83の
ホップアップメニュー82から“From”を選択し、
スクリーニングをかける発信者の名称をキーボードから
入力することにより、発信者の名称を内容欄84に設定
するようになっている。
【0110】一方、Eメール本文の中からキーワードを
検索してスクリーニングを行う場合、図7のテンプレー
トにより提供される機能を用いただけでは、このキーワ
ード検索を行うことは不可能である。このため、Eメー
ル自体のテキストをキーワード検索するプログラムコー
ドを外部から持ってくる。そして、図7のテンプレート
により提供されるEメールの着信通知の部分のプログラ
ムコードを、Eメール自体のテキストをキーワード検索
するプログラムコードと置換する。
【0111】ここで、このプログラムコードの置換を行
う際には、クラス管理オブジェクト24a〜24mが、
Eメールの着信通知の部分のプログラムコードの使用状
況を監視することにより、Eメールの着信通知の部分の
プログラムコードが実行されていない時に、プログラム
コードの置換を行わせることが可能となる。このため、
図7のテンプレートをカスタマイズする際に、図7のテ
ンプレート形式によるプログラムの動作を停止させるこ
となく、図7のテンプレート形式によるプログラムの機
能の一部を置換することが可能となる。
【0112】このように、テンプレートをコード化する
とともに、プログラムコードを機能ごとに監視すること
により、カスタマイズするプログラムを動作させなが
ら、構築するアプリケーションに必要なプログラムコー
ドを検索して置換することが可能となり、手元に備わっ
ているテンプレートに制約されることなく、アプリケー
ションのカスタマイズを柔軟に行うことが可能となる。
【0113】図8は、図3のコンピュータのシステム構
成例を示す図である。図8において、CPU61、RA
M62、ROM63、通信インターフェイス64、プリ
ンタ65、ディスプレイ66、キーボード67、マウス
68及びドライバ69が互いに接続され、ドライバ69
には、例えば、ハードディスク70、フロッピーディス
ク71、磁気テープ72、CD−ROMやDVD−RO
Mなどの光ディスク73、ICメモリカード74が接続
されている。
【0114】エージェントクラスは、ROM63、ハー
ドディスク70、フロッピーディスク71、磁気テープ
72、CD−ROMやDVD−ROMなどの光ディスク
73、ICメモリカード74などに格納され、エージェ
ントクラスからエージェントクラスオブジェクト22a
〜22nが起動されると、CPU61の制御により、エ
ージェントクラスオブジェクト22a〜22nがRAM
62上に生成される。ここで、エージェントクラスオブ
ジェクト22a〜22nに対する操作は、ディスプレイ
66に表示されるテンプレート形式での画面操作やキー
ボード入力により行うことができる。
【0115】なお、プログラムを通信インターフェイス
64を介して送受信することも可能であり、通信インタ
ーフェイス64と接続される通信ネットワークとして、
例えば、LAN(Local Area Networ
k)、WAN(Wide Area Networ
k)、インターネット、アナログ電話網、デジタル電話
網(ISDN:Integral Service D
igital Network)、PHS(パーソナル
ハンディシステム)などの無線通信網などを用いること
ができる。
【0116】図9は、図3の通信デーモン28の動作を
示すフローチャートである。図9において、メッセージ
受信待ちの状態で(ステップS1)、通信デーモン28
が、他のコンピュータからのメッセージをネットワーク
ソケットAPI29を介して受信すると、転送先のエー
ジェントクラスオブジェクト22a〜22nの名前“A
GENT−1”〜“AGENT−n”、メソッド名及び
引数をこのメッセージから取得し(ステップS2)、通
信スレッド27a〜27kを生成する(ステップS
3)。そして、他のコンピュータからの取得したデータ
を通信スレッド27a〜27kに渡す。
【0117】図10は、図3の通信スレッド27a〜2
7kの動作を示すフローチャートである。図10におい
て、通信スレッド27a〜27kが通信デーモン28か
ら生成されると(ステップS11)、通信デーモン28
により指定されたエージェントクラスオブジェクト22
a〜22nの名前“AGENT−1”〜“AGENT−
n”から、エージェントクラスオブジェクト22a〜2
2nを特定する(ステップS12)。
【0118】次に、通信スレッド27a〜27kは、特
定したエージェントクラスオブジェクト22a〜22n
に対し、通信デーモン28から渡された引数を設定して
外部公開メソッド26の呼び出しを行い(ステップS1
3)、エージェントクラスオブジェクト22a〜22n
から戻り値が返されるのを待つ(ステップS14)。
【0119】次に、エージェントクラスオブジェクト2
2a〜22nから外部公開メソッド26の戻り値が返さ
れたら、ネットワーク・ソケットAPI29を制御し
て、外部公開メソッド26を発行した他のコンピュータ
のエージェントクラスオブジェクトに戻り値を含むメッ
セージを返送し(ステップS15)、通信スレッド27
a〜27kを消滅させる(ステップS16)。
【0120】次に、エージェントクラスオブジェクト2
2a〜22nへのクラスデータの追加方法について説明
する。図11は、クラスデータをエージェントクラスオ
ブジェクトに追加した状態を示す図である。
【0121】図11において、例えば、“functi
on−1”という名前でクラスデータA、クラスデータ
B及びクラスデータCからなる機能をエージェントクラ
スオブジェクト101に追加する場合、クラスデータ
A、クラスデータB及びクラスデータCが共有クラスデ
ータテーブル104に格納されるとともに、クラスデー
タA、クラスデータB及びクラスデータCを管理するク
ラス管理オブジェクト103が生成され、クラス管理オ
ブジェクト103の名前として、“function−
1”がクラス管理オブジェクトテーブル102に登録さ
れる。そして、クラス管理オブジェクト103の名前
“function−1”に対応して、クラス管理オブ
ジェクト103を特定するポインタがクラス管理オブジ
ェクトテーブル102に生成される。
【0122】また、クラス管理オブジェクト103のク
ラス名リスト(class names)には、クラス
管理オブジェクト103が管理するクラスデータA、ク
ラスデータB及びクラスデータCのクラス名“A”、
“B”、“C”がそれぞれ登録され、削除フラグ(re
movable flag)がオフとされ、局所クラス
データテーブル(local classes)、置換
クラスデータ記憶領域(next classes)、
実行中スレッドIDリスト(running thre
ads)、参照オブジェクトリスト(referrin
g)及び被参照オブジェクトリスト(referre
d)が空(null)とされる。
【0123】図12は、参照関係のあるクラスデータを
エージェントクラスオブジェクトに追加した状態を示す
図である。図12において、例えば、“functio
n−1”という名前でクラスデータA、クラスデータB
及びクラスデータCからなる機能がエージェントクラス
オブジェクト111に追加され、クラスデータA、クラ
スデータB及びクラスデータCが共有クラスデータテー
ブル112に格納されるとともに、クラスデータA、ク
ラスデータB及びクラスデータCを管理するクラス管理
オブジェクト113が生成されている。
【0124】このクラス管理オブジェクト113のクラ
ス名リスト(class names)には、クラス管
理オブジェクト113が管理するクラスデータA、クラ
スデータB及びクラスデータCのクラス名“A”、
“B”、“C”がそれぞれ登録され、削除フラグ(re
movable flag)がオフとされ、局所クラス
データテーブル(local classes)、置換
クラスデータ記憶領域(next classes)、
実行中スレッドIDリスト(running thre
ads)及び参照オブジェクトリスト(referri
ng)が空(null)とされている。
【0125】また、クラス管理オブジェクト113の名
前として、“function−1”がクラス管理オブ
ジェクトテーブル112に登録され、クラス管理オブジ
ェクト113の名前“function−1”に対応し
て、クラス管理オブジェクト113を特定するポインタ
がクラス管理オブジェクトテーブル112に生成されて
いる。
【0126】この状態で、“function−3”と
いう名前でクラスデータF及びクラスデータGからなる
機能をエージェントクラスオブジェクト111に追加す
る場合、クラスデータF及びクラスデータGが共有クラ
スデータテーブル115に追加される。
【0127】また、クラスデータF及びクラスデータG
を管理するクラス管理オブジェクト114が新たに生成
され、クラス管理オブジェクト114の名前として、
“function−3”がクラス管理オブジェクトテ
ーブル112に登録され、クラス管理オブジェクト11
4の名前“function−3”に対応して、クラス
管理オブジェクト114を特定するポインタがクラス管
理オブジェクトテーブル112に新たに生成される。
【0128】さらに、クラス管理オブジェクト114の
クラス名リスト(class names)には、クラ
ス管理オブジェクト114が管理するクラスデータF及
びクラスデータGのクラス名“F”、“G”がそれぞれ
登録され、削除フラグ(removable fla
g)がオフとされ、局所クラスデータテーブル(loc
al classes)、置換クラスデータ記憶領域
(next classes)、実行中スレッドIDリ
スト(running threads)及び被参照オ
ブジェクトリスト(referred)が空(nul
l)とされる。
【0129】ここで、クラスデータFが、例えば、 のように、共有クラスデータテーブル115に既に追加
されているクラスデータAの存在を前提とする場合、ク
ラス管理オブジェクト114の参照オブジェクトリスト
(referring)には、参照先のクラスデータA
を管理しているクラス管理オブジェクト113の参照情
報が格納され、クラス管理オブジェクト113の被参照
オブジェクトリスト(referred)には、参照元
のクラスデータFを管理しているクラス管理オブジェク
ト114の被参照情報が格納される。
【0130】このため、名前“function−1”
を引数として、remove()メソッド26aやse
t()メソッド26dが呼び出され、クラスデータA、
クラスデータB及びクラスデータCからなる機能の削除
要求や置換要求がエージェントクラスオブジェクト11
1に対して行われた場合でも、クラス管理オブジェクト
113は、被参照オブジェクトリスト(referre
d)を調べることにより、クラスデータA、クラスデー
タB及びクラスデータCからなる機能の削除要求や置換
要求を保留することが可能となり、クラスデータAを参
照しているクラスデータFの機能が損なわれることを防
止することが可能となる。
【0131】図13は、重複するクラスデータのエージ
ェントクラスオブジェクト22a〜22nへの登録を拒
否する方法を示す図である。図13において、例えば、
“function−1”という名前でクラスデータ
A、クラスデータB及びクラスデータCからなる機能が
エージェントクラスオブジェクト121に追加され、ク
ラスデータA、クラスデータB及びクラスデータCが共
有クラスデータテーブル122に格納されるとともに、
クラスデータA、クラスデータB及びクラスデータCを
管理するクラス管理オブジェクト123が生成されてい
る。
【0132】このクラス管理オブジェクト123のクラ
ス名リスト(class names)には、クラス管
理オブジェクト123が管理するクラスデータA、クラ
スデータB及びクラスデータCのクラス名“A”、
“B”、“C”がそれぞれ登録され、削除フラグ(re
movable flag)がオフとされ、局所クラス
データテーブル(local classes)、置換
クラスデータ記憶領域(next classes)、
実行中スレッドIDリスト(running thre
ads)、参照オブジェクトリスト(referrin
g)及び被参照オブジェクトリスト(referre
d)が空(null)とされている。
【0133】また、クラス管理オブジェクト123の名
前として、“function−1”がクラス管理オブ
ジェクトテーブル122に登録され、クラス管理オブジ
ェクト123の名前“function−1”に対応し
て、クラス管理オブジェクト123を特定するポインタ
がクラス管理オブジェクトテーブル122に生成されて
いる。
【0134】この状態で、名前“function−
6”、クラスデータD、クラスデータE及びクラスデー
タFを引数として、エージェントクラスオブジェクト1
21のadd()メソッド125が呼ばれると、クラス
データDがエージェントクラスオブジェクト121の共
有クラスデータテーブル124に格納されていないこと
を確認してから、共有クラスデータテーブル124にク
ラスデータDを新たに格納する。
【0135】次に、クラスデータEが共有クラスデータ
テーブル124に格納されていないことを確認してか
ら、共有クラスデータテーブル124にクラスデータE
を新たに格納する。
【0136】次に、共有クラスデータテーブル124に
クラスデータAを格納する場合、クラスデータAは共有
クラスデータテーブル124に既に格納されていること
から、クラスデータD及びクラスデータEを共有クラス
データテーブル124から削除し、名前“functi
on−6”のクラスデータD、クラスデータE及びクラ
スデータAについては、共有クラスデータテーブル12
4に格納しないこととする。
【0137】このように、エージェントクラスオブジェ
クト121が、複数のクラスデータを同時に追加した
り、置換したりする要求を受ける時に、追加対象の一部
のクラス名とエージェントクラスオブジェクト121内
部に既に存在するクラス名との衝突がクラスデータの追
加処理の途中で発生した場合、共有クラスデータテーブ
ル124の追加対象のクラスデータを全て削除すること
により、共有クラスデータテーブル124の元の状態を
復元するようにしている。
【0138】図14は、クラスデータ追加処理を示すフ
ローチャートである。ここで、エージェントクラスオブ
ジェクト22a〜22nがクラスデータ追加処理を行う
場合、add()メソッド26bが呼び出される。
【0139】図14において、まず、エージェントクラ
スオブジェクト22a〜22nに対するアクセス権のチ
ェックが行われ(ステップS21)、アクセス権がなけ
れば処理が中断される。
【0140】次に、クラスデータの追加時に付ける名前
“function−1”〜“function−m”
及び追加するクラスデータをadd()メソッド26b
の引数から取得し(ステップS22)、クラスデータの
追加時に付ける名前“function−1”〜“fu
nction−m”をクラス管理オブジェクトテーブル
23から検索する(ステップS23)。
【0141】次に、クラスデータの追加時に付ける名前
“function−1”〜“function−m”
が、クラス管理オブジェクトテーブル23に既に存在す
るかどうかを調べ(ステップS24)、クラスデータの
追加時に付ける名前“function−1”〜“fu
nction−m”がクラス管理オブジェクトテーブル
23に既に存在する場合、エラーを通知して処理を中断
する(ステップS25)。
【0142】一方、クラスデータの追加時に付ける名前
“function−1”〜“function−m”
がクラス管理オブジェクトテーブル23に存在しない場
合、追加要求のあったクラスデータを共有クラスデータ
テーブル125に書き込む(ステップS26)。
【0143】次に、同一のクラス名が既に共有クラスデ
ータテーブル25に存在しているかどうかを判断し(ス
テップS27)、クラスデータの書込みの途中で、同一
のクラス名が既に共有クラスデータテーブル25に存在
していた場合、共有クラスデータテーブル25に格納し
た追加要求時のクラスデータを削除し、共有クラスデー
タテーブル25を元の状態に戻すとともに(ステップS
28)、エラーを通知して処理を終了する(ステップS
29)。
【0144】一方、クラスデータの書込みの途中で、同
一のクラス名が既に共有クラスデータテーブル25に存
在しなかったために、追加要求のあった全てのクラスデ
ータの追加に成功した場合、クラス管理オブジェクト2
4a〜24mを新たに生成する。そして、add()メ
ソッド26bの引数に設定されていたクラスデータの追
加時に付ける名前“function−1”〜“fun
ction−m”をクラス管理オブジェクトテーブル2
3に登録し、新たに生成されたクラス管理オブジェクト
24a〜24mをクラス管理オブジェクトテーブル23
に登録された名前“function−1”〜“fun
ction−m”で識別できるようにする(ステップS
30)。
【0145】次に、共有クラスデータテーブル25に追
加した全てのクラスデータのクラス名を、新たに生成さ
れたクラス管理オブジェクト24a〜24mのクラス名
リスト45に設定する。(ステップS31)。
【0146】次に、共有クラスデータテーブル25に追
加したクラスデータに関連するクラスを調べ、新たに生
成されたクラス管理オブジェクト24a〜24mの参照
オブジェクトリスト46に参照先情報を設定するととも
に(ステップS32)、参照先のクラス管理オブジェク
ト24a〜24mの被参照オブジェクトリスト47に参
照元情報を設定して(ステップS33)、処理を終了す
る。
【0147】次に、本発明の一実施例に係わるアクセス
権の制御方法について説明する。クラス置換時のアクセ
ス権チェック用の処理を、例えば、“checkSe
t”という名前で予約し、以下のようなクラスを、“c
heckSet”という名前でエージェントクラスオブ
ジェクト22a〜22nに追加するものとする。
【0148】 class CheckSet{ void start(RemoteAgent requester, String name, Ogject val) throws AccessException{ if(!requester.get(“name”). equals(“Admin”)) throw new AccessException(); } } そして、クラスデータの登録前に要求元のユーザ名、ホ
スト名、エージェントクラスオブジェクト22a〜22
nの名前“AGENT−1”〜“AGENT−n”など
からアクセス制御条件をチェックし、クラスデータに対
する処理要求を受け付けるかどうかを決定する。すなわ
ち、動作中のエージェントクラスオブジェクト22a〜
22nが、クラスデータの削除要求または置換要求を受
け付ける場合に、名前“checkSet”のクラスか
らオブジェクトを生成して実行する。
【0149】この場合、クラスデータ置換要求の要求元
のエージェントの名前が“Admin ”に一致しなけ
れば、置換処理は行われずに、例外が発生する。このア
クセス制御条件を記述したクラスは、エージェントクラ
スオブジェクト22a〜22n内の他のクラスと扱いが
同じであるため、運用中のアクセス制御条件の変更が可
能となる。すなわち、アクセス制御条件は、エージェン
トクラスオブジェクト22a〜22n内の置換可能なク
ラスデータとして管理され、動作中のエージェントクラ
スオブジェクト22a〜22nに対してアクセス制御条
件を変更することが可能となる。
【0150】このため、プログラムの追加・更新を遠隔
のコンピュータから行う場合においても、プログラムコ
ードの追加・更新のインタフェースのセキュリティを確
保することが可能となり、分散オブジェクトの保守・運
用に関わる管理者の負担を軽減することが可能となる。
【0151】図15は、アクセス権チェック処理を示す
フローチャートである。なお、このアクセス権チェック
処理は、図13のエージェントクラスオブジェクト22
a〜22nに対するクラスデータの追加処理、図16の
クラスデータの取得処理、図19のクラスデータの実行
処理、図21のクラスデータの削除処理、図24及び図
25のクラスデータの置換処理、図28のクラスデータ
の遠隔実行処理で呼び出される。
【0152】図15において、まず、アクセス権チェッ
クが開始されると(ステップS41)、アクセス制御条
件を記述したアクセス権チェックのクラスを共有クラス
データテーブル25から検索する(ステップS42)。
そして、共有クラスデータテーブル25内にアクセス権
チェックのクラスが存在するかどうかを調べ(ステップ
S43)、共有クラスデータテーブル25内にアクセス
権チェックのクラスが存在する場合、アクセス権チェッ
クのクラスからオブジェクトを生成し、実行する(ステ
ップS44)。
【0153】ここで、アクセス権チェックのクラスは、
処理の種類と引数、処理要求元のエージェントクラスオ
ブジェクト22a〜22nの名前“AGENT−1”〜
“AGENT−n”、処理要求元のユーザ名などを元に
ルールを記述したプログラムであり、エージェントクラ
スオブジェクト22a〜22nに追加される他のクラス
データと同様、エージェントクラスオブジェクト22a
〜22nの運用中にアクセス権チェックのクラスを置き
換えることを許容するものである。
【0154】このため、エージェントクラスオブジェク
ト22a〜22nごとにアクセス制御条件を容易に変更
することが可能となり、プログラムコードの追加・更新
のインタフェースのセキュリティを向上させることが可
能となる。
【0155】一方、共有クラスデータテーブル25内に
アクセス権チェックのクラスが存在しない場合、デフォ
ルトの条件でアクセス権のチェックを行う(ステップS
45)。
【0156】次に、アクセス権があるかどうかを判断し
(ステップS46)、アクセス権がない場合は、エラー
を通知して終了し(ステップS47)、アクセス権があ
る場合は、エージェントクラスオブジェクト22a〜2
2nに要求があった処理を受け入れる(ステップS4
8)。
【0157】次に、エージェントクラスオブジェクト2
2a〜22nからのクラスデータの取得方法について説
明する。図16は、クラスデータ取得処理を示すフロー
チャートである。
【0158】ここで、エージェントクラスオブジェクト
22a〜22nがクラスデータ取得処理を行う場合、g
et()メソッド26cが呼び出される。図16におい
て、まず、エージェントクラスオブジェクト22a〜2
2nに対するアクセス権のチェックが行われ(ステップ
S51)、アクセス権がなければ処理が中断される。
【0159】次に、実行対象のクラスデータを管理する
クラス管理オブジェクト24a〜24mの名前“fun
ction−1”〜“function−m”を、ge
t()メソッド26cの引数から取得し(ステップS5
2)、実行対象のクラスデータを管理するクラス管理オ
ブジェクト24a〜24mの名前“function−
1”〜“function−m”を、クラス管理オブジ
ェクトテーブル23から検索する(ステップS53)。
【0160】次に、実行対象のクラスデータを管理する
クラス管理オブジェクト24a〜24mの名前“fun
ction−1”〜“function−m”が、クラ
ス管理オブジェクトテーブル23に登録されているどう
かを調べ(ステップS54)、実行対象のクラスデータ
を管理するクラス管理オブジェクト24a〜24mの名
前“function−1”〜“function−
m”が、クラス管理オブジェクトテーブル23に登録さ
れていない場合、エラーを通知して処理を中断する(ス
テップS55)。一方、実行対象のクラスデータを管理
するクラス管理オブジェクト24a〜24mの名前“f
unction−1”〜“function−m”が、
クラス管理オブジェクトテーブル23に登録されている
場合、そのクラス管理オブジェクト24a〜24mのク
ラス名リスト45からクラス名を取得し、そのクラス名
のクラスデータを共有クラスデータテーブル25からコ
ピーして(ステップS56)、そのクラスデータを戻り
値として要求先に返す(ステップS57)。
【0161】次に、エージェントクラスオブジェクト2
2a〜22nでのクラスデータの実行方法について説明
する。図17は、クラスデータ実行中のエージェントク
ラスオブジェクトの状態を示す図である。
【0162】図17において、例えば、“functi
on−1”という名前でクラスデータA、クラスデータ
B及びクラスデータCからなる機能がエージェントクラ
スオブジェクト131に追加され、クラスデータA、ク
ラスデータB及びクラスデータCが共有クラスデータテ
ーブル135に格納されるとともに、クラスデータA、
クラスデータB及びクラスデータCを管理するクラス管
理オブジェクト133が生成されている。
【0163】このクラス管理オブジェクト133のクラ
ス名リスト(class names)には、クラス管
理オブジェクト133が管理するクラスデータA、クラ
スデータB及びクラスデータCのクラス名“A”、
“B”、“C”がそれぞれ登録され、削除フラグ(re
movable flag)がオフとされ、局所クラス
データテーブル(local classes)、置換
クラスデータ記憶領域(next classes)、
参照オブジェクトリスト(referring)及び被
参照オブジェクトリスト(referred)が空(n
ull)とされている。
【0164】また、クラス管理オブジェクト133の名
前として、“function−1”がクラス管理オブ
ジェクトテーブル132に登録され、クラス管理オブジ
ェクト132の名前“function−1”に対応し
て、クラス管理オブジェクト133を特定するポインタ
がクラス管理オブジェクトテーブル132に生成されて
いる。
【0165】エージェントクラスオブジェクト131に
対し、名前“function−1”を指定してクラス
データA、クラスデータB及びクラスデータCの実行要
求が行われると、クラスデータA、クラスデータB及び
クラスデータCからオブジェクトA、オブジェクトB及
びオブジェクトCが生成され、スレッド134が割り当
てられる。
【0166】実行中スレッドIDリスト(runnin
g threads)には、オブジェクトA、オブジェ
クトB及びオブジェクトCに割り当てられたスレッド1
34の識別情報が格納され、オブジェクトA、オブジェ
クトB及びオブジェクトCの実行が終了した時に、実行
中スレッドIDリスト(running thread
s)から、オブジェクトA、オブジェクトB及びオブジ
ェクトCに割り当てられたスレッド134の識別情報が
削除される。
【0167】このため、クラス管理オブジェクト133
は、実行中スレッドIDリスト(running th
reads)を参照することにより、自己が管理するク
ラスデータA、クラスデータB及びクラスデータCが使
用中かどうかを容易に判定することができる。
【0168】図18は、参照関係があるクラスデータ実
行中のエージェントクラスオブジェクトの状態を示す図
である。図18において、例えば、“function
−1”という名前でクラスデータA、クラスデータB及
びクラスデータCからなる機能がエージェントクラスオ
ブジェクト141に追加され、クラスデータA、クラス
データB及びクラスデータCが共有クラスデータテーブ
ル147に格納されるとともに、クラスデータA、クラ
スデータB及びクラスデータCを管理するクラス管理オ
ブジェクト143が生成されている。
【0169】このクラス管理オブジェクト143のクラ
ス名リスト(class names)には、クラス管
理オブジェクト143が管理するクラスデータA、クラ
スデータB及びクラスデータCのクラス名“A”、
“B”、“C”がそれぞれ登録され、削除フラグ(re
movable flag)がオフとされ、局所クラス
データテーブル(local classes)、置換
クラスデータ記憶領域(next classes)及
び参照オブジェクトリスト(referring)が空
(null)とされている。
【0170】また、クラス管理オブジェクト143の名
前として、“function−1”がクラス管理オブ
ジェクトテーブル142に登録され、クラス管理オブジ
ェクト143の名前“function−1”に対応し
て、クラス管理オブジェクト143を特定するポインタ
がクラス管理オブジェクトテーブル142に生成されて
いる。
【0171】さらに、“function−4”という
名前でクラスデータDからなる機能がエージェントクラ
スオブジェクト141に追加され、クラスデータDが共
有クラスデータテーブル147に格納されるとともに、
クラスデータDを管理するクラス管理オブジェクト14
5が生成されている。
【0172】このクラス管理オブジェクト145のクラ
ス名リスト(class names)には、クラス管
理オブジェクト145が管理するクラスデータDのクラ
ス名“D”が登録され、削除フラグ(removabl
e flag)がオフとされ、局所クラスデータテーブ
ル(local classes)、置換クラスデータ
記憶領域(next classes)及び被参照オブ
ジェクトリスト(referred)が空(null)
とされている。
【0173】また、クラス管理オブジェクト145の名
前として、“function−4”がクラス管理オブ
ジェクトテーブル142に登録され、クラス管理オブジ
ェクト145の名前“function−4”に対応し
て、クラス管理オブジェクト145を特定するポインタ
がクラス管理オブジェクトテーブル142に生成されて
いる。
【0174】ここで、クラスデータDが、 のように、例えば、クラスデータA及びクラスデータB
の存在を前提としている場合、クラス管理オブジェクト
145の参照オブジェクトリスト(referrin
g)には、参照先のクラスデータA及びクラスデータB
を管理しているクラス管理オブジェクト143の参照情
報が格納され、クラス管理オブジェクト143の被参照
オブジェクトリスト(referred)には、参照元
のクラスデータDを管理しているクラス管理オブジェク
ト145の被参照情報が格納される。この状態で、エー
ジェントクラスオブジェクト141に対し、名前“fu
nction−4”を指定してクラスデータDの実行要
求が行われると、クラスデータDからオブジェクトDが
生成され、スレッド144が割り当てられる。
【0175】クラス管理オブジェクト145の実行中ス
レッドIDリスト(runningthreads)に
は、オブジェクトDに割り当てられたスレッド144の
識別情報が格納されるとともに、クラスデータDが参照
しているクラスデータA及びクラスデータBを管理して
いるクラス管理オブジェクト143の実行中スレッドI
Dリスト(running threads)に対して
も、オブジェクトDに割り当てられたスレッド144の
識別情報が格納される。
【0176】そして、オブジェクトDの実行が終了した
時に、クラス管理オブジェクト143及びクラス管理オ
ブジェクト145の実行中スレッドIDリスト(run
ning threads)から、オブジェクトDに割
り当てられたスレッド144の識別情報が削除される。
【0177】このため、名前“function−4”
の機能が実行されている途中に、名前“functio
n−1”の機能の削除要求や追加要求がエージェントク
ラスオブジェクト141に対して行われた場合でも、ク
ラス管理オブジェクト143は、自己の実行中スレッド
IDリスト(running threads)を調べ
ることにより、名前“function−1”の機能の
削除要求や追加要求を保留することが可能となり、名前
“function−4”の機能が実行されている途中
に、名前“function−4”の機能の実行が不可
能になることを防止することができる。
【0178】図19は、クラスデータ実行処理を示すフ
ローチャートである。ここで、エージェントクラスオブ
ジェクト22a〜22nがクラスデータ実行処理を行う
場合、call()メソッド26fが呼び出される。
【0179】図19において、まず、エージェントクラ
スオブジェクト22a〜22nに対するアクセス権のチ
ェックが行われ(ステップS61)、アクセス権がなけ
れば処理が中断される。
【0180】次に、実行対象のクラスデータを管理する
クラス管理オブジェクト24a〜24mの名前“fun
ction−1”〜“function−m”をcal
l()メソッド26fの引数から取得し(ステップS6
2)、実行対象のクラスデータを管理するクラス管理オ
ブジェクト24a〜24mの名前“function−
1”〜“function−m”をクラス管理オブジェ
クトテーブル23から検索する(ステップS63)。
【0181】次に、実行対象のクラスデータを管理する
クラス管理オブジェクト24a〜24mの名前“fun
ction−1”〜“function−m”が、クラ
ス管理オブジェクトテーブル23に登録されているどう
かを調べ(ステップS64)、実行対象のクラスデータ
を管理するクラス管理オブジェクト24a〜24mの名
前“function−1”〜“function−
m”が、クラス管理オブジェクトテーブル23に登録さ
れていない場合、エラーを通知して処理を中断する(ス
テップS65)。
【0182】一方、実行対象のクラスデータを管理する
クラス管理オブジェクト24a〜24mの名前“fun
ction−1”〜“function−m”が、クラ
ス管理オブジェクトテーブル23に登録されている場
合、このクラス管理オブジェクト24a〜24mの実行
中スレッドIDリスト44に実行中のスレッドIDを追
加するとともに、このクラス管理オブジェクト24a〜
24mの参照オブジェクトリスト46で示されるクラス
管理オブジェクト24a〜24mの実行中スレッドID
リスト44に実行中のスレッドIDを追加する(ステッ
プS66)。
【0183】次に、実行対象のクラスデータからオブジ
ェクトを生成して処理を実行し(ステップS67)、処
理が終了するのを待つ(ステップS68)。次に、処理
が終わったら、このクラス管理オブジェクト24a〜2
4mの実行中スレッドIDリスト44から実行中のスレ
ッドIDを削除するとともに、このクラス管理オブジェ
クト24a〜24mの参照オブジェクトリスト46で示
されるクラス管理オブジェクト24a〜24mの実行中
スレッドIDリスト44から実行中のスレッドIDを削
除する(ステップS69)。
【0184】次に、実行中スレッドIDリスト44が空
かどうかを調べ(ステップS70)、実行中スレッドI
Dリスト44が空でない場合、実行処理を終了し(ステ
ップS71)、実行中スレッドIDリスト44が空の場
合、削除フラグ42がオンかどうかを調べる(ステップ
S72)。削除フラグ42がオンの場合、削除処理が予
約されているため、図21の削除処理を呼び出した後
(ステップS73)、実行処理を終了する(ステップS
74)。
【0185】一方、削除フラグ42がオフの場合、置換
クラスデータ記憶領域43が空かどうかを調べ(ステッ
プS75)、置換クラスデータ記憶領域43が空の場
合、実行処理を終了し(ステップS76)、置換クラス
データ記憶領域43が空でない場合、置換処理が予約さ
れているため、置換クラスデータ記憶領域43に記憶さ
れているクラスデータを引数にして、図24及び図25
の置換処理を呼び出した後(ステップS77)、実行処
理を終了する。
【0186】このように、動作中のエージェントクラス
オブジェクト22a〜22nがクラスデータの削除要求
または置換要求を受け付ける場合に、クラス管理オブジ
ェクト24a〜24mが各クラスデータの使用状態を監
視することにより、削除対象または置換対象のクラスデ
ータが利用されない状態になるまで、そのクラスデータ
の削除または置換を延期することが可能となり、動作中
のエージェントクラスオブジェクト22a〜22nを途
中で停止させることなく、クラスデータの削除要求や置
換要求を行うことが可能となる。
【0187】なお、動作中のエージェントクラスオブジ
ェクト22a〜22nにクラスデータの削除要求または
置換要求が行われた場合、削除対象または置換対象のク
ラスデータを使用中のオブジェクトに対して、中止要求
の発行し、そのオブジェクトが応答した後にクラスデー
タの削除を行うようにしてもよい。
【0188】次に、エージェントクラスオブジェクト2
2a〜22nからのクラスデータの削除方法について説
明する。図20は、クラスデータ実行中に削除要求があ
った場合のエージェントクラスオブジェクトの状態を示
す図である。
【0189】図20において、例えば、“functi
on−1”という名前でクラスデータA、クラスデータ
B及びクラスデータCからなる機能がエージェントクラ
スオブジェクト151に追加され、クラスデータA、ク
ラスデータB及びクラスデータCが共有クラスデータテ
ーブル155に格納されるとともに、クラスデータA、
クラスデータB及びクラスデータCを管理するクラス管
理オブジェクト153が生成されている。
【0190】このクラス管理オブジェクト153のクラ
ス名リスト(class names)には、クラス管
理オブジェクト153が管理するクラスデータA、クラ
スデータB及びクラスデータCのクラス名“A”、
“B”、“C”がそれぞれ登録され、局所クラスデータ
テーブル(local classes)、置換クラス
データ記憶領域(next classes)、参照オ
ブジェクトリスト(referring)及び被参照オ
ブジェクトリスト(referred)が空(nul
l)とされている。
【0191】また、クラス管理オブジェクト153の名
前として、“function−1”がクラス管理オブ
ジェクトテーブル152に登録され、クラス管理オブジ
ェクト152の名前“function−1”に対応し
て、クラス管理オブジェクト153を特定するポインタ
がクラス管理オブジェクトテーブル152に生成されて
いる。
【0192】さらに、名前“function−1”の
機能が実行されている場合、クラスデータA、クラスデ
ータB及びクラスデータCからオブジェクトA、オブジ
ェクトB及びオブジェクトCが生成され、スレッド15
4が割り当てられるとともに、実行中スレッドIDリス
ト(running threads)には、オブジェ
クトA、オブジェクトB及びオブジェクトCに割り当て
られたスレッド154の識別情報が格納される。
【0193】この状態で、名前“function−
1”が指定され、クラスデータA、クラスデータB及び
クラスデータCに対する削除要求が行われると、クラス
管理オブジェクト153は、実行中スレッドIDリスト
(running threads)を参照し、クラス
データA、クラスデータB及びクラスデータCの使用状
況を確認する。
【0194】この場合、 実行中スレッドIDリスト
(running threads)には、スレッド1
54の識別情報が格納されているので、クラスデータ
A、クラスデータB及びクラスデータCは使用中である
ことを認識し、クラスデータA、クラスデータB及びク
ラスデータCに対する削除を保留するするとともに、削
除フラグ(removable flag)をオンとし
て、クラスデータA、クラスデータB及びクラスデータ
Cに対する削除要求があったことを記憶する。
【0195】名前“function−1”の機能の実
行が終了すると、実行中スレッドIDリスト(runn
ing threads)からスレッド154の識別情
報を削除し、クラス管理オブジェクト153は、削除フ
ラグ(removableflag)の状態を参照する
ことにより、クラスデータA、クラスデータB及びクラ
スデータCに対する削除要求があっかどうかを確認す
る。
【0196】この場合、削除フラグ(removabl
e flag)はオンとなっているので、この時点で安
全にクラスデータA、クラスデータB及びクラスデータ
Cを削除する。
【0197】なお、強制的な削除要求であった場合は、
実行中の名前“function−1”の機能を途中で
停止して、クラスデータA、クラスデータB及びクラス
データCを直ちに削除するようにしてもよい。
【0198】図21は、クラスデータ削除処理を示すフ
ローチャートである。ここで、エージェントクラスオブ
ジェクト22a〜22nがクラスデータ削除処理を行う
場合、remove()メソッド26aが呼び出され
る。
【0199】図21において、まず、エージェントクラ
スオブジェクト22a〜22nに対するアクセス権のチ
ェックが行われ(ステップS81)、アクセス権がなけ
れば処理が中断される。
【0200】次に、削除対象のクラスデータを管理する
クラス管理オブジェクト24a〜24mの名前“fun
ction−1”〜“function−m”を、re
move()メソッド26aの引数から取得し(ステッ
プS82)、削除対象のクラスデータを管理するクラス
管理オブジェクト24a〜24mの名前“functi
on−1”〜“function−m”を、クラス管理
オブジェクトテーブル23から検索する(ステップS8
3)。
【0201】次に、削除対象のクラスデータを管理する
クラス管理オブジェクト24a〜24mの名前“fun
ction−1”〜“function−m”が、クラ
ス管理オブジェクトテーブル23に登録されているどう
かを調べ(ステップS84)、削除対象のクラスデータ
を管理するクラス管理オブジェクト24a〜24mの名
前“function−1”〜“function−
m”が、クラス管理オブジェクトテーブル23に登録さ
れていない場合、エラーを通知して処理を中断する(ス
テップS85)。
【0202】一方、削除対象のクラスデータを管理する
クラス管理オブジェクト24a〜24mの名前“fun
ction−1”〜“function−m”が、クラ
ス管理オブジェクトテーブル23に登録されている場
合、実行中スレッドIDリスト44が空かどうかを調べ
(ステップS86)、実行中スレッドIDリスト44が
空でない場合、クラス管理オブジェクト24a〜24m
の削除フラグ42をオンにして(ステップS87)、削
除処理を終了する(ステップS88)。
【0203】一方、実行中スレッドIDリスト44が空
の場合、被参照オブジェクトリスト47が空かどうかを
調べ(ステップS89)、被参照オブジェクトリスト4
7が空でなければ、エラーを通知して削除処理を中止す
る(ステップS90)。
【0204】一方、被参照オブジェクトリスト47が空
の場合、参照オブジェクトリスト46が空かどうかを調
べ(ステップS91)、参照オブジェクトリスト46が
空でなければ、参照オブジェクトリスト46で示される
各々のクラス管理オブジェクト24a〜24mの被参照
オブジェクトリスト47から、このクラス管理オブジェ
クト24a〜24mの被参照情報を削除する(ステップ
S92)。
【0205】一方、参照オブジェクトリスト46が空の
場合、クラス管理オブジェクト24a〜24mは、クラ
ス名リスト45を参照することにより、共有クラスデー
タテーブル25から削除するクラスデータを特定し、そ
のクラス管理オブジェクト24a〜24mのクラス名リ
スト45に登録されているクラス名のクラスデータを共
有クラスデータテーブルから削除する(ステップS9
3)。
【0206】次に、クラス管理オブジェクトテーブル2
3から、このクラス管理オブジェクト24a〜24mの
名前“function−1”〜“function−
m”を削除して(ステップS94)、削除処理を終了す
る。
【0207】次に、エージェントクラスオブジェクト2
2a〜22nのクラスデータの置換方法について説明す
る。図22は、クラスデータ実行中に置換要求があった
場合のエージェントクラスオブジェクトの状態を示す図
である。ここでは、名前“function−1”のク
ラスデータA、クラスデータB及びクラスデータCから
なる機能を、名前“function−2”のクラスデ
ータD及びクラスデータEからなる機能で置き換える例
を示している。
【0208】図22において、例えば、“functi
on−1”という名前でクラスデータA、クラスデータ
B及びクラスデータCからなる機能がエージェントクラ
スオブジェクト161に追加され、クラスデータA、ク
ラスデータB及びクラスデータCが共有クラスデータテ
ーブル165に格納されるとともに、クラスデータA、
クラスデータB及びクラスデータCを管理するクラス管
理オブジェクト163が生成されている。
【0209】このクラス管理オブジェクト163のクラ
ス名リスト(class names)には、クラス管
理オブジェクト163が管理するクラスデータA、クラ
スデータB及びクラスデータCのクラス名“A”、
“B”、“C”がそれぞれ登録され、削除フラグ(re
movable flag)がオフに設定されるととも
に、局所クラスデータテーブル(local clas
ses)、参照オブジェクトリスト(referrin
g)及び被参照オブジェクトリスト(referre
d)が空(null)とされている。また、クラス管理
オブジェクト163の名前として、“function
−1”がクラス管理オブジェクトテーブル162に登録
され、クラス管理オブジェクト162の名前“func
tion−1”に対応して、クラス管理オブジェクト1
63を特定するポインタがクラス管理オブジェクトテー
ブル162に生成されている。
【0210】さらに、名前“function−1”の
機能が実行されている場合、クラスデータA、クラスデ
ータB及びクラスデータCからオブジェクトA、オブジ
ェクトB及びオブジェクトCが生成され、スレッド16
4が割り当てられるとともに、実行中スレッドIDリス
ト(running threads)には、オブジェ
クトA、オブジェクトB及びオブジェクトCに割り当て
られたスレッド164の識別情報が格納される。
【0211】この状態で、名前“function−
1”が指定され、クラスデータA、クラスデータB及び
クラスデータCに対する置換要求が行われると、クラス
管理オブジェクト163は、実行中スレッドIDリスト
(running threads)を参照し、クラス
データA、クラスデータB及びクラスデータCの使用状
況を確認する。
【0212】この場合、実行中スレッドIDリスト(r
unning threads)には、スレッド164
の識別情報が格納されているので、クラスデータA、ク
ラスデータB及びクラスデータCは使用中であることを
認識し、クラスデータA、クラスデータB及びクラスデ
ータCに対する置換を保留するするとともに、クラスデ
ータA、クラスデータB及びクラスデータCと置換され
るクラスデータD及びクラスデータEを置換クラスデー
タ記憶領域(next classes)に記憶する。
【0213】名前“function−1”の機能の実
行が終了すると、実行中スレッドIDリスト(runn
ing threads)からスレッド164の識別情
報を削除し、クラス管理オブジェクト163は、置換ク
ラスデータ記憶領域(next classes)の状
態を参照することにより、クラスデータA、クラスデー
タB及びクラスデータCに対する置換要求があっかどう
かを確認する。
【0214】この場合、置換クラスデータ記憶領域(n
ext classes)には、クラスデータD及びク
ラスデータEが格納されていることから、この時点で安
全にクラスデータA、クラスデータB及びクラスデータ
CをクラスデータD及びクラスデータEで置換する。
【0215】なお、強制的な削除要求であった場合は、
実行中の名前“function−1”の機能を途中で
停止して、クラスデータA、クラスデータB及びクラス
データCを直ちに置換するようにしてもよい。
【0216】図23は、クラスデータの置換後のエージ
ェントクラスオブジェクトの状態を示す図である。図2
3において、クラスデータA、クラスデータB及びクラ
スデータCがクラスデータD及びクラスデータEで置き
換えられた場合、図22のクラス管理オブジェクト16
3の置換クラスデータ記憶領域(next class
es)からクラスデータD及びクラスデータEが削除さ
れるとともに、図22のクラス名リスト(class
names)に登録されていたクラスデータA、クラス
データB及びクラスデータCのクラス名“A”、
“B”、“C”が、クラスデータD及びクラスデータE
のクラス名“D”、“E”で置き換えられ、図22のク
ラス管理オブジェクト163は、図23のクラス管理オ
ブジェクト173に更新される。
【0217】また、図22の共有クラスデータテーブル
165に格納されていたクラスデータA、クラスデータ
B及びクラスデータCは、クラスデータD及びクラスデ
ータEで置き換えられ、図22の共有クラスデータテー
ブル165は、図23の共有クラスデータテーブル17
4に更新される。
【0218】さらに、図22のクラス管理オブジェクト
テーブル162に登録されていたクラスデータA、クラ
スデータB及びクラスデータCの名前“functio
n−1”は、クラスデータD及びクラスデータEの名前
“function−2”で置き換えられ、図22のク
ラス管理オブジェクトテーブル162は、図23のクラ
ス管理オブジェクトテーブル172に更新される。
【0219】図24及び図25は、クラスデータ置換処
理を示すフローチャートである。ここで、エージェント
クラスオブジェクト22a〜22nがクラスデータ削除
処理を行う場合、set()メソッド26dが呼び出さ
れる。
【0220】図24において、まず、エージェントクラ
スオブジェクト22a〜22nに対するアクセス権のチ
ェックが行われ(ステップS101)、アクセス権がな
ければ処理が中断される。
【0221】次に、置換対象のクラスデータを管理する
クラス管理オブジェクト24a〜24mの名前“fun
ction−1”〜“function−m”及び置換
する新たなクラスデータを、set()メソッド26d
の引数から取得し(ステップS102)、置換対象のク
ラスデータを管理するクラス管理オブジェクト24a〜
24mの名前“function−1”〜“funct
ion−m”を、クラス管理オブジェクトテーブル23
から検索する(ステップS103)。
【0222】次に、置換対象のクラスデータを管理する
クラス管理オブジェクト24a〜24mの名前“fun
ction−1”〜“function−m”が、クラ
ス管理オブジェクトテーブル23に登録されているどう
かを調べ(ステップS104)、置換対象のクラスデー
タを管理するクラス管理オブジェクト24a〜24mの
名前“function−1”〜“function−
m”が、クラス管理オブジェクトテーブル23に登録さ
れていない場合、エラーを通知して処理を中断する(ス
テップS105)。
【0223】一方、置換対象のクラスデータを管理する
クラス管理オブジェクト24a〜24mの名前“fun
ction−1”〜“function−m”が、クラ
ス管理オブジェクトテーブル23に登録されている場
合、実行中スレッドIDリスト44が空かどうかを調べ
(ステップS106)、実行中スレッドIDリスト44
が空でない場合、set()メソッド26dの引数から
取得したクラスデータを置換クラスデータ記憶領域43
に設定し(ステップS107)、置換処理を終了する
(ステップS108)。
【0224】一方、実行中スレッドIDリスト44が空
の場合、被参照オブジェクトリスト47が空かどうかを
調べ(ステップS109)、被参照オブジェクトリスト
47が空でなければ、エラーを通知して置換処理を中止
する(ステップS110)。
【0225】一方、被参照オブジェクトリスト47が空
の場合、参照オブジェクトリスト46が空かどうかを調
べ(ステップS111)、参照オブジェクトリスト46
が空でなければ、参照オブジェクトリスト46で示され
る各々のクラス管理オブジェクト24a〜24mの被参
照オブジェクトリスト47から、このクラス管理オブジ
ェクト24a〜24mの被参照情報を削除する(ステッ
プS112)。
【0226】一方、参照オブジェクトリスト46が空の
場合、クラス管理オブジェクト24a〜24mは、クラ
ス名リスト45を参照することにより、共有クラスデー
タテーブル25から削除するクラスデータを特定し、そ
のクラス管理オブジェクト24a〜24mのクラス名リ
スト45に登録されているクラス名のクラスデータを共
有クラスデータテーブルから削除する(ステップS11
3)。
【0227】次に、図25に示すように、置換要求のあ
った新たなクラスデータを共有クラスデータテーブル1
25に書き込む(ステップS114)。次に、同一のク
ラス名が既に共有クラスデータテーブル25に存在して
いるかどうかを判断し(ステップS115)、クラスデ
ータの書込みの途中で、同一のクラス名が既に共有クラ
スデータテーブル25に存在していた場合、共有クラス
データテーブル25に新たに格納したクラスデータを削
除し、共有クラスデータテーブル25を元の状態に戻す
とともに(ステップS116)、エラーを通知して処理
を終了する(ステップS117)。
【0228】一方、同一のクラス名が既に共有クラスデ
ータテーブル25に存在していない場合、共有クラスデ
ータテーブル25に新たに追加した全てのクラスデータ
のクラス名を、クラス管理オブジェクト24a〜24m
のクラス名リスト45に設定する(ステップS11
8)。
【0229】次に、共有クラスデータテーブル25に追
加したクラスデータに関連するクラスを調べることによ
り、クラス管理オブジェクト24a〜24mの参照オブ
ジェクトリスト46に参照先情報を設定するとともに
(ステップS119)、参照先のクラス管理オブジェク
ト24a〜24mの被参照オブジェクトリスト47に参
照元情報を設定して(ステップS120)、処理を終了
する。
【0230】次に、エージェントクラスオブジェクト2
2a〜22nでのクラスデータの遠隔実行方法について
説明する。図26は、クラスデータの遠隔実行時のエー
ジェントクラスオブジェクトの状態を示す図である。
【0231】図26において、例えば、“functi
on−1”という名前でクラスデータA、クラスデータ
B及びクラスデータCからなる機能がエージェントクラ
スオブジェクト181に追加され、クラスデータA、ク
ラスデータB及びクラスデータCが共有クラスデータテ
ーブル185に格納されるとともに、クラスデータA、
クラスデータB及びクラスデータCを管理するクラス管
理オブジェクト183が生成されている。
【0232】このクラス管理オブジェクト183のクラ
ス名リスト(class names)には、クラス管
理オブジェクト183が管理するクラスデータA、クラ
スデータB及びクラスデータCのクラス名“A”、
“B”、“C”がそれぞれ登録され、削除フラグ(re
movable flag)がオフとされ、局所クラス
データテーブル(local classes)、置換
クラスデータ記憶領域(next classes)、
実行中スレッドIDリスト(running thre
ads)、参照オブジェクトリスト(referrin
g)及び被参照オブジェクトリスト(referre
d)が空(null)とされている。
【0233】また、クラス管理オブジェクト183の名
前として、“function−1”がクラス管理オブ
ジェクトテーブル182に登録され、クラス管理オブジ
ェクト182の名前“function−1”に対応し
て、クラス管理オブジェクト183を特定するポインタ
がクラス管理オブジェクトテーブル182に生成されて
いる。
【0234】このエージェントクラスオブジェクト18
1に対し、クラスデータD、クラスデータE及びクラス
データAを引数として、eval()メソッド186が
呼ばれた場合、クラス管理オブジェクト184が新たに
生成される。そして、クラスデータD、クラスデータE
及びクラスデータAは、このクラス管理オブジェクト1
84の局所クラスデータテーブル(local cla
sses)に格納されるとともに、クラス管理オブジェ
クト184のクラス名リスト(class name
s)には、クラスデータD、クラスデータE及びクラス
データAのクラス名“D”、“E”、“A”がそれぞれ
格納される。
【0235】クラス管理オブジェクト184の削除フラ
グ(removable flag)がオフとされ、置
換クラスデータ記憶領域(next classe
s)、実行中スレッドIDリスト(running t
hreads)、参照オブジェクトリスト(refer
ring)及び被参照オブジェクトリスト(refer
red)が空(null)とされる。
【0236】このように、エージェントクラスオブジェ
クト181に対し、クラスデータD、クラスデータE及
びクラスデータAからなる機能を追加する場合、クラス
データD、クラスデータE及びクラスデータAを、この
クラス管理オブジェクト184の局所クラスデータテー
ブル(local classes)に格納することに
より、共有クラスデータテーブル185にクラスデータ
Aが登録されている場合でも、共有クラスデータテーブ
ル185での同一クラス名“A”の衝突を回避すること
が可能となり、クラスデータD、クラスデータE及びク
ラスデータAからなる機能を実行させることが可能とな
る。
【0237】このクラスデータD、クラスデータE及び
クラスデータAを、クラス管理オブジェクト184の局
所クラスデータテーブル(local classe
s)に格納する方法は、クラスデータD、クラスデータ
E及びクラスデータAからなる機能の使用頻度が少ない
場合や、実行されるクラスデータが頻繁に変更される場
合に有効である。
【0238】図27は、シリアライズデータの遠隔実行
時のエージェントクラスオブジェクトの状態を示す図で
ある。図27において、エージェントクラスオブジェク
ト191の共有クラスデータテーブル192にはクラス
データDが格納され、クラスデータDはその属性とし
て、クラスStringのオブジェクトとクラスInt
egerのオブジェクトとを持つように定義されてい
る。また、エージェントクラスオブジェクト191に
は、クラスデータDのインスタンス193が生成されて
いる。
【0239】このエージェントクラスオブジェクト19
1が、クラスデータD及びクラスデータDのインスタン
ス193を引数として、エージェントクラスオブジェク
ト194のeval()メソッド195を呼び出す場
合、エージェントクラスオブジェクト191は、クラス
データDのインスタンス193をシリアライズ化する。
【0240】そして、クラスデータD及びインスタンス
193のシリアライズデータをeval()メソッド1
95の引数に設定し、「“D”{Strings;In
tegeri;}、“D”,String,“19:5
0AM”,Integer,“19:50AM”」を送
る。
【0241】エージェントクラスオブジェクト194
は、eval()メソッド195が呼び出されると、ク
ラス管理オブジェクト196を生成し、クラスデータD
の内容{Strings;Integeri;}をクラ
ス管理オブジェクト196の局所クラスデータテーブル
(local classes)に格納するとともに、
クラス管理オブジェクト196のクラス名リスト(cl
ass names)にクラスデータDのクラス名
“D”を格納する。
【0242】また、クラス管理オブジェクト196の削
除フラグ(removable flag)がオフとさ
れ、置換クラスデータ記憶領域(next class
es)、実行中スレッドIDリスト(running
threads)、参照オブジェクトリスト(refe
rring)及び被参照オブジェクトリスト(refe
rred)が空(null)とされる。
【0243】さらに、クラスデータD及びインスタンス
193のシリアライズデータに基づいて、エージェント
クラスオブジェクト191のインスタンス193を復元
したインスタンス197を生成し、クラスデータD及び
インスタンス197の実行を行う。
【0244】このように、エージェントクラスオブジェ
クト194は、クラスデータ及びそのクラスデータから
生成されたオブジェクトのシリアライズデータを他のエ
ージェントクラスオブジェクト191から受信した場
合、受信したクラスデータから新たにオブジェクトを生
成するのではなく、受信したクラスデータとシリアライ
ズデータから送信元のオブジェクトの状態を復元して遠
隔実行を行うことにより、他のエージェントクラスオブ
ジェクト191のインスタンス193の実行が可能とな
る。
【0245】図28は、遠隔実行処理を示すフローチャ
ートである。エージェントクラスオブジェクト22a〜
22nがクラスデータ遠隔実行処理を行う場合、eva
l()メソッド26eが呼び出される。
【0246】図28において、まず、エージェントクラ
スオブジェクト22a〜22nに対するアクセス権のチ
ェックが行われ(ステップS130)、アクセス権がな
ければ処理が中断される。
【0247】次に、eval()メソッド26eの引数
からクラスデータとシリアライズ化されたオブジェクト
データを取得し(ステップS131)、このクラスデー
タを管理するクラス管理オブジェクト24a〜24mを
新たに生成するとともに、このクラス管理オブジェクト
24a〜24mの局所クラスデータテーブル41に引数
のクラスデータを設定する(ステップS132)。
【0248】次に、局所クラスデータテーブル41に追
加したクラスデータに関連するクラスを調べることによ
り、そのクラス管理オブジェクト24a〜24mの参照
オブジェクトリスト46に参照先情報を設定するととも
に(ステップS133)、参照先のクラス管理オブジェ
クト24a〜24mの被参照オブジェクトリスト47に
参照元情報を設定する(ステップS134)。
【0249】次に、このクラス管理オブジェクト24a
〜24mの実行中スレッドIDリスト44に実行中のス
レッドIDを追加するとともに、このクラス管理オブジ
ェクト24a〜24mの参照オブジェクトリスト46で
示されるクラス管理オブジェクト24a〜24mの実行
中スレッドIDリスト44に実行中のスレッドIDを追
加する(ステップS135)。
【0250】次に、eval()メソッド26eの引数
にシリアライズ化されたオブジェクトデータがあるかど
うかを調べ(ステップS136)、eval()メソッ
ド26eの引数にシリアライズ化されたオブジェクトデ
ータがない場合、実行対象のクラスデータからオブジェ
クトを生成して処理を実行し(ステップS137)、そ
のオブジェクトの処理が終了するのを待つ(ステップS
139)。
【0251】一方、eval()メソッド26eの引数
にシリアライズ化されたオブジェクトデータがある場
合、シリアライズ化されたオブジェクトデータ及び局所
クラスデータテーブル41のクラスデータを用いてその
オブジェクトを復元し、そのオブジェクトの処理を実行
する(ステップS138)。
【0252】次に、処理が終わったら、このクラス管理
オブジェクト24a〜24mの実行中スレッドIDリス
ト44から実行中のスレッドIDを削除するとともに、
このクラス管理オブジェクト24a〜24mの参照オブ
ジェクトリスト46で示されるクラス管理オブジェクト
24a〜24mの実行中スレッドIDリスト44から実
行中のスレッドIDを削除する(ステップS140)。
【0253】次に、参照オブジェクトリスト46で示さ
れる各々のクラス管理オブジェクト24a〜24mの被
参照オブジェクトリスト47から、このクラス管理オブ
ジェクト24a〜24mの被参照情報を削除し(ステッ
プS141)、実行対象のクラスデータを管理していた
クラス管理オブジェクト24a〜24mを削除する(ス
テップS142)。
【0254】図29は、参照関係を有するクラスデータ
の遠隔実行時のエージェントクラスオブジェクトの状態
を示す図である。図29において、例えば、“func
tion−1”という名前でクラスデータA、クラスデ
ータB及びクラスデータCからなる機能がエージェント
クラスオブジェクト201に追加され、クラスデータ
A、クラスデータB及びクラスデータCが共有クラスデ
ータテーブル206に格納されるとともに、クラスデー
タA、クラスデータB及びクラスデータCを管理するク
ラス管理オブジェクト203が生成されている。
【0255】このクラス管理オブジェクト203のクラ
ス名リスト(class names)には、クラス管
理オブジェクト203が管理するクラスデータA、クラ
スデータB及びクラスデータCのクラス名“A”、
“B”、“C”がそれぞれ登録され、削除フラグ(re
movable flag)がオフとされ、局所クラス
データテーブル(local classes)、置換
クラスデータ記憶領域(next classes)、
実行中スレッドIDリスト(running thre
ads)及び参照オブジェクトリスト(referri
ng)が空(null)とされている。
【0256】また、クラス管理オブジェクト203の名
前として、“function−1”がクラス管理オブ
ジェクトテーブル202に登録され、クラス管理オブジ
ェクト203の名前“function−1”に対応し
て、クラス管理オブジェクト203を特定するポインタ
がクラス管理オブジェクトテーブル202に生成されて
いる。
【0257】さらに、“function−4”という
名前でクラスデータDからなる機能がエージェントクラ
スオブジェクト201に追加され、クラスデータDが共
有クラスデータテーブル206に格納されるとともに、
クラスデータDを管理するクラス管理オブジェクト20
4が生成されている。
【0258】このクラス管理オブジェクト204のクラ
ス名リスト(class names)には、クラス管
理オブジェクト204が管理するクラスデータDのクラ
ス名“D”が登録され、削除フラグ(removabl
e flag)がオフとされ、局所クラスデータテーブ
ル(local classes)、置換クラスデータ
記憶領域(next classes)、実行中スレッ
ドIDリスト(running threads)及び
被参照オブジェクトリスト(referrde)が空
(null)とされている。
【0259】また、クラス管理オブジェクト204の名
前として、“function−4”がクラス管理オブ
ジェクトテーブル202に登録され、クラス管理オブジ
ェクト204の名前“function−4”に対応し
て、クラス管理オブジェクト204を特定するポインタ
がクラス管理オブジェクトテーブル202に生成されて
いる。
【0260】ここで、クラスデータDが、 のように、例えば、クラスデータA及びクラスデータB
の存在を前提としている場合、クラス管理オブジェクト
204の参照オブジェクトリスト(referrin
g)には、参照先のクラスデータA及びクラスデータB
を管理しているクラス管理オブジェクト203の参照情
報が格納され、クラス管理オブジェクト203の被参照
オブジェクトリスト(referred)には、参照元
のクラスデータDを管理しているクラス管理オブジェク
ト204の被参照情報が格納される。
【0261】なお、クラスの呼び出し関係は、例えば、
Java言語の場合、クラスのメソッドであるgetD
eclaredClasses()を用いることにより
調べることができる。
【0262】この状態で、エージェントクラスオブジェ
クト201が、名前“function−4”を指定し
てクラスデータDの遠隔実行の要求を行うと、スレッド
205が生成され、クラスデータDを送るとともに、ク
ラス管理オブジェクト204の参照オブジェクトリスト
(referring)により示されるクラス管理オブ
ジェクト203が管理しているクラスデータA、クラス
データB及びクラスデータCも一緒に送る。
【0263】ここで、クラス管理オブジェクト203が
管理しているクラスデータA、クラスデータB及びクラ
スデータCと、クラス管理オブジェクト204が管理し
ているクラスデータDとは、エージェントクラスオブジ
ェクト201の共有クラスデータテーブル206に格納
され、同一のエージェントクラスオブジェクト201で
管理されていることから、クラスデータDが参照してい
るクラスデータA及びクラスデータBを容易に取得する
ことが可能である。
【0264】このように、遠隔実行するクラスとそのク
ラスの実行時に必要となる他のクラスとの呼出し関係を
クラスデータの転送前に調べ、遠隔実行するクラスデー
タを送るときに、そのクラスデータの実行時に必要とな
る他のクラスデータも一緒に送ることにより、転送先で
の処理の負担を軽減することができ、特に、分散システ
ムなどのようにクラスデータが分散して格納されている
場合に有効である。
【0265】図30は、重複関係を有するクラスデータ
の遠隔実行時のエージェントクラスオブジェクトの状態
を示す図である。図30において、例えば、“func
tion−5”という名前でクラスデータA、クラスデ
ータD及びクラスデータEからなる機能がエージェント
クラスオブジェクト211に追加され、クラスデータ
A、クラスデータD及びクラスデータEが共有クラスデ
ータテーブル214に格納されるとともに、クラスデー
タA、クラスデータD及びクラスデータEを管理するク
ラス管理オブジェクト213が生成されている。
【0266】このクラス管理オブジェクト213のクラ
ス名リスト(class names)には、クラス管
理オブジェクト213が管理するクラスデータA、クラ
スデータD及びクラスデータEのクラス名“A”、
“D”、“E”がそれぞれ登録され、削除フラグ(re
movable flag)がオフとされ、局所クラス
データテーブル(local classes)、置換
クラスデータ記憶領域(next classes)、
実行中スレッドIDリスト(running thre
ads)、参照オブジェクトリスト(referrin
g)及び被参照オブジェクトリスト(referre
d)が空(null)とされている。
【0267】また、クラス管理オブジェクト213の名
前として、“function−5”がクラス管理オブ
ジェクトテーブル212に登録され、クラス管理オブジ
ェクト213の名前“function−5”に対応し
て、クラス管理オブジェクト213を特定するポインタ
がクラス管理オブジェクトテーブル212に生成されて
いる。
【0268】また、例えば、“function−1”
という名前でクラスデータA、クラスデータB及びクラ
スデータCからなる機能がエージェントクラスオブジェ
クト215に追加され、クラスデータA、クラスデータ
B及びクラスデータCが共有クラスデータテーブル21
8に格納されるとともに、クラスデータA、クラスデー
タB及びクラスデータCを管理するクラス管理オブジェ
クト217が生成されている。
【0269】このクラス管理オブジェクト217のクラ
ス名リスト(class names)には、クラス管
理オブジェクト217が管理するクラスデータA、クラ
スデータB及びクラスデータCのクラス名“A”、
“B”、“C”がそれぞれ登録され、削除フラグ(re
movable flag)がオフとされ、局所クラス
データテーブル(local classes)、置換
クラスデータ記憶領域(next classes)、
実行中スレッドIDリスト(running thre
ads)、参照オブジェクトリスト(referrin
g)及び被参照オブジェクトリスト(referre
d)が空(null)とされている。
【0270】また、クラス管理オブジェクト217の名
前として、“function−1”がクラス管理オブ
ジェクトテーブル216に登録され、クラス管理オブジ
ェクト217の名前“function−1”に対応し
て、クラス管理オブジェクト217を特定するポインタ
がクラス管理オブジェクトテーブル216に生成されて
いる。
【0271】エージェントクラスオブジェクト211
が、名前“function−5”の機能の遠隔実行を
エージェントクラスオブジェクト215で行う場合、名
前“function−5”の機能を構成するクラスデ
ータD、クラスデータE及びクラスデータAが、エージ
ェントクラスオブジェクト215の共有クラスデータテ
ーブル218に存在するかどうかを問い合わせる。
【0272】エージェントクラスオブジェクト215
は、クラスデータD、クラスデータE及びクラスデータ
Aが共有クラスデータテーブル218に存在するかどう
かを調べ、問い合わせを受けたクラスデータD、クラス
データE及びクラスデータAのうち、クラスデータAが
共有クラスデータテーブル218に存在することを認識
する。そして、クラスデータAの存在をエージェントク
ラスオブジェクト215に応答する。
【0273】クラスデータAの存在を知らされたエージ
ェントクラスオブジェクト211は、エージェントクラ
スオブジェクト215に転送するクラスデータD、クラ
スデータE及びクラスデータAからクラスデータAを除
き、クラスデータD及びクラスデータEだけをエージェ
ントクラスオブジェクト215に送る。
【0274】エージェントクラスオブジェクト215
は、エージェントクラスオブジェクト215から転送さ
れたクラスデータD及びクラスデータEを用いるととも
に、自己の共有クラスデータテーブル218に格納され
ているクラスデータAを用いることにより、名前“fu
nction−5”の機能を実行する。
【0275】このことにより、遠隔実行する際に、転送
先の共有クラスデータテーブルに格納されているクラス
データを送る必要がなくなり、クラスデータの転送量を
削減することができる。
【0276】次に、エージェントクラスオブジェクト2
2a〜22nによるクラスデータの検索方法について説
明する。クラス管理オブジェクト24a〜24mはクラ
ス検索機能48を備えており、エージェントクラスオブ
ジェクト22a〜22nに追加されたクラスデータから
オブジェクトを生成するときや、オブジェクトのメソッ
ド内部で宣言されているクラスデータからオブジェクト
を生成する時には、クラス管理オブジェクト24a〜2
4mのloadClass()メソッドを呼び出す。
【0277】図31は、クラス検索処理を示すフローチ
ャートである。図31において、まず、loadCla
ss()メソッドの引数から検索対象のクラスデータの
クラス名を取得し(ステップS151)、局所クラスデ
ータテーブル41を検索する(ステップS152)。そ
して、局所クラスデータテーブル41の検索結果を調べ
(ステップS153)、検索対象のクラスデータが見つ
かった場合、そのクラスデータを戻り値として返す(ス
テップS158)。
【0278】一方、検索対象のクラスデータが局所クラ
スデータテーブル41に見つからなかった場合、共有ク
ラスデータテーブル25を検索する(ステップS15
4)。そして、共有クラスデータテーブル25の検索結
果を調べ(ステップS155)、検索対象のクラスデー
タが見つかった場合、そのクラスデータを戻り値として
返す(ステップS158)。
【0279】一方、検索対象のクラスデータが共有クラ
スデータテーブル25に見つからなかった場合、エージ
ェントクラスライブラリ31及びシステムクラスライブ
ラリ32を検索する(ステップS156)。そして、エ
ージェントクラスライブラリ31及びシステムクラスラ
イブラリ32の検索結果を調べ(ステップS157)、
検索対象のクラスデータが見つかった場合、そのクラス
データを戻り値として返す(ステップS158)。
【0280】一方、検索対象のクラスデータがエージェ
ントクラスライブラリ31及びシステムクラスライブラ
リ32に見つからなかった場合、エラーを通知して終了
する(ステップS159)。
【0281】以上説明したように、本発明の実施例によ
れば、分散オブジェクトにクラスデータの置換機能と遠
隔実行機能を付加したエージェントクラスを用意するこ
とで、柔軟な分散オブジェクトシステムの運用が可能と
なり、開発者にクラス管理の知識がなくても容易に安全
にこれらの機能を利用することが可能となる。
【0282】以上、本発明の実施例について説明した
が、本発明は上述した実施例に限定されることなく、本
発明の技術的思想の範囲内で他の様々の変更が可能であ
る。
【0283】
【発明の効果】以上説明したように、本発明によれば、
プログラムの使用状況を追加されたクラスデータごとに
監視することにより、プログラムが動作している場合に
どのクラスデータが使用されているかを判別することが
可能となることから、そのプログラムコードの一部の削
除や置換をそのプログラムの動作中に行うことが可能と
なる。
【0284】また、本発明の一態様によれば、動作中の
プログラムに対して削除や置換などの処理要求が行われ
た場合においても、そのプログラムの動作を停止させる
ことなく、そのプログラムに対する削除や置換などの処
理を行わせることが可能となり、プログラムのカスタマ
イズ時におけるプログラマの負担を軽減することが可能
となる。
【0285】また、本発明の一態様によれば、クラスデ
ータの使用状況を監視する監視オブジェクトを監視対象
のオブジェクト内に設けることにより、監視対象となる
プログラム自体にそのプログラムを監視する機能を容易
に付加することが可能となり、プログラマにクラス管理
の知識がなくても、プログラムの使用状況の監視を容易
に行うことが可能となるとともに、そのプログラムコー
ドの一部の削除や置換をそのプログラムの動作中に行う
ことが可能となる。
【0286】また、本発明の一態様によれば、クラスデ
ータの追加要求が行われるごとに監視オブジェクトを生
成することにより、プログラムに新たに追加された機能
ごとにプログラムの監視を行うことが可能となり、プロ
グラムが動作している場合にプログラムのどの機能が使
用されているのかを判別することが可能となることか
ら、プログラムの一部の機能を特定するだけで、そのプ
ログラムの機能の削除や置換をそのプログラムの動作中
に行うことが可能となる。
【0287】また、本発明の一態様によれば、クラス管
理オブジェクトの識別情報を記憶することにより、クラ
ス管理オブジェクトに与えられた名前などの識別情報を
指定するだけで、プログラムコードの一部の削除や置換
をそのプログラムの動作中に行うことが可能となり、プ
ログラムをカスタマイズする際のプログラマの負担を軽
減することが可能となる。
【0288】また、本発明の一態様によれば、クラス管
理オブジェクトに固有のクラスデータを格納する局所ク
ラスデータテーブルを設けることにより、他のオブジェ
クトから送られてきたクラスデータとクラス管理オブジ
ェクトが既に管理しているクラスデータとの間に衝突が
発生した場合においても、他のオブジェクトから送られ
てきたクラスデータをクラス管理オブジェクトが既に管
理しているクラスデータと独立に保有することが可能と
なり、エージェントクラスオブジェクトは、他のオブジ
ェクトから送られてきたクラスデータを遠隔実行するこ
とが可能となる。
【0289】また、本発明の一態様によれば、クラスデ
ータに対する削除要求を記憶しておくことにより、削除
要求されたクラスデータが使用中の場合においても、そ
のクラスデータに対する削除要求を受け入れることが可
能となることから、クラスデータに対する削除要求が拒
否されたために、そのクラスデータに対する削除要求を
改めて行う必要がなくなり、プログラマがクラスデータ
を削除する際の負担を軽減することが可能となる。
【0290】また、本発明の一態様によれば、置換要求
時の新たなクラスデータを記憶しておくことにより、置
換要求されたクラスデータが使用中の場合においても、
そのクラスデータに対する置換要求を受け入れることが
可能となることから、クラスデータに対する置換要求が
拒否されたために、そのクラスデータに対する置換要求
を改めて行う必要がなくなり、プログラマがクラスデー
タを置換する際の負担を軽減することが可能となる。
【0291】また、本発明の一態様によれば、クラスデ
ータを実行しているスレッドを記憶することにより、実
行中スレッドリストを参照するだけで、実行されている
クラスデータが存在するかどうかを判別することがで
き、クラスデータの使用状況を容易に把握することが可
能となる。
【0292】また、本発明の一態様によれば、追加され
たクラスデータに対応するクラス名を記憶することによ
り、クラス管理オブジェクトが管理しているクラスデー
タを容易に把握することが可能となり、追加されたクラ
スデータを単位としてクラスデータに対する処理を行う
ことが可能となる。
【0293】また、本発明の一態様によれば、クラスデ
ータの参照関係をクラス管理オブジェクトに記憶するこ
とにより、クラスデータの参照関係を考慮しながらクラ
スデータに対する処理を行うことが可能となり、プログ
ラマがクラスデータの参照関係を認識する必要がなくな
ることから、プログラムのカスタマイズを容易に行うこ
とが可能となる。
【0294】また、本発明の一態様によれば、他のエー
ジェントクラスオブジェクトからのアクセス権をチェッ
クするアクセス制御クラスを設けることにより、エージ
ェントクラスオブジェクトは、他のエージェントクラス
オブジェクトからのアクセスがあった場合、アクセス制
御クラスに基づいてアクセス制御オブジェクトを生成す
ることが可能となることから、エージェントクラスオブ
ジェクトからのアクセスがある度に、アクセス権のチェ
ックを行うことが可能となるとともに、エージェントク
ラスオブジェクトごとにアクセス条件を容易に変更する
ことが可能となり、プログラムコードの追加・更新のイ
ンターフェイスのセキュリティを向上させることが可能
となる。
【0295】また、本発明の一態様によれば、クラスデ
ータのクラス名の重複を排除することにより、共有クラ
スデータテーブル内で同一のクラスの衝突が発生するこ
とを防止することができる。
【0296】また、本発明の一態様によれば、参照元の
クラスデータの実行中に参照先のクラスデータの削除要
求や置換要求がなされた場合、参照元のクラスデータの
実行が終了するまで参照先のクラスデータの削除や置換
を一時的に保留しておくことにより、クラスデータの実
行が途中で不可能になることを防止することが可能とな
る。
【0297】また、本発明の一態様によれば、削除要求
や置換要求があったプログラムの一部の機能について、
そのプログラムの一部の機能の実行が終了した後に、そ
のプログラムの一部の機能を削除したり、置換したりす
ることにより、プログラムの一部の機能を削除または置
換する際に、実行中のプログラムを途中で停止させた
り、そのプログラムを再起動させたりする手間を省くこ
とが可能となる。
【0298】また、本発明の一態様によれば、他のエー
ジェントクラスオブジェクトから送られたクラスデータ
を局所的に格納することにより、クラス管理オブジェク
トに対応して既に格納されているクラスデータとの衝突
を回避することが可能となる、エージェントクラスオブ
ジェクトによる遠隔実行を円滑に行うことが可能とな
る。
【0299】また、本発明の一態様によれば、クラスデ
ータ及びクラスデータから生成されたオブジェクトのシ
リアライズデータに基づいて、そのクラスデータから生
成されたオブジェクトを復元するようにしている。
【0300】このことにより、クラスデータから生成さ
れたオブジェクトをシリアライズ化して送信し、シリア
ライズデータを受信先で復元することにより、オブジェ
クトの遠隔実行を行うことが可能となる。
【0301】また、本発明の一態様によれば、実行対象
のクラスデータが参照しているクラスデータを送信する
ことにより、参照関係を有しているクラスデータについ
ても、遠隔実行を行うことが可能となる。
【0302】また、本発明の一態様によれば、送信先の
エージェントクラスオブジェクトに存在しないクラスデ
ータだけを送信することにより、遠隔実行を行う際の通
信量を減らすことが可能となり、遠隔実行の速度を上げ
ることが可能となる。
【図面の簡単な説明】
【図1】本発明の一実施例に係わる情報処理装置の機能
的な構成を示すブロック図である。
【図2】図1のクラスデータ処理手段の構成例を示すブ
ロック図である。
【図3】本発明の一実施例に係わるコンピュータの機能
的な構成を示すブロック図である。
【図4】図3のクラス管理オブジェクトの構成例を示す
図である。
【図5】エージェントクラスの構成例を示す図である。
【図6】クラスデータ追加時のクラス管理オブジェクト
の生成方法を示す図である。
【図7】テンプレートのコード化の例を示す図である。
【図8】図3のコンピュータのシステム構成例を示す図
である。
【図9】図3の通信デーモンの動作を示すフローチャー
トである。
【図10】図3の通信スレッドの動作を示すフローチャ
ートである。
【図11】クラスデータをエージェントクラスオブジェ
クトに追加した状態を示す図である。
【図12】参照関係のあるクラスデータをエージェント
クラスオブジェクトに追加した状態を示す図である。
【図13】重複するクラスデータをエージェントクラス
オブジェクトから削除する方法を示す図である。
【図14】クラスデータ追加処理を示すフローチャート
である。
【図15】アクセス権チェック処理を示すフローチャー
トである。
【図16】クラスデータ取得処理を示すフローチャート
である。
【図17】クラスデータ実行中のエージェントクラスオ
ブジェクトの状態を示す図である。
【図18】参照関係があるクラスデータ実行中のエージ
ェントクラスオブジェクトの状態を示す図である。
【図19】クラスデータ実行処理を示すフローチャート
である。
【図20】クラスデータ実行中に削除要求があった場合
のエージェントクラスオブジェクトの状態を示す図であ
る。
【図21】クラスデータ削除処理を示すフローチャート
である。
【図22】クラスデータ実行中に置換要求があった場合
のエージェントクラスオブジェクトの状態を示す図であ
る。
【図23】クラスデータの置換後のエージェントクラス
オブジェクトの状態を示す図である。
【図24】クラスデータ置換処理を示すフローチャート
である。
【図25】クラスデータ置換処理を示すフローチャート
(続き)である。
【図26】クラスデータの遠隔実行時のエージェントク
ラスオブジェクトの状態を示す図である。
【図27】シリアライズデータの遠隔実行時のエージェ
ントクラスオブジェクトの状態を示す図である。
【図28】遠隔実行処理を示すフローチャートである。
【図29】参照関係を有するクラスデータの遠隔実行時
のエージェントクラスオブジェクトの状態を示す図であ
る。
【図30】重複関係を有するクラスデータの遠隔実行時
のエージェントクラスオブジェクトの状態を示す図であ
る。
【図31】クラス検索処理を示すフローチャートであ
る。
【符号の説明】
1 クラスデータ記憶手段 2 クラスデータ監視手段 3 クラスデータ処理手段 11 受付手段 12 判定手段 13 延期手段 21 コンピュータ 22a〜22n、101、111、121、131、1
41、151、161、171、181、191、19
4、201、211、215、301 エージェントク
ラスオブジェクト 23、53、102、112、122、132、14
2、152、162、172、182、202、21
2、216 クラス管理オブジェクトテーブル 24a〜24m、54、103、113、114、12
3、133、143、145、153、163、17
3、183、184、196、203、204、21
3、217、303、304、305 クラス管理オブ
ジェクト 25、55、104、115、124、135、14
7、155、165、174、185、192、20
6、214、218、302 共有クラスデータテーブ
ル 26a〜26f、56、125、186、195 外部
公開メソッド 27a〜27k、134、144、146、154、1
64、205 通信スレッド 28 通信デーモン 29 ネットワークソケットAPI 30 オペレーティングシステム 31 エージェントクラスライブラリ 32 システムクラスライブラリ 41 局所クラスデータテーブル 42 削除フラグ 43 置換クラスデータ格納部 44 実行中スレッドIDリスト 45 クラス名リスト 46 参照オブジェクトリスト 47 被参照オブジェクトリスト 51 クラスライブラリ 52 基本クラス 57 サブクラス 58a〜58j、193、197 インスタンス 61 CPU 62 RAM 63 ROM 64 通信インターフェイス 65 プリンタ 66 ディスプレイ 67 キーボード 68 マウス 69 ドライバ 70 ハードディスク 71 フロッピーディスク 72 磁気テープ 73 光ディスク 74 ICメモリカード 81 初期メニュー 82 ホップアップメニュー 83 フィールド欄 84 内容欄

Claims (44)

    【特許請求の範囲】
  1. 【請求項1】 オブジェクトに追加されたクラスデータ
    を記憶するクラスデータ記憶手段と、 前記クラスデータの使用状況を監視するクラスデータ監
    視手段と、 前記クラスデータの使用状況に基づいて、前記クラスデ
    ータの処理を行うクラスデータ処理手段とを備えること
    を特徴とする情報処理装置。
  2. 【請求項2】 前記クラスデータ処理手段は、 前記クラスデータについての処理要求を受け付ける受付
    手段と、 前記処理要求のあったクラスデータが使用中かどうかを
    判定する判定手段と、 前記クラスデータが使用中の場合、前記クラスデータの
    使用が終了するまで、前記クラスデータの処理を延期す
    る延期手段とを備えることを特徴とする請求項1に記載
    の情報処理装置。
  3. 【請求項3】 前記クラスデータ処理手段は、 前記クラスデータについての処理要求を受け付ける受付
    手段と、 前記処理要求のあったクラスデータを使用しているオブ
    ジェクトに中止要求を発行する中止要求発行手段と、 前記オブジェクトが前記中止要求に応答した後、前記ク
    ラスデータの処理を行う実行手段とを備えることを特徴
    とする請求項1または2に記載の情報処理装置。
  4. 【請求項4】 前記受付手段は、前記クラスデータにつ
    いての処理要求を受け付けるかどうかを検査する検査手
    段をさらに備えることを特徴とする請求項2または3に
    記載の情報処理装置。
  5. 【請求項5】 前記クラスデータ処理手段は、前記クラ
    スデータの追加要求単位で前記クラスデータを前記クラ
    スデータ記憶手段に追加するクラスデータ追加手段を備
    えることを特徴とする請求項1〜4のいずれか1項に記
    載の情報処理装置。
  6. 【請求項6】 前記クラスデータ処理手段は、削除対象
    のクラスデータの使用が終了してから、前記クラスデー
    タを削除するクラスデータ削除手段を備えることを特徴
    とする請求項1〜5のいずれか1項に記載の情報処理装
    置。
  7. 【請求項7】 前記クラスデータ処理手段は、置換対象
    のクラスデータの使用が終了してから、前記クラスデー
    タを置換するクラスデータ置換手段を備えることを特徴
    とする請求項1〜6のいずれか1項に記載の情報処理装
    置。
  8. 【請求項8】 クラスデータの使用状況を監視するエー
    ジェントクラスオブジェクトを生成するためのエージェ
    ントクラスを格納するエージェントクラス格納手段と、 前記クラスデータに対する処理が行われる場合、前記エ
    ージェントクラスに基づいて前記エージェントクラスオ
    ブジェクトを生成するエージェントクラスオブジェクト
    生成手段とを備えることを特徴とする情報処理装置。
  9. 【請求項9】 前記エージェントクラスは、 前記エージェントクラスオブジェクトに追加されたクラ
    スデータの管理を行うクラス管理オブジェクトと、 前記クラス管理オブジェクトで管理されるクラスデータ
    を記憶する共有クラスデータテーブルと、 前記クラスデータに対する処理を実行する外部公開メソ
    ッドとを備えることを特徴とする請求項8に記載の情報
    処理装置。
  10. 【請求項10】 前記エージェントクラスは、 前記クラスデータの追加要求に対して生成されたクラス
    管理オブジェクトと前記クラスデータの追加要求時に与
    えられた名前との対応関係を記憶したクラス管理オブジ
    ェクトテーブルをさらに備えることを特徴とする請求項
    9に記載の情報処理装置。
  11. 【請求項11】 前記クラス管理オブジェクトは、 各クラス管理オブジェクトに固有のクラスデータを格納
    する局所クラスデータテーブルと、 前記クラスデータの削除要求を記憶する削除フラグと、 前記クラスデータの置換要求時の新たなクラスデータを
    記憶する置換クラスデータ記憶領域と、 前記クラスデータを実行しているスレッドの識別情報を
    記憶する実行中スレッドリストと、 前記クラスデータに対応するクラス名を記憶するクラス
    名リストと、 前記クラスデータの参照先のクラスデータを管理してい
    るクラス管理オブジェクトの識別情報を記憶する参照オ
    ブジェクトリストと、 前記クラスデータの参照元のクラスデータを管理してい
    るクラス管理オブジェクトの識別情報を記憶する被参照
    オブジェクトリストとをさらに備えることを特徴とする
    請求項10に記載の情報処理装置。
  12. 【請求項12】 前記エージェントクラスは、他のエー
    ジェントクラスオブジェクトからのアクセス権をチェッ
    クするアクセス制御クラスを前記共有クラスデータテー
    ブルに備えることを特徴とする請求項9〜11のいずれ
    か1項に記載の情報処理装置。
  13. 【請求項13】 前記エージェントクラスオブジェクト
    は、 他のエージェントクラスオブジェクトからのアクセスが
    あった場合、前記アクセス制御クラスに基づいてアクセ
    ス制御オブジェクトを生成するアクセス制御オブジェク
    ト生成手段と、 前記アクセス制御オブジェクトに基づいて、前記アクセ
    ス権のチェックを実行するアクセス制御オブジェクト実
    行手段とを備えることを特徴とする請求項12に記載の
    情報処理装置。
  14. 【請求項14】 前記外部公開メソッドは、前記エージ
    ェントクラスオブジェクトにクラスデータを追加するク
    ラスデータ追加手段を備えることを特徴とする請求項1
    1に記載の情報処理装置。
  15. 【請求項15】 前記クラスデータ追加手段は、 前記エージェントクラスオブジェクトに追加されたクラ
    スデータを管理するクラス管理オブジェクトを生成する
    クラス管理オブジェクト生成手段と、 前記クラス管理オブジェクト内のクラス名リストに前記
    クラスデータのクラス名を登録するクラス名登録手段
    と、 前記クラスデータを前記共有クラスデータテーブルに書
    き込むクラスデータ書き込み手段と、 前記クラスデータの追加要求時に与えられた名前を前記
    クラス管理オブジェクトテーブルに登録するクラス管理
    オブジェクト登録手段とを備えることを特徴とする請求
    項14に記載の情報処理装置。
  16. 【請求項16】 前記クラスデータ追加手段は、 前記エージェントクラスオブジェクトに追加されたクラ
    スデータのクラス名が、前記共有クラスデータテーブル
    に登録されているクラスデータのクラス名と重複する場
    合、前記エージェントクラスオブジェクトに追加された
    クラスデータを前記共有クラスデータテーブルから削除
    することにより、前記共有クラスデータテーブルの元の
    状態を復元する共有クラスデータテーブル復元手段を備
    えることを特徴とする請求項15に記載の情報処理装
    置。
  17. 【請求項17】 前記外部公開メソッドは、前記エージ
    ェントクラスオブジェクトに保有されているクラスデー
    タを実行するクラスデータ実行手段を備えることを特徴
    とする請求項13〜16のいずれか1項に記載の情報処
    理装置。
  18. 【請求項18】 前記クラスデータ実行手段は、 実行中のクラスデータを管理しているクラス管理オブジ
    ェクトの実行中スレッドリストに、前記クラスデータを
    実行しているスレッドの識別情報を設定する第1スレッ
    ドリスト設定手段と、 実行中のクラスデータの参照先のクラスデータを管理し
    ているクラス管理オブジェクトの実行中スレッドリスト
    に、前記クラスデータを実行しているスレッドの識別情
    報を設定する第2スレッドリスト設定手段とを備えるこ
    とを特徴とする請求項17に記載の情報処理装置。
  19. 【請求項19】 前記クラスデータ実行手段は、 クラス管理オブジェクトの実行中スレッドリストにスレ
    ッドの識別情報が設定されているかどうかを検索する第
    1実行中スレッドリスト検索手段と、 前記クラス管理オブジェクトの削除フラグの設定状態を
    判定する削除フラグ判定手段と、 前記実行中スレッドリストが空で、かつ、前記削除フラ
    グがオンのクラス管理オブジェクトが存在している場
    合、前記クラス管理オブジェクトのクラス名リストのク
    ラス名に対応するクラスデータを前記共有クラスデータ
    テーブルから削除する削除実行手段とを備えることを特
    徴とする請求項18に記載の情報処理装置。
  20. 【請求項20】 前記クラスデータ実行手段は、 クラス管理オブジェクトの実行中スレッドリストにスレ
    ッドの識別情報が設定されているかどうかを検索する第
    2実行中スレッドリスト検索手段と、 前記クラス管理オブジェクトの置換クラスデータ記憶領
    域を検索する置換クラスデータ検索手段と、 前記実行中スレッドリストが空で、かつ、前記置換クラ
    スデータ記憶領域にクラスデータが記憶されているクラ
    ス管理オブジェクトが存在している場合、前記共有クラ
    スデータテーブルに記憶されている置換対象のクラスデ
    ータを、前記置換クラスデータ記憶領域に記憶されてい
    るクラスデータで置換する置換実行手段とを備えること
    を特徴とする請求項18または19に記載の情報処理装
    置。
  21. 【請求項21】 前記外部公開メソッドは、前記エージ
    ェントクラスオブジェクトからクラスデータを削除する
    クラスデータ削除手段を備えることを特徴とする請求項
    13〜20のいずれか1項に記載の情報処理装置。
  22. 【請求項22】 前記クラスデータ削除手段は、 削除対象のクラスデータを管理しているクラス管理オブ
    ジェクトの実行中スレッドリストを検索する第3実行中
    スレッドリスト検索手段と、 前記実行中スレッドリストにスレッドの識別情報が設定
    されている場合、前記クラスデータの削除を中止し、前
    記クラス管理オブジェクトの削除フラグをオンに設定す
    る削除フラグ設定手段とを備えることを特徴とする請求
    項21に記載の情報処理装置。
  23. 【請求項23】 前記外部公開メソッドは、前記エージ
    ェントクラスオブジェクトのクラスデータを置換するク
    ラスデータ置換手段を備えることを特徴とする請求項1
    3〜22のいずれか1項に記載の情報処理装置。
  24. 【請求項24】 前記クラスデータ置換手段は、 置換対象のクラスデータを管理しているクラス管理オブ
    ジェクトの実行中スレッドリストを検索する第4実行中
    スレッドリスト検索手段と、 前記実行中スレッドリストにスレッドの識別情報が設定
    されている場合、前記クラスデータの置換を中止し、前
    記クラス管理オブジェクトの置換クラスデータ記憶領域
    に新たなクラスデータを設定する置換データ設定手段と
    を備えることを特徴とする請求項23に記載の情報処理
    装置。
  25. 【請求項25】 前記クラス管理オブジェクトの被参照
    オブジェクトリストが空でない場合、エラーを通知する
    エラー通知手段と、 前記クラス管理オブジェクトの参照オブジェクトリスト
    が空でない場合、削除対象のクラスデータの参照先のク
    ラスデータを管理しているクラス管理オブジェクトの被
    参照オブジェクトリストから、前記クラス管理オブジェ
    クトの識別情報を削除する識別情報削除手段とを備える
    ことを特徴とする請求項21〜24のいずれか1項に記
    載の情報処理装置。
  26. 【請求項26】 前記外部公開メソッドは、他のエージ
    ェントクラスオブジェクトから送られたクラスデータを
    実行するクラスデータ遠隔実行手段を備えることを特徴
    とする請求項13〜25のいずれか1項に記載の情報処
    理装置。
  27. 【請求項27】 前記クラスデータ遠隔実行手段は、ク
    ラス管理オブジェクトの局所クラスデータテーブルに前
    記クラスデータを設定するクラスデータ設定手段を備え
    ることを特徴とする請求項26に記載の情報処理装置。
  28. 【請求項28】 前記クラスデータ遠隔実行手段は、 クラスデータ及び前記クラスデータから生成されたオブ
    ジェクトのシリアライズデータを受信するデータ受信手
    段と、 前記クラスデータ及び前記シリアライズデータに基づい
    て、前記クラスデータから生成されたオブジェクトを復
    元するオブジェクト復元手段とを備えることを特徴とす
    る請求項26または27に記載の情報処理装置。
  29. 【請求項29】 前記クラスデータ遠隔実行手段は、 実行対象のクラスデータが参照しているクラスデータを
    前記共有クラスデータテーブルから呼び出すクラスデー
    タ呼び出し手段と、 前記実行対象のクラスデータとともに前記実行対象のク
    ラスデータが参照しているクラスデータを、他のエージ
    ェントクラスオブジェクトに送信する第1クラスデータ
    送信手段とを備えることを特徴とする請求項26〜28
    のいずれか1項に記載の情報処理装置。
  30. 【請求項30】 前記クラスデータ遠隔実行手段は、 実行対象のクラスデータが、送信先のエージェントクラ
    スオブジェクトの共有クラスデータテーブルに存在して
    いるかどうかを検索する重複クラス検索手段と、 前記検索結果に基づいて、送信先のエージェントクラス
    オブジェクトに存在しているクラスデータを除外してか
    ら、前記送信先のエージェントクラスオブジェクトに実
    行対象のクラスデータを送信する第2クラスデータ送信
    手段とを備えることを特徴とする請求項26〜29のい
    ずれか1項に記載の情報処理装置。
  31. 【請求項31】 プログラムを記憶するプログラム記憶
    手段と、 前記プログラムの使用状況を前記プログラムの機能ごと
    に監視するプログラム監視手段と、 前記プログラムの機能の使用状況に基づいて、前記プロ
    グラムの機能に対する処理を行うプログラム処理手段と
    を備えることを特徴とする情報処理装置。
  32. 【請求項32】 前記プログラム監視手段は、前記プロ
    グラムの機能を特定するための名前を管理する名前管理
    手段を備えることを特徴とする請求項31に記載の情報
    処理装置。
  33. 【請求項33】 前記プログラム処理手段は、使用中の
    機能に対する処理要求が行われた場合、前記機能の使用
    が終了するまで、前記処理要求を一時的に保留すること
    を特徴とする請求項31または32に記載の情報処理装
    置。
  34. 【請求項34】 前記処理要求は、前記プログラムの一
    部の機能に対する削除要求または置換要求であることを
    特徴とする請求項33に記載の情報処理装置。
  35. 【請求項35】 クラスデータから構成される機能の使
    用状況を監視するステップと、 前記クラスデータから構成される機能の使用状況に基づ
    いて、前記クラスデータに対する処理を実行するかどう
    かを決定するステップとを備えることを特徴とする情報
    処理方法。
  36. 【請求項36】 複数の機能からなるプログラムの実行
    状況を、それぞれの機能ごとに監視するステップと、 前記プログラムの機能の実行状況に基づいて、前記プロ
    グラムの機能に対する処理を行うステップとを備えるこ
    とを特徴とする情報処理方法。
  37. 【請求項37】 前記プログラムの実行中に実行されな
    い一部の機能がある場合、前記実行されない一部の機能
    の削除または置換を、前記プログラムの実行中に許可す
    ることを特徴とする請求項36に記載の情報処理方法。
  38. 【請求項38】 前記プログラムの実行中に実行が終了
    した一部の機能がある場合、前記実行が終了した一部の
    機能の削除または置換を、前記プログラムの実行中に許
    可することを特徴とする請求項36に記載の情報処理方
    法。
  39. 【請求項39】 前記プログラムの実行中の機能または
    実行予定のある機能に対して削除要求または置換要求が
    あった場合、前記削除要求または前記置換要求があった
    機能の実行後に、前記機能の削除または置換を行うこと
    を特徴とする請求項36に記載の情報処理方法。
  40. 【請求項40】 少なくとも第1の機能と第2の機能と
    を含むプログラムの実行状況を、それぞれの機能ごとに
    監視するステップと、 前記プログラムの実行中に前記第1の機能の削除要求を
    行うステップと、 前記プログラムが前記第2の機能を実行している時に、
    前記第1の機能を前記プログラムから削除するステップ
    とを備えることを特徴とする情報処理方法。
  41. 【請求項41】 少なくとも第1の機能と第2の機能と
    を含むプログラムの実行状況を、それぞれの機能ごとに
    監視するステップと、 前記プログラムの実行中に前記第1の機能の置換要求を
    行うステップと、 前記プログラムが前記第2の機能を実行している時に、
    前記プログラムの前記第1の機能を置換するステップと
    を備えることを特徴とする情報処理方法。
  42. 【請求項42】 オブジェクトに追加されたクラスデー
    タを記憶する機能と、 前記クラスデータの使用状況を監視する機能と、 前記クラスデータの使用状況に基づいて、前記クラスデ
    ータの処理を行う機能とをコンピュータに実行させるプ
    ログラムを格納した前記コンピュータが読み取り可能な
    記憶媒体。
  43. 【請求項43】 クラスデータの使用状況を監視するエ
    ージェントクラスオブジェクトを生成するためのエージ
    ェントクラスを格納する機能と、 前記クラスデータに対する処理が行われる場合、前記エ
    ージェントクラスに基づいて前記エージェントクラスオ
    ブジェクトを生成する機能とをコンピュータに実行させ
    るプログラムを格納した前記コンピュータが読み取り可
    能な記憶媒体。
  44. 【請求項44】 プログラムを記憶する機能と、 前記プログラムの使用状況を監視する機能と、 前記プログラムの中に使用されていない一部のプログラ
    ムコードが存在する場合、前記使用されていない一部の
    プログラムコードについて処理を行う機能とをコンピュ
    ータに実行させるプログラムを格納した前記コンピュー
    タが読み取り可能な記憶媒体。
JP9130160A 1997-05-20 1997-05-20 情報処理装置 Pending JPH10320205A (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP9130160A JPH10320205A (ja) 1997-05-20 1997-05-20 情報処理装置
US09/009,461 US6308182B1 (en) 1997-05-20 1998-01-16 Information processing apparatus
DE69815946T DE69815946T2 (de) 1997-05-20 1998-01-20 Informationsverarbeitungsvorrichtung
EP98300383A EP0880093B1 (en) 1997-05-20 1998-01-20 Information processing apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP9130160A JPH10320205A (ja) 1997-05-20 1997-05-20 情報処理装置

Publications (1)

Publication Number Publication Date
JPH10320205A true JPH10320205A (ja) 1998-12-04

Family

ID=15027443

Family Applications (1)

Application Number Title Priority Date Filing Date
JP9130160A Pending JPH10320205A (ja) 1997-05-20 1997-05-20 情報処理装置

Country Status (4)

Country Link
US (1) US6308182B1 (ja)
EP (1) EP0880093B1 (ja)
JP (1) JPH10320205A (ja)
DE (1) DE69815946T2 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000183875A (ja) * 1998-12-11 2000-06-30 Nec Corp ネットワーク管理システム及び機能の動的追加方法
JP2003521063A (ja) * 2000-01-27 2003-07-08 サン マイクロシステムズ インコーポレイテッド 共用ライブラリファイル内のプログラムファイルへのアクセスを制限するための方法、システムおよび製品
US7092984B2 (en) 2000-01-25 2006-08-15 Fujitsu Limited Method and apparatus for determining dynamic flow and computer-readable medium storing a program for performing the method
JP2009054146A (ja) * 2007-07-27 2009-03-12 Canon Inc 情報処理方法、情報処理装置及びプログラム
JP2016505942A (ja) * 2012-12-05 2016-02-25 エルジー エレクトロニクス インコーポレイティド 無線通信システムにおいて接近権限認証のための方法及び装置

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3995338B2 (ja) * 1998-05-27 2007-10-24 富士通株式会社 ネットワーク接続制御方法及びシステム
JP2000259417A (ja) * 1999-03-12 2000-09-22 Sony Corp データ処理装置、データ処理方法及びプログラム提供媒体
US6678745B1 (en) * 1999-06-01 2004-01-13 Bruce Hodge Dynamic object synthesis with automatic late binding
US6698017B1 (en) * 1999-07-16 2004-02-24 Nortel Networks Limited Software migration on an active processing element
US6516349B1 (en) * 1999-09-07 2003-02-04 Sun Microsystems, Inc. System for updating a set of instantiated content providers based on changes in content provider directory without interruption of a network information services
US6957228B1 (en) * 2000-01-07 2005-10-18 International Business Machines Corporation Object oriented apparatus and method for providing context-based class replacement in an object oriented system
US6931546B1 (en) * 2000-01-28 2005-08-16 Network Associates, Inc. System and method for providing application services with controlled access into privileged processes
JP4489915B2 (ja) * 2000-07-31 2010-06-23 大日本印刷株式会社 暗証コード照合機能をもった携帯型情報処理装置
US6986148B2 (en) * 2001-07-17 2006-01-10 Appforge, Inc. Methods and systems for providing platform-independent shared software components for mobile devices
US7526347B2 (en) * 2003-02-18 2009-04-28 Fisher-Rosemount Systems, Inc. Security for objects in a process plant configuration system
GB0400148D0 (en) * 2004-01-06 2004-02-11 Calico Jack Ltd Dynamic modularity in flexible,persistent agents
JP2005259113A (ja) * 2004-02-12 2005-09-22 Ricoh Co Ltd プロセス編集装置、プロセス管理装置、プロセス編集プログラム、プロセス管理プログラム、記録媒体、プロセス編集方法及びプロセス管理方法
US7721276B2 (en) * 2004-02-20 2010-05-18 International Business Machines Corporation Computer-implemented method, system and program product for comparing application program interfaces (APIs) between JAVA byte code releases
US7853742B2 (en) * 2004-04-26 2010-12-14 Intel Corporation System and method to conditionally shrink an executable module
US8676748B2 (en) * 2004-11-18 2014-03-18 International Business Machines Corporation Clearing metadata tracks in a storage system
US8856467B2 (en) * 2004-11-18 2014-10-07 International Business Machines Corporation Management of metadata in a storage subsystem
US7885921B2 (en) * 2004-11-18 2011-02-08 International Business Machines Corporation Managing atomic updates on metadata tracks in a storage system
US9335761B2 (en) * 2008-09-30 2016-05-10 Rockwell Automation Technologies, Inc. Procedure classification for industrial automation
US8412797B2 (en) * 2009-08-27 2013-04-02 Vmware, Inc. Platform for development and deployment of system administration solutions
US9336384B2 (en) * 2013-04-24 2016-05-10 Symantec Corporation Systems and methods for replacing application methods at runtime
US9720659B2 (en) * 2015-02-12 2017-08-01 International Business Machines Corporation Sparse object instantiation
US9934287B1 (en) * 2017-07-25 2018-04-03 Capital One Services, Llc Systems and methods for expedited large file processing

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4809168A (en) 1986-10-17 1989-02-28 International Business Machines Corporation Passive serialization in a multitasking environment
US5072412A (en) * 1987-03-25 1991-12-10 Xerox Corporation User interface with multiple workspaces for sharing display system objects
US5008853A (en) * 1987-12-02 1991-04-16 Xerox Corporation Representation of collaborative multi-user activities relative to shared structured data objects in a networked workstation environment
US5018060A (en) * 1989-01-26 1991-05-21 Ibm Corporation Allocating data storage space of peripheral data storage devices using implied allocation based on user parameters
US5253361A (en) * 1989-09-15 1993-10-12 Emtek Health Care Systems, Inc. System for accessing a row of time-dependent data by referring to a composite index table indicating page locations of linked row labels
JPH04170642A (ja) 1990-11-05 1992-06-18 Fuji Xerox Co Ltd クラスの共有管理方式
CA2065473C (en) * 1991-04-25 1999-08-10 Kouichi Shibao Knowledge base management system for an information reasoning apparatus
US5410703A (en) 1992-07-01 1995-04-25 Telefonaktiebolaget L M Ericsson System for changing software during computer operation
JP3335407B2 (ja) * 1993-03-01 2002-10-15 富士通株式会社 電子取引システム
US5794229A (en) * 1993-04-16 1998-08-11 Sybase, Inc. Database system with methodology for storing a database table by vertically partitioning all columns of the table
US5379432A (en) * 1993-07-19 1995-01-03 Taligent, Inc. Object-oriented interface for a procedural operating system
US5577230A (en) * 1994-08-10 1996-11-19 At&T Corp. Apparatus and method for computer processing using an enhanced Harvard architecture utilizing dual memory buses and the arbitration for data/instruction fetch
US5835949A (en) * 1994-12-27 1998-11-10 National Semiconductor Corporation Method of identifying and self-modifying code

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000183875A (ja) * 1998-12-11 2000-06-30 Nec Corp ネットワーク管理システム及び機能の動的追加方法
US7092984B2 (en) 2000-01-25 2006-08-15 Fujitsu Limited Method and apparatus for determining dynamic flow and computer-readable medium storing a program for performing the method
JP2003521063A (ja) * 2000-01-27 2003-07-08 サン マイクロシステムズ インコーポレイテッド 共用ライブラリファイル内のプログラムファイルへのアクセスを制限するための方法、システムおよび製品
JP4841787B2 (ja) * 2000-01-27 2011-12-21 オラクル・アメリカ・インコーポレイテッド 共用ライブラリファイル内のプログラムファイルへのアクセスを制限するための方法、システムおよび記憶媒体
JP2009054146A (ja) * 2007-07-27 2009-03-12 Canon Inc 情報処理方法、情報処理装置及びプログラム
JP2016505942A (ja) * 2012-12-05 2016-02-25 エルジー エレクトロニクス インコーポレイティド 無線通信システムにおいて接近権限認証のための方法及び装置

Also Published As

Publication number Publication date
EP0880093A1 (en) 1998-11-25
US6308182B1 (en) 2001-10-23
DE69815946D1 (de) 2003-08-07
EP0880093B1 (en) 2003-07-02
DE69815946T2 (de) 2004-04-01

Similar Documents

Publication Publication Date Title
JPH10320205A (ja) 情報処理装置
US6470375B1 (en) System and method for managing the execution of system management tasks
US10157080B2 (en) Service clean-up
US5619716A (en) Information processing system having a configuration management system for managing the software of the information processing system
US5887171A (en) Document management system integrating an environment for executing an agent and having means for changing an agent into an object
US6789257B1 (en) System and method for dynamic generation and clean-up of event correlation circuit
US7228453B2 (en) Techniques for maintaining high availability of networked systems
US6775658B1 (en) Notification by business rule trigger control
US6751657B1 (en) System and method for notification subscription filtering based on user role
US5475817A (en) Object oriented distributed computing system processing request to other object model with code mapping by object managers located by manager of object managers
US9122530B2 (en) Management apparatus and management method
US9223625B2 (en) Client server system and method for executing an application utilizing distributed objects
US9146756B2 (en) Java management extensions (JMX) bean custom service extension plugin agent for an application server
US7603256B2 (en) Enabling high availability and load balancing for management modules in a computing environment
CN103744734A (zh) 一种任务作业处理方法、装置及系统
JP2009199528A (ja) 複数のサービスステップを含むサービスプロセスを管理するためのコンピュータ・システム、並びにその方法及びコンピュータ・プログラム
JPH11231927A (ja) 監視制御システム
US20230153100A1 (en) Method and apparatus for managing model file in inference application
US8260897B2 (en) System and method for automatically managing IT-resources in a heterogeneous environment
US20220407795A1 (en) Centralized, scalable, resource monitoring system
JP2007334580A (ja) 支援装置、プログラム、情報処理システム及び支援方法
CN106600226B (zh) 用于优化流程管理系统的方法及装置
US20110179173A1 (en) Conditional dependency in a computing cluster
KR100310759B1 (ko) 기존객체에대한새로운객체장소를결정하는객체지향장치및방법
JPH11305998A (ja) 計算機システム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20040419

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070403

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070604

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20070626