JP3857259B2 - オブジェクト状態転送方法,オブジェクト状態転送装置およびオブジェクト状態転送プログラム並びにそのプログラムの記録媒体 - Google Patents

オブジェクト状態転送方法,オブジェクト状態転送装置およびオブジェクト状態転送プログラム並びにそのプログラムの記録媒体 Download PDF

Info

Publication number
JP3857259B2
JP3857259B2 JP2003284939A JP2003284939A JP3857259B2 JP 3857259 B2 JP3857259 B2 JP 3857259B2 JP 2003284939 A JP2003284939 A JP 2003284939A JP 2003284939 A JP2003284939 A JP 2003284939A JP 3857259 B2 JP3857259 B2 JP 3857259B2
Authority
JP
Japan
Prior art keywords
transfer
internal state
state
application program
mapping
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.)
Expired - Fee Related
Application number
JP2003284939A
Other languages
English (en)
Other versions
JP2004094935A (ja
Inventor
田中  慎司
哲靖 山田
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.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
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 Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2003284939A priority Critical patent/JP3857259B2/ja
Priority to US10/637,181 priority patent/US7559064B2/en
Publication of JP2004094935A publication Critical patent/JP2004094935A/ja
Application granted granted Critical
Publication of JP3857259B2 publication Critical patent/JP3857259B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

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/54Interprogram communication
    • 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented
    • G06F9/4493Object persistence

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)

Description

本発明は,Java(登録商標)仮想マシンを搭載した装置に関し,特に,オブジェクト状態の他ホストへの転送のオーバヘッドを減少させ,オブジェクト状態の同期をとる場合におけるシステム全体の性能向上を可能にしたオブジェクト状態転送方法,オブジェクト状態転送装置およびオブジェクト状態転送プログラム並びにそのプログラムの記録媒体に関するものである。
既存のJava(登録商標)技術では,複数のオブジェクトの内部状態(インスタンス変数と呼ばれるようなオブジェクトに固有の情報)を外部装置へ転送するためには,一つ一つのインスタンスをシリアライズと呼ばれる手法によりバイト列に変換し,そのバイト列を外部装置へ転送する必要があった。このため,このシリアライズを実行するときに大きなオーバーヘッドが発生していた。すなわち、シリアライズを実行するためには、各インスタンスの内部状態であるメンバ変数へ一つ一つアクセスすることにより個々のメンバ変数の状態を取得し、取得した状態をバイト列が格納される転送用領域へ逐一コピーしてゆく必要があるため、オーバーヘッドが大きくなる。
例えば,複数のホストから構成されるクラスタでは,クラスタを構成するホストの一つが何らかの原因によりサービス継続が不可能になった場合に,他のホストが代わりにそのサービス提供を継続することにより,システムの信頼性を上げることが可能になる。サービス提供を他のホストが引き継ぐためには,そのサービスに関する情報(オブジェクトの状態)を,クラスタを構成するホスト間で同期をとり復元する必要が発生する。
このようなときに,シリアライズを実行して,複数のオブジェクトの内部状態をバイト列に変換し,他のホストへ転送していたが,そのオーバヘッドのためシステム全体での性能に大きな影響が発生していた。
なお、上記のようなクラスタ構成を採用したシステムとして、例えば、非特許文献1で公開されている文献では、シリアライズを利用してセッションステートをレプリケーションすることにより、フェイルオーバー時のセッション引き継ぎを実現している。
BEAシステムズ、"WebLogic Server クラスタ ユーザーズ ガイド"、[online]、[平成15年7月3日検索]、インターネット<URL:http://edocs.beasys.co.jp/e-docs/wls/docs70/cluster/failover.html>
以上のように従来の技術では,信頼性向上のためにクラスタを構成する複数ノード(ホスト)間でオブジェクト状態の同期をとるような,大量のオブジェクトの状態を転送する必要がある場合に,その他の処理が停滞し,システム全体での性能に大きな影響が発生する原因になっていた。
本発明は,このオーバーヘッドを大幅に減少させ,多数のオブジェクトに渡って短時間でオブジェクト状態の同期をとることを可能とし,システム全体の性能への影響を最小化しつつ,クラスタ構成における信頼性を向上させることを目的とする。
本発明の第1の態様は,アプリケーションプログラムが通常のオブジェクトとしてアクセスするオブジェクトの内部状態をバイト列に保存することを最も主要な特徴とする。
より詳細には、Java(登録商標)仮想マシンなどの上に搭載されているアプリケーションプログラムが、オブジェクトの内部状態を操作するためのアクセサメソッド経由でオブジェクトにアクセス可能であり、そのオブジェクトの内部状態がバイト列にマッピングされ,そのままの形で外部装置に転送手段によって送出される。
本発明の第1の態様において、アプリケーションプログラムからの新規オブジェクトの生成要求に従って,その新規オブジェクトの内部状態をバイト列上に確保して新規オブジェクトの内部状態とバイト列とのマッピングをとり、このマッピングに関するマッピング情報をマッピング管理テーブルなどに保持するようにしても良い。
本発明の第1の態様において、生成されたオブジェクトに対してアプリケーションプログラムが内部状態へのアクセスを行ったときに,マッピング管理テーブルなどに格納されたマッピング情報に従って,マッピングされたバイト列に対してそのオブジェクトの内部状態を設定し又はマッピングされたバイト列からそのオブジェクトの内部状態を取得し,アプリケーションプログラムに結果を返却するようにしても良い。
本発明の第1の態様において、オブジェクトの内部状態が保持されたバイト列およびマッピング管理テーブルなどに格納されたマッピング情報をそのままの形で,他の情報処理装置へ転送するようにしても良い。
本発明の第1の態様において、生成されたオブジェクトがアプリケーションプログラムにより不要と判断され,Java(登録商標)仮想マシンなどがそのオブジェクトに関するメモリ領域を解放しようとしたときに,同時にバイト列とオブジェクトのマッピングを解放し,マッピング管理テーブルなどに格納されたマッピング情報を更新するようにしても良い。
本発明の第1の態様において、ある情報処理装置の転送手段により転送されたバイト列およびマッピング情報から,他の情報処理装置上の復元手段がオブジェクトを復元し,復元されたオブジェクトに関する情報をアプリケーションプログラムに通知するようにしても良い。
本発明の第2の態様は、複数の情報処理装置間で共有するオブジェクトを他の情報処理装置に転送される転送対象として共有ヒープ領域上に配置し、転送手段が共有ヒープ領域を他の情報処理装置に転送することを特徴とする。
本発明の第2の態様において、転送対象クラスを予め指定しておき、アプリケーションプログラムからの新規オブジェクトの生成要求に従って、生成対象クラスが転送対象クラスに含まれるかどうかを判定し、生成対象クラスが転送対象クラスに含まれない場合はヒープ領域上にオブジェクトを生成し、生成対象クラスが転送対象クラスに含まれる場合は共有ヒープ領域上に共有オブジェクトを生成するようにしても良い。
本発明の第2の態様において、生成されたオブジェクトに対し、アプリケーションプログラムが内部状態への操作の指示を行ったときに、アプリケーションプログラムから与えられた操作対象のオブジェクトのアドレスに基づき、操作対象のオブジェクトが共有ヒープ領域内かどうかを判定するとともに指示された操作が内部状態の設定であるかどうか判定し、共有ヒープ領域内のオブジェクトに対する内部状態の設定指示である場合は、操作対象のオブジェクトが格納されている共有ヒープ領域上のブロックが更新されたことを示すフラグを立てるようにしても良い。
本発明の第2の態様において、オブジェクトの内部状態が保持された共有ヒープ領域全体を他の情報処理装置に転送するようにしても良い。
本発明の第2の態様において、対応するブロックが更新されたことを示すフラグが立っているブロックのみを他の情報処理装置へ転送するようにしても良い。。
本発明の第2の態様において、ある情報処理装置から転送された共有ヒープ領域を、他の情報処理装置が受信してその内容を共有ヒープ領域として展開し、転送側の共有ヒープ領域のアドレスと受信側の共有ヒープ領域のアドレスの差を計算し、転送された共有ヒープ領域に含まれる共有オブジェクトのポインタが転送側の共有ヒープ領域内を指していた場合は上記アドレスの差に基づいてポインタを修正し、上記ポインタが転送側の共有ヒープ領域外を指していた場合は該ポインタをNULLにクリアすることで、共有オブジェクトを復元するようにしても良い。。
本発明の第1の態様によれば,アプリケーションプログラムからは通常のオブジェクトとして操作可能であるが,実際はバイト列に内部状態がマッピングされたオブジェクトをアプリケーションプログラムに提供でき,オブジェクト状態の転送のためのオーバーヘッドを大きく削減することが可能となり,転送先においてもオブジェクトを復元することが可能となる。これにより,処理速度の低下を避けつつ信頼性の高い装置の提供が可能となる。
例えば、ある情報処理装置がサービスを継続できなくなった場合に他の情報処理装置がそのサービスを引き継ぐためには、オブジェクトの内部状態を他の情報処理装置へ転送しておく必要がある。転送処理はオブジェクトの内部状態が更新される度に行うのが理想的ではあるが、それでは負荷が非常に重くなるため現実的には一定期間毎に転送処理を行うことになる。本発明では、内部状態の転送のためのオーバーヘッドが大幅に削減されるため、他の処理を停滞させることなく、他の情報処理装置への内部状態の転送を従来よりも頻繁に行うことが可能となる。それゆえ、複数の情報処理装置間で内部状態を同期させる時間間隔を短くすることができ、その分、システム全体の信頼性を高めることができる。
本発明の第2の態様によれば、通常のオブジェクトとして操作可能な共有オブジェクトを格納でき、かつ、転送側の情報処理装置が直接転送可能で、かつ、復元側の情報処理装置で復元可能である共有ヒープ領域をアプリケーションプログラムに提供できる。したがって、オブジェクトの内部状態を他の情報処理装置に転送するためのオーバーヘッドを大きく削減することが可能となり、転送先においてもオブジェクトを復元することが可能となる。これにより、処理速度の低下を避けつつ信頼性の高い装置の提供が可能となる。
より詳細には、オブジェクトが複数の情報処理装置間で共有されるかどうかを判定して、複数の情報処理装置間で共有されるオブジェクトは共有オブジェクトとして共有ヒープ領域上に格納し、複数の情報処理装置間で共有されないオブジェクトはヒープ領域上に格納している。これにより、アプリケーションプログラムが,通常のオブジェクトと共有オブジェクトのそれぞれの内部状態を同様に操作可能となる。
また、アプリケーションプログラムからの新規オブジェクトの生成要求があった場合、生成対象クラスが予め指定された転送対象クラスに含まれる場合は共有ヒープ領域上に共有オブジェクトを生成することで、特定のクラスに属するオブジェクトだけを共有オブジェクトとして複数の情報処理装置間で共有することが可能となる。したがって、複数の情報処理装置間で同期をとるために必要となる転送データ量を削減することも可能となる。
また、オブジェクトの内部状態が保持された共有ヒープ領域全体を他の情報処理装置に転送する場合、共有ヒープ領域をそのまま他の情報処理装置に転送すれば良くなるため、転送のオーバーヘッドを少なくすることができる。
また、更新されたブロックのみを他の情報処理装置へ転送することで、転送されるデータ量を削減でき、送信側の情報処理装置における送信時間および受信側の情報処理装置における受信時間を短縮して、転送処理および受信処理におけるオーバーヘッドを低減することが可能となる。
また、転送されてきた共有ヒープ領域に含まれる共有オブジェクトのポインタが転送側の共有ヒープ領域内を指していた場合は転送側の共有ヒープ領域のアドレスと受信側の共有ヒープ領域のアドレスの差に基づいてポインタを修正し、上記ポインタが転送側の共有ヒープ領域外を指していた場合は該ポインタをNULLにクリアすることで、共有ヒープ領域が格納される領域を複数の情報処理装置間で一致させておく必要がなくなる。
以下、図面を参照して本発明の各実施の形態について説明する。
〔第1の実施の形態〕
図1は,本発明の第1の実施の形態に係るシステム構成例を示す図である。送信装置10は,Java(登録商標)仮想マシンを搭載したコンピュータであり,オブジェクトの内部状態を転送する側の装置である。受信装置20も,Java(登録商標)仮想マシンを搭載したコンピュータであり,オブジェクトの内部状態を送信装置10から受信し,受信した内部状態をもとにオブジェクトを復元する装置である。
送信装置10におけるオブジェクト生成機能101は,アプリケーションプログラム100からのオブジェクト生成指示により,オブジェクト102を生成するものである。このとき,オブジェクト生成機能101は,所定の転送用領域104に生成したオブジェクト102の内部状態をバイト列として配置し,新規オブジェクト102の内部状態とバイト列とのマッピングの情報をマッピング管理テーブル103に設定する。
アプリケーションプログラム100がオブジェクト102の内部状態をアクセサメソッド経由でアクセスすると,マッピング管理テーブル103の情報に従ってマッピングされた転送用領域104中のバイト列に対し,そのオブジェクト102の内部状態の設定または取得が行われ,アプリケーションプログラム100に返却される。なお、アクセサメソッドは、アプリケーションプログラム100がオブジェクト102にアクセスするためにオブジェクト102が用意している一種のインタフェースであって、図示するには適していないため、図1ではアクセサメソッドを敢えて示していない。
転送機能105は,送信装置10において生成されたオブジェクト102の状態の同期をとるために,受信装置20へ状態の転送を定期的に行うものであり,転送用領域104中のバイト列およびマッピング管理テーブル103をそのままの形で受信装置20へ送る。転送機能105は,一つのオブジェクトとして実装される。
受信装置20における復元機能201は,転送機能105からのバイト列を受信装置20内の転送用領域202に設定し,またマッピング管理テーブル103上のマッピングの情報を受信装置20内のマッピング管理テーブル203に反映するものである。復元機能201は,受け取った転送用領域202のバイト列とマッピング管理テーブル203とから,各オブジェクトの内部状態を把握し,送信装置10におけるオブジェクト102と同じ内部状態のオブジェクト204を復元する。復元機能201は,一つのオブジェクトとして実装される。
オブジェクト管理機能205は,復元機能201からのオブジェクト204の復元通知を受け,アプリケーションプログラム206にオブジェクトを復元したことを通知する。
以下,送信装置10および受信装置20における各部の機能をさらに詳しく説明する。
図2は,本発明を用いた場合の実施の形態として,オブジェクト生成の処理の例を示したものであり,図3は,オブジェクト生成の処理フローチャートである。以下,図2および図3に従って処理の流れを説明する。
[A]オブジェクト生成指示
アプリケーションプログラム100がオブジェクト生成機能101のオブジェクト生成メソッド(たとえば,createObject()など)を呼び出すことにより,当該メソッドにより指定された対象オブジェクトのオブジェクト生成を指示する(ステップS1)。
[B]マッピング取得
オブジェクト生成機能101は,オブジェクト生成指示に対し,生成対象オブジェクトの内部状態と転送用領域104であるバイト列とのマッピングをとる。そのため,オブジェクト生成機能101は、生成対象オブジェクトの内部状態の数およびそれぞれの型を判定し,必要なサイズを判定し,マッピング管理テーブル103から必要なサイズ分の空き領域を検索する(ステップS2)。その後,オブジェクト生成機能101はマッピング管理テーブル103にそれぞれの内部状態のバイト列上の位置を記録する。すなわち,オブジェクト生成機能101は、マッピング管理テーブル103の空き領域のレコードに生成オブジェクトに関する情報を設定することで領域を確保する(ステップS3)。
[C]オブジェクト生成
続いて,オブジェクト生成機能101は,オブジェクトを生成し,上記[B]で保存したマッピング管理テーブル103の情報を設定する。すなわち,オブジェクト生成機能101は、生成したオブジェクトに,内部状態の転送用領域104上の位置を設定する(ステップS4)。
[D]オブジェクトリファレンス返却
その後,オブジェクト生成機能101は,アプリケーションプログラム100にオブジェクトリファレンスを返却する(ステップS5)。アプリケーションプログラム100は,オブジェクト生成機能101からオブジェクトリファレンスを受け取る(ステップS6)。オブジェクトリファレンスは,オブジェクトの受け渡しを行うためのものであって、オブジェクトの格納位置を直接参照するポインタで実現することができる。あるいは、オブジェクトの格納位置を直接参照するポインタをエントリとするテーブルを作成し、オブジェクトリファレンスがこのテーブル上のいずれかのエントリを指すようにすることで、オブジェクトリファレンスがオブジェクトの格納位置を間接的に参照するようにしても良い。ここでは,アプリケーションプログラム100がオブジェクト生成機能101にオブジェクトの生成を要求したときに,オブジェクト生成機能101が生成したオブジェクトをアプリケーションプログラム100に受け渡すために,オブジェクトリファレンスを返却する。
図4は,本発明を用いた場合の実施の形態として,オブジェクトへの操作の処理の例を示したものであり,図5は,オブジェクトへの操作の処理フローチャートである。以下,図4および図5に従って処理の流れを説明する。
[A]オブジェクト操作指示
アプリケーションプログラム100がオブジェクト102のアクセサメソッド(例えば,setAttribute(),getAttribute()など)を呼び出すことにより,オブジェクトの内部状態への操作,すなわち内部状態の設定または取得を指示する(ステップS10)。
[B]オブジェクト内部状態設定又は取得
オブジェクト102のアクセサメソッドは,オブジェクト生成時にオブジェクト102に設定されたオブジェクト内部状態のバイト列へのマッピング情報に基づき,転送用領域104であるバイト列にアクセスし,内部状態の設定又は取得を行う(ステップS11)。
[C]オブジェクト内部状態設定又は取得の結果返却
オブジェクト102はアプリケーションプログラム100に設定又は取得の結果を返却する。特に,取得の場合,オブジェクト102は内部状態をアプリケーションプログラム100に返却する(ステップS12)。アプリケーションプログラム100は,結果を受け取る(ステップS13)。
図6は,本発明を用いた場合の実施の形態として,オブジェクトの転送および復元の例を示したものであり,図7は,オブジェクトの転送および復元の処理フローチャートである。以下,図6および図7に従って処理の流れを説明する。
[A]バイト列およびマッピング管理テーブル取得
転送機能105は,例えば送信装置10におけるオブジェクト状態を受信装置20に転送するために,定期的に転送処理を開始し,転送用領域104であるバイト列およびマッピング管理テーブル103の情報を取得する(ステップS20)。
[B]データ転送
転送機能105は,取得した情報を他ホストである受信装置20の復元機能201に転送する(ステップS21)。
[C]バイト列及びマッピング管理テーブル復元
復元機能201は,オブジェクトの内部状態を示すバイト列とマッピング管理テーブル103の情報を送信装置10から受信し(ステップS22),それらを転送用領域202とマッピング管理テーブル203に設定して復元する(ステップS23)。
[D]オブジェクト復元
続いて復元機能201は,マッピング管理テーブル203から,転送されたオブジェクトの種類及び内部状態の転送用領域202上の位置を取得し(ステップS24),マッピング管理テーブル203の情報に基づいて,オブジェクト204を復元する。次いで、復元機能201は、復元したそれぞれのオブジェクト204に対し,マッピング管理テーブル203の情報(内部状態の転送用領域202上の位置など)を設定する(ステップS25)。
[E]オブジェクト復元通知
復元機能201は,復元したオブジェクト204のリファレンスを配列にして,オブジェクト管理機能205に通知する(ステップS26)。オブジェクト管理機能205は,オブジェクト204のリファレンスの配列を受け取り(ステップS27),事前に登録されたアプリケーションプログラム206に,復元された情報としてその配列のリファレンスを通知する(ステップS28)。その後,必要ならアプリケーションプログラム206が復元の後処理を行う。
図8は,本発明を用いた場合の実施の形態として,オブジェクト消去の処理を示したものであり,図9は,そのオブジェクト消去の処理フローチャートである。以下,図8および図9に従って処理の流れを説明する。
[A]オブジェクト解放指示
アプリケーションプログラム100は,オブジェクトが不要になったときに対象オブジェクトの解放メソッドを呼び出すことにより,対象オブジェクト102に解放指示をする(ステップS30)。
[B]マッピング情報クリア
対象オブジェクト102は,解放指示を受けると,オブジェクト生成機能101に消去を指示する(ステップS31)。オブジェクト生成機能101は,オブジェクト102からの消去の指示により,マッピング管理テーブル103のオブジェクト102に対するレコードを空き領域とし,マッピング情報をクリアする(ステップS32)。アプリケーションプログラム100は,解放指示を行ったオブジェクトに係るオブジェクトリファレンスを消去する(ステップS33)。
図10は,受信装置20において転送用領域202であるバイト列とマッピング管理テーブル203のマッピング情報からオブジェクトを復元する方式を説明する図である。
受信装置20の復元機能201は,送信装置10の転送機能105から定期的に転送用領域104であるバイト列とマッピング管理テーブル103のマッピング情報とを受け取り,転送用領域202とマッピング管理テーブル203に設定する。マッピング管理テーブル203に設定されるマッピング情報は,オブジェクト名OBJ1及びOBJ2やそれらの各内部状態a及びbの転送用領域(バイト列)202上の位置である。
復元機能201は,オブジェクト名OBJ1及びOBJ2の内部状態の型や数の情報を,あらかじめ用意されているオブジェクトのクラスファイル207から取得し,マッピング管理テーブル203に設定された各オブジェクトの内部状態と転送用領域202とのマッピング情報とから,オブジェクトの各内部状態の転送用領域202上の位置を復元することにより,オブジェクト204を再生する。これによって,送信装置10におけるオブジェクト102の状態と同じ状態を持つオブジェクト204が,受信装置20において再現されることになる。
以上説明した第1の実施の形態では,送信装置10に転送用領域104が一つ,また受信装置20に転送用領域202が一つ設けられる例を説明したが,それぞれ複数の転送用領域を保持する実施も可能である。転送用領域が複数存在する場合には,あらかじめ定められたオブジェクト群ごとに,グループ識別情報などを付与して転送用領域を使い分けることになる。
また、上述した説明ではマッピング情報をマッピング管理テーブル103及びマッピング管理テーブル203にまとめて格納していたが、マッピング情報を各オブジェクトに対応させて分散して格納するようにしても良い。図11はこの場合のシステム構成例を示したブロック図であって、図1に示したものと同じ構成要素については同一の符号を付しておりその説明を省略する。
図11では図1のマッピング管理テーブル103及び203に記憶されていたマッピング情報をそれぞれマッピングデータ108及び208として個々のオブジェクト102及び204に対応させて配置している。具体的には、図2に示したマッピング情報のうちのオブジェクトOBJ1に関する内部状態a及びbのデータを当該オブジェクトOBJ1に対応するオブジェクト102とともに格納する。同様に、図2に示したマッピング情報のうちのオブジェクトOBJ2に関する内部状態a及びbのデータを当該オブジェクトOBJ2に対応するオブジェクト102とともに格納する。なお、図11に示したシステムの動作は、図1〜図10を参照して説明した前述の動作と同じであって、マッピング管理テーブル103及び203がアクセスされる代わりに個々のオブジェクトに対応して格納されるマッピングデータ108及び208がアクセスされる点が相違する。
〔第2の実施の形態〕
図12は、本発明の第2の実施の形態に係るシステム構成例を示す図である。送信装置30及び受信装置40はそれぞれ第1の実施の形態における送信装置10及び受信装置20に対応している。そこで、本実施の形態では、第1の実施の形態で参照した図面中のものと同一の構成要素については同一の参照符号を付けてその説明を省略する。
オブジェクト302はホスト間で共有の対象とならない各ホストに固有のオブジェクトである。これに対して、共有オブジェクト310はホスト間で共有されるオブジェクトであって、ホスト間での転送対象となるオブジェクトでもある。
ヒープ領域311はオブジェクト302が格納される領域であり、共有ヒープ領域312は共有オブジェクト310が格納される領域である。なお、ヒープ領域311及び共有ヒープ領域312のデータ構造の具体例については図15を参照して後述する。
転送対象クラスデータベース(DB)313はホスト間で共有される転送対象のクラスに関する情報が記憶されるデータベースである。なお、転送対象クラスDB313の具体的な構造例については図13を参照して後述する。
転送対象クラスリスト314はユーザから送信装置30に与えられるデータであって、この転送対象クラスリスト314で指定されたクラス名にそれぞれクラス番号が付与されて転送対象クラスDB313に格納される。
オブジェクト生成機能301は第1の実施の形態におけるオブジェクト生成機能101に対応するものであって、詳細については後述するが主たる機能は次の通りである。オブジェクト生成機能301は、ユーザから入力された転送対象クラスリスト314を転送対象クラスDB313に設定する。また、オブジェクト生成機能301は、アプリケーションプログラム100からオブジェクト生成が指示されると、転送対象クラスDB313を検索して生成対象クラスが転送対象として指定されているかどうか判別し、得られた判別結果に応じてオブジェクトをヒープ領域311上または共有ヒープ領域312上に生成する。さらに、オブジェクト生成機能301は、アプリケーションプログラム100からオブジェクト操作(オブジェクト状態の設定または取得)が指示されると、操作対象のオブジェクトが共有ヒープ領域312上にあるかどうか判別し、得られた判別結果に応じてヒープ領域311上のオブジェクト302または共有ヒープ領域312上の共有オブジェクト310を操作して、操作結果をアプリケーションプログラム100に返す。
転送機能305は第1の実施の形態における転送機能105に対応するものであって、共有ヒープ領域312の全領域,もしくは,更新されたオブジェクトが含まれた共有ヒープ領域312の一部の領域を受信装置40へ定期的に転送する。
復元機能401は第1の実施の形態における復元機能201に対応するものであって、送信装置30から受信した共有ヒープ領域312の全領域または一部の領域を共有ヒープ領域412上に展開して、送信装置30における共有オブジェクト310と同じ状態の共有オブジェクト410を共有ヒープ領域412上に生成する。また、復元機能401は復元した共有オブジェクト410に関する情報をオブジェクト管理機能405に通知する。
オブジェクト管理機能405は送信装置30側におけるオブジェクト生成機能301と同等の機能を備えるほか、復元された共有オブジェクト410に関する情報を復元機能401から受け取ってこの情報のリファレンスをアプリケーションプログラム206に通知する。
オブジェクト402,ヒープ領域411,転送対象クラスDB413,転送対象クラスリスト414はそれぞれ送信装置30側におけるオブジェクト302,ヒープ領域311,転送対象クラスDB313,転送対象クラスリスト314と同様のものである。
図13は,本発明を用いた場合の実施の形態として,転送対象クラスの指定方法の処理の例を示したものであり、図14は転送対象クラスの指定方法の処理フローチャートである。
ここで、図13は転送対象クラスDB313の構造の具体例を示している。転送対象クラスDB313は、ホスト間で転送対象となるクラスのクラス名と、転送対象クラス指定時にオブジェクト生成機能301から当該クラス名に対して与えられるクラス番号とが対にして格納される。
以下、図13および図14に従って処理の流れを説明する。
[A]転送対象クラスリスト読込
仮想マシンを搭載した送信装置30が起動されると、オブジェクト生成機能301は、ユーザより与えられた転送対象クラスリスト314を読み込む。同様に、仮想マシンを搭載した受信装置40が起動されると、オブジェクト管理機能405は、ユーザより与えられた転送対象クラスリスト414を読み込む(ステップS51)。
[B]転送対象クラスDBへの転送対象クラスリストの保存
オブジェクト生成機能301は読み込んだ転送対象クラスリスト314を転送対象クラスDB313に保存する。同様に、オブジェクト管理機能405は読み込んだ転送対象クラスリスト414を転送対象クラスDB413に保存する。その際、オブジェクト生成機能301及びオブジェクト管理機能405はそれぞれ転送対象クラスリスト314及び414で指定された個々のクラス名に対して一意のクラス番号を付与する(ステップS52)。
図15は,本発明を用いた場合の実施の形態として,オブジェクト生成の処理の例を示したものであり、図16はオブジェクト生成の処理フローチャートである。
ここで、図15はヒープ領域311および共有ヒープ領域312の構造の具体例を示している。
ヒープ領域311は、個々のオブジェクト302の状態を示すオブジェクト状態情報320のみがオブジェクト毎に保存されている。これに対して共有ヒープ領域312は、ひとつのヘッダ350と複数のブロック351から構成される。なお、個々のブロック351はいずれも同一の構造であるため、図15では代表してブロック1について詳細な構造を示してある。
ヘッダ350は、ヘッダ/ブロック種別360、ブロック数361、ブロックサイズ362、領域の先頭アドレス363、ブロック更新フラグ364から構成される。ヘッダ/ブロック種別360には自身に続く領域がヘッダ350かブロック351かを示すためのデータ(固定値)が格納されている。ブロック数361は共有ヒープ領域312が含むブロックの個数を示している。なお、本実施の形態では説明を簡単にするためにブロック数361として固定値が格納される(すなわち、共有ヒープ領域312の大きさが不変)ものとするが、これに限定されるものではない。ブロックサイズ362は個々のブロック351の大きさを示している。なお、本実施の形態では説明を簡単にするためにブロック351の大きさが全て同一であるものとするが、これに限定されるものではない。領域の先頭アドレス363には共有ヒープ領域312の先頭アドレスが格納されている。すなわち、送信装置30側では共有ヒープ領域312の先頭アドレスが領域の先頭アドレス363に格納され、受信装置40側では共有ヒープ領域412の先頭アドレスが領域の先頭アドレス363に格納される。ブロック更新フラグ364は、ヘッダ350及び各ブロック351に対応して設けられたフラグの集合であって、それぞれのフラグは対応する領域(ヘッダ350又は個々のブロック351)が更新されているか否かを示す。
各ブロック351は、先頭にヘッダ/ブロック種別370及びブロック番号371があり、これらに続いて各オブジェクトの情報(以下、オブジェクト情報という)がオブジェクト毎に保持される。ヘッダ/ブロック種別370には、ヘッダ/ブロック種別360と同様に、自身に続く領域がヘッダ350かブロック351かを示すためのデータ(固定値)が格納されている。当然ながら、ヘッダ/ブロック種別370に格納される固定値はヘッダ/ブロック種別360に格納される固定値とは異なる値に設定されている。ブロック番号371は各ブロックに割当てられた一意の番号を示す。
各オブジェクト情報は、次オブジェクトへのオフセット372、クラス番号373、オブジェクト状態情報374から構成される。次オブジェクトへのオフセット372は各オブジェクトのサイズを示しており、各オブジェクトに関するオブジェクト情報の先頭アドレス(すなわち、次オブジェクトへのオフセット372が格納されている位置)に次オブジェクトへのオフセット372を加えることで、次のオブジェクトに関するオブジェクト情報の先頭アドレスを得ることができる。なお、各ブロックの最後のオブジェクトに関するオブジェクト情報に続くメモリ上には、次オブジェクトへのオフセット372に相当する領域に0が格納されており、これによってそのメモリ上にはオブジェクトが存在しないことが判定可能となる。クラス番号373は、各オブジェクトが属しているクラスに対して転送対象クラスの指定時に与えられたクラス番号(図13を参照)が格納される。オブジェクト状態情報374にはヒープ領域311を構成するオブジェクト状態情報320と同様に各オブジェクトの状態が保持される。
以下、図15及び図16に従って処理の流れを説明する。
[A]オブジェクト生成指示
アプリケーションプログラム100はオブジェクト生成機能301ヘオブジェクト生成を指示する。一例として、生成対象クラスのクラス名がClass_Aである場合、new Class_Aというバイトコードによりオブジェクト生成機能301へオブジェクト生成を指示することができる(ステップS61)。
[B]転送対象クラスか否かの確認
オブジェクト生成機能301は、転送対象クラスDB313を検索(ステップS62)し、生成対象クラスのクラス名が転送対象クラスDB313に含まれているかどうかを確認する(ステップS63)。生成対象クラスのクラス名が含まれている場合は[C]に進む。一方、生成対象クラスのクラス名が含まれていない場合は[D]に進む。
[C]共有ヒープ領域にオブジェクトを生成
オブジェクト生成機能301は生成対象クラスのオブジェクトを共有ヒープ領域312上に生成する(ステップS64)。まず、オブジェクト生成機能301は共有ヒープ領域312上におけるオブジェクトの格納領域を決定する。すなわち、オブジェクト生成機能301は、各ブロック351内の次オブジェクトへのオフセット372を先頭のブロック(図15に示す「ブロック1」)から順にたどってゆくことにより、各ブロック351における最後のオブジェクトに関するオブジェクト情報の次のアドレスを求め、このアドレスを生成対象のオブジェクトに関するオブジェクト情報の先頭アドレスとする。次に、オブジェクト生成機能301は、第1の実施の形態で説明したように、生成対象オブジェクトの内部状態の数およびそれぞれの型を判定することで生成対象のオブジェクトのサイズを求め、得られたサイズに基づいて次オブジェクトへのオフセット372を設定する。また、オブジェクト生成機能301は、生成対象クラスのクラス名に対応するクラス番号を転送対象クラスDB313から取得してこれをクラス番号373として設定する。なお、生成対象のオブジェクトを格納するだけの空き領域が着目しているブロック351に残っていなければ、オブジェクト生成機能301は必要な空き領域を持ったブロックが見つかるまで同様のことを行ってゆく。この後、処理を[E]に進める。
[D]ヒープ領域にオブジェクトを生成
オブジェクト生成機能301は生成対象クラスのオブジェクトをヒープ領域311上に生成する(ステップS65)。すなわち、オブジェクト生成機能301はヒープ領域311上においてオブジェクト状態情報320の領域を新たに1個確保する。この後、処理を[E]に進める。
[E]オブジェクトリファレンス返却
第1の実施の形態と同様に、オブジェクト生成機能301はアプリケーションプログラム100にオブジェクトリファレンスを返却する(ステップS66)。アプリケーションプログラム100は、オブジェクト生成機能301からオブジェクトリファレンスを受け取る(ステップS67)。
図17は,本発明を用いた場合の実施の形態として,オブジェクト操作の処理の例を示したものであり、図18はオブジェクト操作の処理フローチャートである。以下、図17および図18に従って処理の流れを説明する。
[A]オブジェクト操作指示
アプリケーションプログラム100がオブジェクト生成機能301へオブジェクト操作を指示する(たとえば、オブジェクトOBJ1の内部状態aをインクリメントする操作)。同時に、アプリケーションプログラム100は操作対象のオブジェクトのアドレスをオブジェクト生成機能301に伝える(ステップS71)。
[B]対象オブジェクトのアドレスが共有ヒープ領域内かどうかのチェック
オブジェクト生成機能301は操作対象のオブジェクトのアドレスが共有ヒープ領域312内かどうかをチェックする(ステップS72)。共有ヒープ領域312の外である場合は[C]に進み、共有ヒープ領域312の内である場合は[D]に進む。
[C]オブジェクトの操作
オブジェクト生成機能301は、操作対象のオブジェクトのアドレスに基づき、アプリケーションプログラム100からの指示通りに、ヒープ領域311上にある操作対象のオブジェクト302に対応するオブジェクト状態情報320に対して操作を実施する(ステップS73)。この後、処理を[E]に進める。
[D]オブジェクトの操作およびブロック更新フラグの設定
オブジェクト生成機能301は、操作対象のオブジェクトのアドレスに基づき、アプリケーションプログラム100からの指示通りに、共有ヒープ領域312上にある操作対象の共有オブジェクト310に対応するオブジェクト情報内のオブジェクト状態情報374に対して操作を実施する(ステップS74)。次に、オブジェクト生成機能301は、操作対象となる共有オブジェクト310が存在する共有ヒープ領域312上のブロック番号を計算する。ここで、対象となる共有オブジェクトの存在するアドレスをx, 共有ヒープ領域312の先頭アドレス(すなわち、最初のブロック351の先頭アドレス)をy, ブロックサイズ362を2とすると、ブロック番号=(x−y)>>nで計算される。なお、“>>n”はnビット分の右シフト演算を表す。そして、オブジェクト生成機能301はオブジェクトに対する操作が状態の設定であれば、ブロック更新フラグ364を構成するフラグの集合のうち、計算されたブロック番号に対応するフラグを立てる。また、ブロック更新フラグ364が更新されたことはヘッダ350の内容が設定されたことを意味するので、オブジェクト生成機能301はさらに、ブロック更新フラグ364を構成するフラグの集合のうち、ヘッダ350に対応するフラグを立てる(ステップS75)。この後、処理を[E]に進める。
[E]オブジェクト操作結果の通知
オブジェクト生成機能301はアプリケーションプログラム100にオブジェクト操作の結果を返却する。特に、オブジェクトに対する操作が状態の取得の場合、オブジェクト生成機能301は操作対象となったオブジェクトの内部状態をアプリケーションプログラム100に返却する(ステップS76)。アプリケーションプログラム100はこのオブジェクトの内部状態を受け取る(ステップS77)。
図19は,本発明を用いた場合の実施の形態として,共有ヒープ領域312を対象としたオブジェクトの転送及び復元処理を示したものであり、図20はオブジェクトの転送及び復元の処理フローチャートである。以下、図19および図20に従って処理の流れを説明する。
[A]共有ヒープ領域の転送指示
転送機能305は、周期的に転送処理を開始し、共有ヒープ領域312の先頭アドレスを取得する。
[B]共有ヒープ領域の転送
転送方式は全域転送と差分転送の2種類があり、いずれの転送方式に従って転送を行うかは送信装置30の起動時にユーザが予め選択して送信装置30に入力する。そして、転送機能305は転送方式を判別する(ステップS81)。転送方式が全域転送の場合、転送機能305は共有ヒープ領域312を読み込んでその全体を受信装置40の復元機能401に転送する(ステップS82)。これに対して転送方式が差分転送の場合、転送機能305は共有ヒープ領域312のヘッダ350内のブロック更新フラグ364を参照し、フラグが立っているヘッダ350及び/又はブロック351を共有ヒープ領域312から読み込んで受信装置40の復元機能401に転送し、転送を行ったヘッダ350及び/又はブロック351に対応するフラグをクリアする(ステップS83)。
[C]共有ヒープ領域の復元
復元機能401は、送信装置30から受信したデータを共有ヒープ領域412上に展開する(ステップS84)。ここで、受信装置40側では、送信装置30側と共有ヒープ領域のアドレスが異なっている。そこで復元機能401は、共有ヒープ領域412のヘッダ350中の領域の先頭アドレス363を参照して共有ヒープ領域412の先頭アドレスを取得するとともに、共有ヒープ領域412上に展開された送信装置30側のヘッダ350中の領域の先頭アドレス363を参照して共有ヒープ領域312の先頭アドレスを取得する。次に、復元機能401は両アドレスの差分を計算し、共有ヒープ領域412上に展開したデータ(具体的にはオブジェクト状態情報374において他のオブジェクトを指しているポインタ)の中で送信装置30側の共有ヒープ領域312内を指すポインタを受信装置40側のアドレス(すなわち、共有ヒープ領域412内)に修正する。また、復元機能401は、送信装置30側で共有ヒープ領域312の外を指すポインタをNULLにクリアする(ステップS85)。なお、ポインタが共有ヒープ領域312の外を指す場合とは、ポインタがヒープ領域311内を指す場合である。また、アプリケーションプログラム206は必要に応じてNULLにクリアされたポインタの後処理を行う。
[D]オブジェクト復元通知
復元機能401は、復元した共有オブジェクト410のリファレンスを配列にして,オブジェクト管理機能405に通知する(ステップS86)。オブジェクト管理機能405はこのリファレンスの配列を受け取り、その配列のリファレンスを復元された情報としてアプリケーションプログラム206に通知する(ステップS87)。その後,必要に応じてアプリケーションプログラム206は復元の後処理を行う。
なお、転送方式が全域転送の場合には、先に図17及び図18を参照して説明したオブジェクト操作の処理において、ブロック更新フラグの更新処理(図18のステップS75)を省略しても良い。
〔第3の実施の形態〕
図21は,本発明の第3の実施の形態に係るシステム構成例を示す図であって,第1の実施の形態と第2の実施の形態を組み合わせたものである。このため、送信装置50は送信装置10及び送信装置30の構成要素を備えており、受信装置60は受信装置20及び受信装置40の構成要素を備えている。なお、図21において、第1の実施の形態または第2の実施の形態で説明したものと同じ構成要素については同一の符号を付してその説明を省略する。
オブジェクト生成機能501は、第1の実施の形態におけるオブジェクト生成機能101と第2の実施の形態におけるオブジェクト生成機能301を合わせたものである。なお、オブジェクト生成機能501が第1の実施の形態に係る動作を行うのか第2の実施の形態に係る動作を行うのかは、アプリケーションプログラム100がオブジェクト生成機能501に対して予め指定する。同様に、オブジェクト生成機能601は、第1の実施の形態におけるオブジェクト生成管理205と第2の実施の形態におけるオブジェクト管理機能405を合わせたものである。なお、オブジェクト管理機能601が第1の実施の形態に係る動作を行うのか第2の実施の形態に係る動作を行うのかは、アプリケーションプログラム206がオブジェクト管理機能601に対して予め指定する。このほか、第1の実施の形態で説明した転送対象となるオブジェクト102及び204はそれぞれヒープ領域311及び411に格納される。
以下に各処理について第1の実施の形態で説明したオブジェクト状態転送装置単独または第2の実施の形態で説明したオブジェクト状態転送装置単独との差分について説明する。
転送対象クラスの指定方法は第2の実施の形態のみにおける処理であり、図13および図14を用いて説明した処理の流れと同様である。
オブジェクトの生成及びオブジェクトへの操作は第1の実施の形態及び第2の実施の形態の両方に存在する処理であり、それぞれの実施の形態の流れに従う。
オブジェクトの転送及び復元処理は、第1の実施の形態及び第2の実施の形態の両方に存在する処理であり、それぞれの実施の形態の流れに従う。すなわち、転送機能305が予め選択された転送方式に従って共有ヒープ領域312の一部または全部を復元機能401に転送し、復元機能401がこれを受信して共有ヒープ領域412上に共有オブジェクト410を復元する。また、転送機能105が転送用領域104とマッピング管理テーブル103を復元機能201に転送し、復元機能201が転送用領域202とマッピング管理テーブル203を復元する。
オブジェクトの消去処理は第1の実施の形態のみにおける処理であり、その処理は第1の実施の形態の流れに従う。
なお、転送機能105と転送機能305を一つの転送機能にまとめるとともに、復元機能201と復元機能401を一つの復元機能にまとめることも可能である。この場合、送信装置50から転送されてくるデータが第1の実施の形態に係るものであるか第2の実施の形態に係るものであるかを受信装置60側で判別する必要がある。そこで、送信装置50は受信装置60にデータを転送する際にこのデータが第1の実施の形態に係るものであるか第2の実施の形態に係るものであるかを示す付加情報を併せて転送し、受信装置60がこの付加情報に基づいて第1の実施の形態に係る動作または第2の実施の形態に係る動作を行う。
以上の本発明の各実施の形態の処理は,コンピュータ(情報処理装置)とソフトウェアプログラムとによって実現することができ,そのプログラムは,コンピュータが読み取り可能な可搬媒体メモリ,半導体メモリ,ハードディスク等の適当な記録媒体に格納して,そこから読み出すことによりコンピュータに実行させることができる。
また、各ホストは実際には送信装置として動作するとともに受信装置としても動作するため、実際には各ホストは送信装置としての構成要素および受信装置としての構成要素の双方を備えている。もっとも、ある瞬間では各ホストは送信装置または受信装置のいずれか一方として動作しているため、上述した各実施の形態では、送信装置として機能する1台のホストと受信装置として機能する1台のホストを示して説明を行った。
本発明の第1の実施の形態に係るシステム構成例を示す図である。 第1の実施の形態におけるオブジェクト生成の処理の例を示す図である。 第1の実施の形態におけるオブジェクト生成の処理フローチャートである。 第1の実施の形態におけるオブジェクトへの操作の処理の例を示す図である。 第1の実施の形態におけるオブジェクトへの操作の処理フローチャートである。 第1の実施の形態におけるオブジェクトの転送および復元の例を示す図である。 第1の実施の形態におけるオブジェクトの転送および復元の処理フローチャートである。 第1の実施の形態におけるオブジェクト消去の処理を示す図である。 第1の実施の形態におけるオブジェクト消去の処理フローチャートである。 第1の実施の形態におけるオブジェクトの復元方式を説明する図である。 本発明の第1の実施の形態においてマッピング情報をオブジェクトに分散して記憶させた場合のシステム構成例を示す図である。 本発明の第2の実施の形態に係るシステム構成例を示す図である。 第2の実施の形態における転送対象クラス指定の処理の例を示す図である。 第2の実施の形態における転送対象クラス指定の処理フローチャートである。 第2の実施の形態におけるオブジェクト生成の処理の例を示す図である。 第2の実施の形態におけるオブジェクト生成の処理フローチャートである。 第2の実施の形態におけるオブジェクト操作の処理の例を示す図である。 第2の実施の形態におけるオブジェクト操作の処理フローチャートである。 第2の実施の形態におけるオブジェクト転送および復元の処理の例を示す図である。 第2の実施の形態におけるオブジェクト転送および復元の処理フローチャートである。 本発明の第3の実施例の形態に係るシステム構成例を示す図である。
符号の説明
10 送信装置
100 アプリケーションプログラム
101 オブジェクト生成機能
102 オブジェクト
103 マッピング管理テーブル
104 転送用領域(バイト列)
105 転送機能
108 マッピングデータ
20 受信装置
201 復元機能
202 転送用領域(バイト列)
203 マッピング管理テーブル
204 オブジェクト
205 オブジェクト管理機能
206 アプリケーションプログラム
208 マッピングデータ
30 送信装置
301 オブジェクト生成機能
302 オブジェクト
305 転送機能
310 共有オブジェクト
311 ヒープ領域
312 共有ヒープ領域
313 転送対象クラスDB
314 転送対象クラスリスト
320,374 オブジェクト状態情報
350 ヘッダ
351 ブロック
360,370 ヘッダ/ブロック種別
361 ブロック数
362 ブロックサイズ
363 領域の先頭アドレス
364 ブロック更新フラグ
371 ブロック番号
372 次オブジェクトへのオフセット
373 クラス番号
40 受信装置
401 復元機能
402 オブジェクト
405 オブジェクト管理機能
410 共有オブジェクト
411 ヒープ領域
412 共有ヒープ領域
413 転送対象クラスDB
414 転送対象クラスリスト
50 送信装置
501 オブジェクト生成機能
60 受信装置
601 オブジェクト管理機能

Claims (8)

  1. アプリケーションプログラムとアクセサメソッド経由で操作可能な内部状態を保持する複数のオブジェクトとを有する複数の情報処理装置により行われるオブジェクト状態転送方法において、
    前記アプリケーションプログラムからのオブジェクト生成指示に対し、当該オブジェクト生成指示による生成対象のオブジェクトの内部状態の数およびそれぞれの型を判定し、当該オブジェクトのそれぞれの内部状態を、前記アプリケーションプログラムから前記アクセサメソッド経由で操作されるバイト列上に配置し、
    前記オブジェクトのそれぞれの内部状態と前記バイト列上の位置とのマッピングをとり、前記オブジェクトごとに前記内部状態と前記バイト列上の位置とを対応付けたマッピング情報を保存して前記オブジェクトを生成し、
    前記バイト列と前記マッピング情報を他の情報処理装置に送出することにより前記オブジェクトの内部状態を定期的に転送し、
    前記他の情報処理装置から定期的に転送された前記バイト列および前記マッピング情報を受信した場合、受信したバイト列およびマッピング情報をもとに前記バイト列およびマッピング情報を更新し、
    更新したバイト列およびマッピング情報にもとづいてオブジェクトを復元し、
    復元したオブジェクトを管理し、復元したオブジェクトに関する情報を事前に登録されたアプリケーションプログラムに通知する
    ことを特徴とするオブジェクト状態転送方法。
  2. 請求項1記載のオブジェクト状態転送方法において、
    生成したオブジェクトに対し、前記アプリケーションプログラムが前記アクセサメソッドにより内部状態の操作を行ったときに、その内部状態にマッピングされたバイト列に状態を設定しまたはバイト列から状態を取得し、前記アプリケーションプログラムに結果を返却する
    ことを特徴とするオブジェクト状態転送方法。
  3. 請求項1または請求項2に記載のオブジェクト状態転送方法において、
    前記オブジェクトが前記アプリケーションプログラムにより不要と判断されたときに、前記バイト列と前記オブジェクトの内部状態とのマッピングを解放し、前記マッピング情報を更新する
    ことを特徴とするオブジェクト状態転送方法。
  4. アプリケーションプログラムとアクセサメソッド経由で操作可能な内部状態を保持する複数のオブジェクトを備えた複数の情報処理装置のそれぞれに具備されるオブジェクト状態転送装置であって、
    前記各オブジェクトの内部状態がバイト列として配置される転送用領域と、
    前記オブジェクトの内部状態と前記バイト列とのマッピング情報が格納されるマッピング情報格納手段と、
    前記アプリケーションプログラムからのオブジェクト生成指示に対し、当該オブジェクト生成指示による生成対象のオブジェクトの内部状態の数およびそれぞれの型を判定し、当該オブジェクトのそれぞれの内部状態を、前記アプリケーションプログラムから前記アクセサメソッド経由で操作されるバイト列上に配置し、前記オブジェクトのそれぞれの内部状態と前記バイト列上の位置とのマッピングをとり、前記オブジェクトごとに前記内部状態と前記バイト列上の位置とを対応付けたマッピング情報を前記マッピング情報格納手段に保存して前記オブジェクトを生成するオブジェクト生成手段と、
    前記転送用領域のバイト列と前記マッピング情報とを定期的に他の情報処理装置に送信する転送手段と、
    前記他の情報処理装置から定期的に送信されるオブジェクトの内部状態を示すバイト列と、前記オブジェクトの内部状態と前記バイト列とのマッピングに関するマッピング情報とを受信した場合、受信したバイト列およびマッピング情報をもとに自装置内の前記バイト列および前記マッピング情報を更新し、更新されたバイト列およびマッピング情報にもとづいて前記他の情報処理装置と同じ状態のオブジェクトを復元する復元手段と、
    復元したオブジェクトを管理し、復元されたオブジェクトに関する情報を事前に登録されたアプリケーションプログラムに通知するオブジェクト管理手段と、
    を備えることを特徴とするオブジェクト状態転送装置。
  5. 請求項4記載のオブジェクト状態転送装置において、
    前記オブジェクト生成手段は、
    生成したオブジェクトに各内部状態の前記バイト列上の位置を設定し、
    前記アクセサメソッドを経由した前記アプリケーションプログラムからのオブジェクトの内部状態の操作指示に対し、前記転送用領域のバイト列に状態を設定しまたはバイト列から状態を取得し、前記アプリケーションプログラムに結果を返却する
    ことを特徴とするオブジェクト状態転送装置。
  6. 請求項または請求項に記載のオブジェクト状態転送装置において、
    前記オブジェクト生成手段は、
    前記オブジェクトが前記アプリケーションプログラムにより不要と判断されたときに、前記バイト列と前記オブジェクトの内部状態とのマッピングを解放し、前記マッピング情報を更新する
    ことを特徴とするオブジェクト状態転送装置。
  7. 請求項1から請求項3までのいずれか1項に記載のオブジェクト状態転送方法を、コンピュータによって実行するためのオブジェクト状態転送プログラム。
  8. 請求項1から請求項3までのいずれか1項に記載のオブジェクト状態転送方法を、コンピュータによって実行するためのプログラムを記録したことを特徴とするオブジェクト状態転送プログラムの記録媒体。
JP2003284939A 2002-08-14 2003-08-01 オブジェクト状態転送方法,オブジェクト状態転送装置およびオブジェクト状態転送プログラム並びにそのプログラムの記録媒体 Expired - Fee Related JP3857259B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2003284939A JP3857259B2 (ja) 2002-08-14 2003-08-01 オブジェクト状態転送方法,オブジェクト状態転送装置およびオブジェクト状態転送プログラム並びにそのプログラムの記録媒体
US10/637,181 US7559064B2 (en) 2002-08-14 2003-08-08 Object state transfer method, object state transfer device, object state transfer program, and recording medium for the program

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2002236408 2002-08-14
JP2003284939A JP3857259B2 (ja) 2002-08-14 2003-08-01 オブジェクト状態転送方法,オブジェクト状態転送装置およびオブジェクト状態転送プログラム並びにそのプログラムの記録媒体

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2006146820A Division JP4275683B2 (ja) 2002-08-14 2006-05-26 オブジェクト状態転送方法,オブジェクト状態転送装置およびオブジェクト状態転送プログラム並びにそのプログラムの記録媒体

Publications (2)

Publication Number Publication Date
JP2004094935A JP2004094935A (ja) 2004-03-25
JP3857259B2 true JP3857259B2 (ja) 2006-12-13

Family

ID=30768046

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2003284939A Expired - Fee Related JP3857259B2 (ja) 2002-08-14 2003-08-01 オブジェクト状態転送方法,オブジェクト状態転送装置およびオブジェクト状態転送プログラム並びにそのプログラムの記録媒体
JP2006146820A Expired - Fee Related JP4275683B2 (ja) 2002-08-14 2006-05-26 オブジェクト状態転送方法,オブジェクト状態転送装置およびオブジェクト状態転送プログラム並びにそのプログラムの記録媒体

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2006146820A Expired - Fee Related JP4275683B2 (ja) 2002-08-14 2006-05-26 オブジェクト状態転送方法,オブジェクト状態転送装置およびオブジェクト状態転送プログラム並びにそのプログラムの記録媒体

Country Status (4)

Country Link
US (2) US7559064B2 (ja)
EP (2) EP1389756A3 (ja)
JP (2) JP3857259B2 (ja)
CN (2) CN100442225C (ja)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004102453A (ja) * 2002-09-05 2004-04-02 Hitachi Ltd コンテキストラウンチ管理方法およびシステム、ならびにプログラム、記録媒体
US7665077B2 (en) * 2004-10-18 2010-02-16 Microsoft Corporation System and method for sharing objects between applications in a virtual runtime environment
CN1992643B (zh) * 2005-12-30 2010-05-05 鼎桥通信技术有限公司 面向对象的状态映射/解映射方法及状态管理方法
US8429643B2 (en) * 2007-09-05 2013-04-23 Microsoft Corporation Secure upgrade of firmware update in constrained memory
US9813529B2 (en) 2011-04-28 2017-11-07 Microsoft Technology Licensing, Llc Effective circuits in packet-switched networks
US9170892B2 (en) 2010-04-19 2015-10-27 Microsoft Technology Licensing, Llc Server failure recovery
US8996611B2 (en) * 2011-01-31 2015-03-31 Microsoft Technology Licensing, Llc Parallel serialization of request processing
US9454441B2 (en) 2010-04-19 2016-09-27 Microsoft Technology Licensing, Llc Data layout for recovery and durability
US9049176B2 (en) 2011-06-22 2015-06-02 Dropbox, Inc. File sharing via link generation
JP6019815B2 (ja) * 2012-06-28 2016-11-02 富士通株式会社 データ処理システム、アプリケーション提示方法、及びプログラム
JP6142669B2 (ja) * 2013-05-22 2017-06-07 株式会社ソシオネクスト データ編集プログラム、データ編集装置、データ編集方法
US11422907B2 (en) 2013-08-19 2022-08-23 Microsoft Technology Licensing, Llc Disconnected operation for systems utilizing cloud storage
US9798631B2 (en) 2014-02-04 2017-10-24 Microsoft Technology Licensing, Llc Block storage by decoupling ordering from durability
CN104881297A (zh) * 2015-06-19 2015-09-02 上海斐讯数据通信技术有限公司 一种状态机管理方法及系统
CN106855794A (zh) * 2015-12-08 2017-06-16 平安科技(深圳)有限公司 应用于ios操作系统的多对象间的数据共享方法及系统
CN111625332A (zh) * 2020-05-21 2020-09-04 杭州安恒信息技术股份有限公司 Java线程池拒绝策略执行方法、装置和计算机设备

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04242436A (ja) 1991-01-17 1992-08-31 Toshiba Corp 待機冗長型制御方法
US5544284A (en) * 1992-02-11 1996-08-06 Eastman Kodak Company Sequential product code quantization of digital color image
JPH08328891A (ja) 1995-06-02 1996-12-13 Mitsubishi Electric Corp 待機冗長化構成の二重化システム
JP3214356B2 (ja) * 1996-06-14 2001-10-02 三菱電機株式会社 テスト支援装置
JPH1040158A (ja) 1996-07-23 1998-02-13 Fuji Xerox Co Ltd 永続オブジェクト管理方法
JP3467750B2 (ja) 1997-01-17 2003-11-17 日本電信電話株式会社 分散オブジェクト処理システム
JPH10320206A (ja) 1997-03-14 1998-12-04 Toshiba Corp 分散オブジェクトシステムにおけるオブジェクトの状態管理方法ならびに装置、及び同方法がプログラムされ記録される記録媒体、もしくはプログラムとして伝搬される通信媒体
US6125364A (en) 1997-11-06 2000-09-26 International Business Machines Corporation Flexible object persistence framework using data cursor objects loaded from superclasses
US6360363B1 (en) * 1997-12-31 2002-03-19 Eternal Systems, Inc. Live upgrade process for object-oriented programs
US6330709B1 (en) 1998-03-30 2001-12-11 International Business Machines Corporation Virtual machine implementation for shared persistent objects
US6349322B1 (en) 1998-05-06 2002-02-19 Sun Microsystems, Inc. Fast synchronization for programs written in the JAVA programming language
US6484247B1 (en) 1998-06-25 2002-11-19 Intellution, Inc. System and method for storing and retrieving objects
US6345276B1 (en) * 1998-09-18 2002-02-05 Microsoft Corporation Representing base pointers in a shared memory heap
US6694346B1 (en) * 1999-04-30 2004-02-17 International Business Machines Corporation Long running, reusable, extendible, virtual machine
JP2001051861A (ja) 1999-08-10 2001-02-23 Mitsubishi Electric Corp 二重化システム
GB2353113B (en) 1999-08-11 2001-10-10 Sun Microsystems Inc Software fault tolerant computer system
JP3831154B2 (ja) 1999-08-13 2006-10-11 株式会社東芝 プログラム多重化拡大方法
CN2443432Y (zh) * 1999-12-28 2001-08-15 盛群半导体股份有限公司 以序列方式传递信息的显示器控制装置
US20020016814A1 (en) * 2000-08-07 2002-02-07 International Business Machines Corporation Method, system, and program for invoking stored procedures and accessing stored procedure data
US7096419B2 (en) * 2001-02-16 2006-08-22 Sas Institute Inc. System and method for object state persistence
GB2378535A (en) * 2001-08-06 2003-02-12 Ibm Method and apparatus for suspending a software virtual machine
GB2381092B (en) * 2001-10-19 2005-10-19 Ibm Object locking in a shared VM environment
US7526750B2 (en) * 2003-10-15 2009-04-28 Microsoft Corporation Object-based systematic state space exploration of software

Also Published As

Publication number Publication date
EP2426601A3 (en) 2012-10-03
US8037478B2 (en) 2011-10-11
CN1495632A (zh) 2004-05-12
US20080215587A1 (en) 2008-09-04
JP2006286013A (ja) 2006-10-19
JP4275683B2 (ja) 2009-06-10
CN100442225C (zh) 2008-12-10
EP2426601A2 (en) 2012-03-07
EP1389756A2 (en) 2004-02-18
CN1952881A (zh) 2007-04-25
EP1389756A3 (en) 2006-11-29
CN1329853C (zh) 2007-08-01
US20040034621A1 (en) 2004-02-19
JP2004094935A (ja) 2004-03-25
US7559064B2 (en) 2009-07-07

Similar Documents

Publication Publication Date Title
JP4275683B2 (ja) オブジェクト状態転送方法,オブジェクト状態転送装置およびオブジェクト状態転送プログラム並びにそのプログラムの記録媒体
KR100350141B1 (ko) 매체관리자,애플리케이션프로그램인터페이스와이를구현하는방법
US11392363B2 (en) Implementing application entrypoints with containers of a bundled application
JP2008033912A (ja) Nas向けのcdpの方法および装置
JP2005242403A (ja) 計算機システム
CN113568566B (zh) 利用索引物件来进行简易存储服务无缝迁移的方法、主装置以及存储服务器
JP6870466B2 (ja) 制御プログラム、制御方法、制御装置、及びデータベースサーバ
JP4713257B2 (ja) データ記憶装置及びバージョン管理プログラム
US10430292B2 (en) Snapshot deletion in a distributed storage system
JP2008282383A (ja) ストレージシステムのデータおよび構成の回復方法および装置
JP2009245004A (ja) 双方向データ配置システム、アクセス解析サーバ、データ移動サーバ、双方向データ配置方法、及び、プログラム
JP2021157259A (ja) オブジェクト最適配置装置及び方法
JP4971717B2 (ja) ディレクトリ分散型記憶装置及びデータ処理要求移譲プログラム
JP4445783B2 (ja) ファイル管理装置、ファイル管理装置を用いた計算機システム
US10430110B2 (en) Implementing a hybrid storage node in a distributed storage system
EP1313033A2 (en) File system, control method, and program
JP4512386B2 (ja) バックアップシステムおよび方法
JP2007317107A (ja) 情報処理システム、及び情報処理装置、並びに制御プログラム
US10452308B2 (en) Encoding tags for metadata entries in a storage system
TWI805380B (zh) 利用索引物件來進行簡易儲存服務無縫遷移的方法、主裝置以及儲存伺服器
JP2003157194A (ja) ファイルサーバプログラム
JP6898018B1 (ja) キャッシュ割当制御装置、キャッシュ割当制御方法及びプログラム
JP2009289089A (ja) クラスタ型ストレージシステム、そのノード装置、データ制御方法およびそのプログラム
JP4777386B2 (ja) データベースシステム及びデータベースサーバ装置
JP3754393B2 (ja) 分散ファイル装置及びそのプロセスマイグレーション方法並びにコンピュータ装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20040303

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20040213

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060328

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060526

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060620

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060811

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20060905

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060913

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090922

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100922

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100922

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110922

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120922

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130922

Year of fee payment: 7

LAPS Cancellation because of no payment of annual fees