JPH10133877A - マーシャリングフレームワークを使用して分散オブジェクトネットワーク上に不変オブジェクトを格納するためのメソッドと装置 - Google Patents

マーシャリングフレームワークを使用して分散オブジェクトネットワーク上に不変オブジェクトを格納するためのメソッドと装置

Info

Publication number
JPH10133877A
JPH10133877A JP9176096A JP17609697A JPH10133877A JP H10133877 A JPH10133877 A JP H10133877A JP 9176096 A JP9176096 A JP 9176096A JP 17609697 A JP17609697 A JP 17609697A JP H10133877 A JPH10133877 A JP H10133877A
Authority
JP
Japan
Prior art keywords
immutable
data store
data
object attribute
attribute value
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
JP9176096A
Other languages
English (en)
Inventor
Ken M Cavanaugh Iii
エム. カヴァナフ サード ケン
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.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
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 Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of JPH10133877A publication Critical patent/JPH10133877A/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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented
    • G06F9/4493Object persistence
    • 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/99942Manipulating data structure, e.g. compression, compaction, compilation
    • 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

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)

Abstract

(57)【要約】 【課題】分散クライアント/サーバー・コンピューティ
ングシステムにおいて不変オブジェクトが効率的に作成
され、かつアクセスされるように不変データ記憶を実装
するためのデータ構造、メソッド、および装置、を開示
する。 【解決手段】発明の一側面では、インストールされた不
変オブジェクト用の不変データを管理するためのメソッ
ドは、不変オブジェクト属性値をマーシャルバッファに
マーシャルして、コード化された不変オブジェクト属性
値を提供すること;不変オブジェクト属性値を更新し
て、更新された不変オブジェクト属性値を提供するこ
と;更新された不変オブジェクト属性値をマーシャルバ
ッファからアンマーシャルして、デコードされた更新済
不変オブジェクト属性値を提供すること;およびデコー
ドされた更新済不変オブジェクト属性値をデータストア
に書き込むこと;を含む。

Description

【発明の詳細な説明】
【0001】
【発明の属する分野】本発明は分散オブジェクトコンピ
ューティングシステム、クライアント−サーバーコンピ
ューティング、およびオブジェクト指向プログラミング
の分野に関する。更に詳細には、本発明は分散オブジェ
クトシステムにおける不変(persistent)オブジェクトで
ある分散オブジェクト用のデータを格納するためのメソ
ッドと装置に関する。
【0002】
【従来の技術】オブジェクト指向プログラミングメソッ
ド論は、従来のプログラミングメソッドを用いて開発さ
れたソフトウェアの納期遅れや予算超過の傾向の増大に
つれて、過去数年の間に益々注目されるようになった。
一般に、従来のメソッドを使って作成される大型プログ
ラムは「脆い」。従って、ユーザーの要求に応じたソフ
トウェアに対する小変更が、大きな設計変更や全プログ
ラムのリライティングを必要とする場合がある。オブジ
ェクト指向プログラミング戦略は、手順よりもデータの
取扱に重点を置いているのでこの問題を避ける傾向があ
り、従って現実世界の問題に対するより直観的アプロー
チをプログラムに提供する。更にオブジェクトは、関連
データと手順をカプセル化して、データと手順へのアク
セスをオブジェクトのインタフェースを介してのみ可能
にすることによって、その情報をプログラムの残部から
隠す。従って、オブジェクトのデータおよび/または手
順の変更は、プログラムの残部から比較的隔離されてい
る。
【0003】
【発明が解決しようとする課題】オブジェクト指向メソ
ッド論の分野における最近の進歩は、コンピュータネッ
トワークを介して相互接続されたコンピュータに対する
分散オブジェクトオペレーティング環境の実装(impleme
ntation)であった。ここで使われる場合、用語の「分散
オブジェクト」または「オブジェクト」は、インタフェ
ースを介したオペレーションによって操作できるコード
とデータのカプセル化されたパッケージのことである。
従って、分散オブジェクトは、オブジェクト指向プログ
ラミング(OOP)の当業者には、従来のプログラミン
グオブジェクトを定義する基本的特徴を含む点で従来の
プログラミングのオブジェクトとは異なる。まず第1
に、分散オブジェクトは多言語的である。すなわち、分
散オブジェクトのインタフェースは、様々なプログラミ
ング言語にマップ化できるインタフェース定義言語を使
って定義される。第2に分散オブジェクトは場所独立的
である、つまり分散オブジェクトはネットワークのどこ
にでも配置できる。これは、通常、単一アドレススペー
スに存在する従来のプログラミングオブジェクトとは明
らかに異なる。
【0004】分散オブジェクトオペレーティング環境に
ついて更に詳述すると、分散オブジェクトは、他のオブ
ジェクトにリクエストを送っているか、クライアントか
らのリクエストに回答しているかによって、クライアン
トオブジェクトにもサーバーオブジェクトにもなれる。
クライアントが目標オブジェクトをコールするとき、リ
クエストされたサービスを目標オブジェクトが確実に実
行できるように、一定の手順を実行しなければならな
い。これらの手順は、目標オブジェクトを識別して場所
を特定すること、目標オブジェクトが存在するサーバー
プロセスを開始すること(必要な場合)、目標オブジェ
クトを活性化すること(必要な場合)、および最後に、
その目標オブジェクトとの接続を確立して、コールをパ
スすることを含む。オブジェクトリクエストブローカー
(ORB)は、オブジェクトアダプタ(OA)と共に、
これらのサービスを実行するために、クライアントおよ
び目標オブジェクトと共働しなくてはならない。
【0005】分散オブジェクトのライフサイクルの展望
から、オブジェクトは過渡または不変の2つのカテゴリ
ーの一つに分類される。オブジェクトの過渡と不変の性
質を検討する場合、言及されるのは、オブジェクトの状
態の過渡的性質や不変的性質である。オブジェクト指向
プログラミング(OOP)の当業者には周知のように、
オブジェクトは2つのコンポーネント、すなわち実行可
能コードおよび状態によって記述される。実行可能コー
ドは、本質的に、それによってオブジェクトが動作する
命令であり、それはオブジェクトの「挙動(behavior)」
を定義する。状態は、オブジェクトの現行動作パラメー
タを定義するデータ等のコードではない、オブジェクト
の単なる残部である。
【0006】過渡(transient)オブジェクトは、通常、
ライフスパンが短く、単一のホストコンピュータプロセ
スに拘束される。従って、プロセス間を移動する過渡オ
ブジェクトのアイデンティティ、つまり状態、の連続性
は存在しない。それと対照的に、不変オブジェクトは単
一プロセスに拘束されず、そのアドレスとメモリの場所
は時間と共に変化する(例えば多くの「ライフ」サイク
ルを持つ)。不変オブジェクトでは、プロセスからプロ
セスへのアイデンティティと状態の連続性が存在する。
簡単に言えば、不変オブジェクトは、オブジェクトの特
定インスタンスの寿命を超え得る状態を持つオブジェク
トである。よく理解されるように、不変オブジェクトは
オブジェクトディベロッパに対して多くの利点を提供す
る。
【0007】不変オブジェクトを提供するための一つの
アプローチでは、オブジェクトに関する「不変」の質
が、既存のオブジェクトプログラミング言語に導入され
た。或るアプローチでは、既存のプログラム言語への拡
張が、不変オブジェクトの「不変的」質を構成する状態
データが書き込まれたデータベースの機能性に対するイ
ンタフェースを提供する。例えば、このメソッドを使用
した拡張言語用のコンパイラは、データベースと共に使
用するための特殊化されたコマンドのセットを受け入れ
るかもしれない。これらのメソッドと共に、使用される
最も一般的なタイプのデータベースはリレーショナル(r
elational)データベースである。しかしながら、リレー
ショナルデータベースは、オブジェクト状態が通常記載
されるフォーマットでデータを格納するように設計され
ていないので、これはそれ自体にジレンマを抱えてい
る。オブジェクト指向データベースは利用可能だが、オ
ブジェクト指向データベースによって作成されるオブジ
ェクトはCORBAオブジェクトではなく、従って、C
ORBAの指針によって提供される機能性とサービスを
利用できない。更に、現行のメソッド論を使用した不変
オブジェクト用の不変データの検索は速度が遅く、従っ
てシステム性能を劣化させる。
【0008】従来のインタフェース定義言語(IDL)
インタフェースでは、不変データオブジェクトは、ID
Lのサブセット、つまりデータベース記述言語(DD
L)によって記述されるデータベース(通常、ディスク
上に常駐する)に格納される。不変オブジェクトが使用
される度毎にディスク上のデータベースから直接読み取
ったりそれに書き込むプロセスは非効率な傾向がある。
一般に、ディスク上に格納されるデータベースからの読
取りとそれへの書込のプロセスは速度が遅い。更に、通
常、不変記憶マネジャ、つまりデータベースマネジャ
が、プロセスに適した不変オブジェクトを発見するため
にデータベースの検索に使用される。データベースマネ
ジャの使用は、しばしば、速度が遅いことがわかってい
る。従って、不変オブジェクトが容易に作成されてプロ
セスが分散オブジェクトシステム上で動作する間の任意
の時点でアクセスできるように、不変データ記憶を実装
するメソッドと装置を実装することが、有利となるだろ
う。
【0009】
【課題を解決するための手段】前記およびその他の目的
を達成すると共に本発明の目的に従って、分散クライア
ント/サーバー・コンピューティングシステムにおいて
不変オブジェクトが効率的に作成され、かつアクセスさ
れるように不変データ記憶を実装するためのメソッドと
装置が開示される。
【0010】本発明の一側面では、インストールされた
不変オブジェクト用の不変データを管理するためのメソ
ッドは、不変オブジェクト属性値をマーシャルバッファ
にマーシャルすることによって、コード化された不変オ
ブジェクト属性値を提供すること、不変オブジェクト属
性値を更新することによって、更新された不変オブジェ
クト属性値を提供すること、更新された不変オブジェク
ト属性値をマーシャルバッファからアンマーシャルする
ことによって、デコードされた更新済不変オブジェクト
属性値を提供すること、およびデコードされた更新済不
変オブジェクト属性値をデータストアに書き込むことを
含む。
【0011】本発明の別の側面では、デコードされた更
新済不変オブジェクト属性値をデータストアに書き込む
ためのメソッドは、データ構造内に格納された不変オブ
ジェクト属性のインデックスを抽出すること、データベ
ースの中の不変オブジェクト属性の場所を発見するこ
と、不変オブジェクト属性がインデックスの中で発見で
きない場合は不変オブジェクト属性をデータストアに加
えること、および不変オブジェクト属性に対応する場所
で不変オブジェクト属性値をデータストアに書き込むこ
とを含む。
【0012】本発明の上記その他の特徴および利点は、
下記の発明の詳細な説明と関連図面の中で更に詳しく提
示される。
【0013】本発明は、その更なる利点と共に、添付の
図面に関する下記説明を参照することによって最もよく
理解されるであろう。
【0014】
【発明の実施の形態】
1. 分散オブジェクトシステムの背景 本発明を、添付図面に示された発明の実施例に関して詳
しく説明する。本発明の一実施例では、分散オブジェク
トとコンピュータプロセスは、ネットワークで相互に連
結された一つ以上のコンピュータ上に常駐している。ネ
ットワークは適切な任意の形を取ることができる。例と
して、代表的なネットワーク構成110を図1Aに示
す。ネットワーク構成110は伝送ライン114に接続
された第1コンピュータ112を含む。ネットワーク構
成110は、更に、ネットワークコンピュータ間でデー
タと命令がパスされるように、他のコンピュータ11
8、120、および122に加えて、サーバー、ルータ
ー等116を含む。コンピュータネットワークの設計、
構造、および実装は、当業者には周知であろう。
【0015】図1のコンピュータ112、118、12
0、および/または122としての使用に適した代表的
なコンピュータ130の概略を図2に示す。コンピュー
タ130は二次記憶装置132(通常、中央処理装置、
つまりCPU)を含み、これは主記憶装置134(通
常、ランダムアクセスメモリ、つまりRAM)と双方向
的に、また主記憶装置136(通常、リードオンリーメ
モリ、つまりROM)と一方向的に連結されている。通
常、RAM134は「スクラッチパッド」メモリとして
使用され、現在CPU132上で作動中のプロセスのた
めの、分散オブジェクトおよびそれらに関連するコード
と状態を含むプログラミング命令とデータとを含む。R
OM136は、通常、コンピュータ130がその機能を
実行するために用いる基本的なオペレーティング命令、
データ、およびオブジェクトを含む。更に、ハードディ
スク、CD ROM、磁気光(フロプティカル)ドライ
ブ、テープドライブ等の大容量記憶装置138がCPU
132に双方向的に接続されている。大容量記憶装置3
8は一般的に、普通はCPU132によって活動的に用
いられない追加のプログラミング命令、データ、および
オブジェクトを含むが、アドレススペースはCPU13
2による、例えばバーチャルメモリ等のためのアクセス
が可能である。上記の各コンピュータは、通常、キーボ
ード、ポインタ器具(例えばマウスまたはスタイラス)
および/またはネットワーク接続のような入力媒体を含
む入出力媒体140をオプションとして含む。追加の大
容量記憶装置(図示せず)をネットワーク接続を介して
CPU132に接続こともできる。上記のハードウェア
要素およびソフトウェア要素、更にネットワーキング装
置の設計と構造は標準的なもので、当業者には馴染みの
ものであることは、当業者によく理解されるであろう。
【0016】本発明は、CORBAによって定義された
もの、または他の任意の適切な仕様を含め、任意の適切
な分散オブジェクトシステムの関連において実行するこ
とができる。しかしながら、説明の目的に対しては、本
発明は、主として、1995年7月のオブジェクト管理
グループ(OMG)からののCORBA仕様、改訂版
2.0、に基づいて実装されたオブジェクトリクエスト
ブローカー(ORB)の関連において説明される。
【0017】図3は、本発明の実装に適した代表的な分
散オブジェクトシステムの全体的アーキテクチャを概略
説明する。分散オブジェクトシステム10は、通常、オ
ブジェクトリクエストブローカー(ORB)11を含
む。ORB11は、クライアントからのコールをサーバ
ント(目標オブジェクト)に伝達してそのクライアント
に応答を返すのに必要な場所と輸送メカニズムと設備の
すべてを提供する。クライアントとサーバントは、同一
プロセス内、同一マシン上の異なるプロセス内、または
全く異なるマシン上に配置できる。この検討の目的に対
しては、クライアント20は、分散オブジェクト上のオ
ペレーションを呼び出す任意のコードでよいので、分散
オブジェクトまたはプロセスの形を取ることもできる
し、取らなくてもよい。分散オブジェクトは様々な表示
が可能である。例として、オブジェクトはアプリケーシ
ョンディベロッパによって提供されたC++でもよい。
そのほか、オブジェクトのための実装は、分散オブジェ
クトを生成するために有効な開発ツールを使用して開発
してもよい。
【0018】クライアント20は、スタブ21、サブコ
ントラクト層36、あるいはフィルタ40、およびトラ
ンスポート層38を介してサーバントと通信する。スタ
ブ21はサロゲート22、メソッドテーブル24、およ
びスタブ関数25を含む。クライアント20は、最初、
クライアントにはサーバーオブジェクトに見えるサロゲ
ート22と通信する。そのほかに、クライアント20
は、サロゲート22、メソッドテーブル24、およびス
タブ関数25の代わりに、動的呼出インタフェース(D
II)を介してサーバーオブジェクトと直接に通信して
もよい。動的呼出インタフェース26を使用して、クラ
イアントは動的リクエストを構築できる。クライアント
がコールを開始した後、コールはメソッドテーブルディ
スパッチメカニズム24を使って処理される。このよう
な技術は米国特許出願第08/307,929号で開示
されている。
【0019】サブコントラクト層36は、サブコントラ
クトを利用して特定のサブコントラクトによって指名(n
amed) された各種サービス(または特徴やオブジェクト
メカニズム)を実装するために、オブジェクトによって
要求された機能を提供するが、これについては1995
年11月7日申請の米国特許出願第08/554,79
4号に更に詳しく記載されている。サブコントラクト
は、個々のオブジェクトによって利用される分散オブジ
ェクトシステムによって提供されるサービスの質を識別
する。例えば、サブコントラクトは、特定のオブジェク
トのために安全性の特徴が使用されることを識別するこ
とができる。
【0020】フィルタ40が使用される場合、それは圧
縮、暗号化、トレース、またはデバッグ等の、オブジェ
クトに出入りする通信に適用すべき様々なタスクを実行
することができる。トランスポート層38は、通常はク
ライアントと同一プロセスを共有しないサーバントに出
入りする情報を、マーシャルし、アンマーシャルし、お
よび物理的に輸送するために動作する。
【0021】標準実装スイート28(またはオブジェク
トアダプタ)は、同一の方式でORBオブジェクト14
とインタフェースする一組のサブコントラクト、例えば
オブジェクトキーマネージメントを表す。当然のことな
がら、サブコントラクトは多重実装スイートに属するこ
とができる。また、インプリメンテーションスイートは
異なるサブコントラクトを利用してもよい。スケルトン
は、静的スケルトン32や動的スケルトン30の形を取
り得るが、これは、サーバントオブジェクトによってリ
クエストされるフォーマットにリクエストを変換するた
めに使用される。かくして、スケルトン3、32は適切
なサーバントオブジェクトをコールする。静的スケルト
ン32はインタフェース固有のオブジェクトインプリメ
ンテーション14をコールするために使用され、動的ス
ケルトン30は、一般に、インタフェース固有のオブジ
ェクトが利用できないときに使用される。ORBインタ
フェース34は、すべてのORBに対して同一なORB
に直接進むインタフェースで、オブジェクトアダプタの
オブジェクトインタフェースに依存しない。
【0022】ORBデーモン(daeman)46は、オブジェ
クトサーバーがクライアントによって呼び出されたとき
にアクティブである旨保証しなければならない。オブジ
ェクトサーバーを始動する技術は米国特許出願第08/
408,645号に開示されている。
【0023】安全プロトコル42は、インターネットイ
ンターORBプロトコルを保証して、トランスポート層
38を介して確実に情報を伝達するのに役立つ安全イン
タオペラビリティプロトコルである。これは安全性保
護、機密性等を意味することができる。インターネット
インターORBプロトコルは、通常、異なるマシン上の
プロセス間で通信するプロトコルである。しかしなが
ら、場合によって、インターネットインターORBプロ
トコルは同一マシン上のプロセス間で通信することがで
きる。セキュリティサーバー54は、異なるコンピュー
タ上のプロセス間で使用されるサービスを保証するセキ
ュリティアドミニストレーションサーバーである。
【0024】タイプコード/Anyモジュール44は
「タイプコード」と「Any」オブジェクトとを実装す
る。タイプコードはインタフェース定義言語(IDL)
データタイプを記述し、クライアントとサーバー間のタ
イプ記述の伝達を可能にする。IDLデータタイプのイ
ンスタンスをAnyオブジェクトによってカプセル化す
ることができる。Anyオブジェクトは、カプセル化さ
れたデータのタイプコードと、データの総称的コード化
を参照する。
【0025】インプリメンテーションレポジトリ50
は、オブジェクトサーバーに関する情報を格納するため
に使用される。具体的には、インプリメンテーションレ
ポジトリ50は、サーバープロセスを開始するのに必要
な情報を格納する。例えば、インプリメンテーションレ
ポジトリ50は、サーバープログラムの場所、プログラ
ムに対する任意の引数、およびプログラムに渡すべき任
意の環境変数等の情報を格納する。
【0026】シンプルパーシステンス56は、追加コー
ドの一部と共に、インタフェース定義言語(IDL)定
義タイプと、IDLコンパイラを介してそのIDLタイ
プを実行する出力形とを使用するので、IDL定義タイ
プをディスクから読み取ったりディスクへ書き込むこと
ができる。ネーミングサービス52は、ORBオブジェ
クトを指名(name)するために使用される。クライアント
はネーミングサービス52を使って希望のオブジェクト
を名前で発見することができる。ネーミングサービス5
2はオブジェクトレファレンスを返し、次にそのレファ
レンスを使ってそのオブジェクトにリクエストを送るこ
とができる。インタフェースレポジトリ48(IFR)
は、分散オブジェクトシステム内のすべてのオブジェク
トに対するすべてのインタフェースについて知識を持
つ。
【0027】2. 本発明による不変データ記憶メカニ
ズムの説明 分散オブジェクトのライフサイクルの展望から、オブジ
ェクトは過渡的または不変的品質を持つことができる。
オブジェクトの過渡的な性質や不変的な性質を検討する
場合、言及されるのは、オブジェクトの状態の過渡的性
質や不変的性質である。先に議論したように、状態は、
実行可能なコードではない、データ等の、単なるオブジ
ェクトの部分である。従って、本明細書で使用する場
合、用語の「不変性」および「不変データ」は、不変オ
ブジェクトの状態を定義するのに必要なデータのことを
指す。不変データは、不変オブジェクト属性値を有する
不変オブジェクト属性を備えている。
【0028】不変データ自体は、本明細書で「不変デー
タ」と呼ぶオブジェクトを備えることができる。不変デ
ータオブジェクトは、データストア、つまりデータベー
スに格納されるが、適切なインタフェース定義言語、例
えば周知のインタフェース定義言語(IDL)のサブセ
ットであるデータベース記述言語(DDL)で記述でき
る。ここで使用する場合、「データストア」とは、不変
オブジェクトおよびそのオブジェクトに関連する属性に
関係する情報を含むデータベースである。更に具体的に
は、データストアは、それぞれが名前と値を持つ関連属
性を有する不変データおよび/または不変データオブジ
ェクトのリスト、つまりシーケンスを含む。これらのデ
ータストアは、通常、RAM等の作業用メモリの記憶に
対して永久と見做されるディスクや類似の記憶装置に格
納される。現行メソッドを使用したデータストアからの
読取りとそれへの不変データの書込のプロセスは、しば
しば、非効率であることが分かっており、従ってシステ
ム性能を低下させる。
【0029】或る側面では、本発明は、オブジェクト属
性が効率的に検索されて不変記憶メカニズム(すなわ
ち、データストア)に書込できるように、不変オブジェ
クトをマーシャル、すなわちカプセル化したフレームワ
ークを提供するので、ディスク等の永久記憶媒体上に格
納されたファイルに対する属性の読取りと書込に関連す
る性能ペナルティが削減される。上記のフレームワーク
の使用も、分散オブジェクトに対するオブジェクト不変
性能力の円滑な統合を提供する。例として、本発明によ
って提供されるフレームワークは、データタイプが過渡
分散オブジェクトに固有のものか不変分散オブジェクト
に固有のものかにかかわらず、すべてのIDLデータタ
イプに対して同一マッピングの使用を可能にする。従っ
て、様々なオブジェクトを記述するための共通コードベ
ースを開発できるので、分散オブジェクトシステムの総
合性能が向上して、コードの再使用による信頼性が増加
する。
【0030】図4は、本発明の一実施例による、オブジ
ェクトモデル化技術(OMT)のクラス図表の概略表示
である。OMTクラス図表200は不変オブジェクトの
サポートに使用される総合フレームワークメカニズムを
表す。背景として、クラスとは、それからオブジェクト
を作成できるテンプレートである。クラスは、そのクラ
スのすべてのインスタンスに共通の挙動と属性を規定す
る。既存のクラスから新クラスを定義するメカニズムは
「インヘリタンス(inheritance) 」である。「インヘリ
タンス」は、再使用性を促進するメカニズムとしてよく
知られている。クラスの「サブクラス」は、その親クラ
スのオペレーションを相続(inherit) する。オブジェク
ト思考プログラミングの当業者にはよく理解されるよう
に、クラスの新しいインスタンスが作成されると、その
インスタンス変数用のメモリが自動的に割り当てられ
る。
【0031】図4は、不変オブジェクトの定義に使用さ
れる様々な関係データ構造202を示す。クラス202
は、クラス名204、関連属性206、および関連メソ
ッド208を含む。クラス間の無装飾の各ライン、例え
ばライン222は、接続された2つのデータ構造間の1
対1の関係を示す。ラインの一端の円220と他端の菱
形は、関係クラス間の多数対1の関係を示す。例とし
て、クラス「タイプ」221とSOP_DB::Roo
t(Simple Persistent Object_Data Base::Root)クラス
240のインスタンスとの間の関係は、多数対1の関係
である。ライン上の三角形、例えば三角形212は、ク
ラス間の相続関係を示し、三角形の底辺に面するクラス
が三角形の頂点に面するクラスから相続する。或るメソ
ッド名の前に見られるドル記号(例えばNEO_SPO
_DBクラス238のメソッド「$create」21
4)は静的メソッドまたはクラスメソッド、すなわち実
行時に関連オブジェクト状態を持たないメソッドを示
す。ゼロに等しくセットされるように図示されたメソッ
ド、例えばget_trans_stateメソッド2
16は、含有(containing)クラスで定義されないが現行
状態から相続するクラスで定義される抽象メソッド(abs
tract method) である。抽象メソッドを含むクラスのイ
ンスタンスは、通常、存在しないが、抽象クラスから導
かれたクラスのインスタンスは抽象クラスのインスタン
スと見做されることを理解しなければならない。
【0032】一実施例では、OMTクラス図表200を
構成するクラスは3グループ、すなわち不変オブジェク
トと、不変性(persistence) 224を実装するためのメ
ソッドとを定義するクラス、不変データ記憶メカニズム
225を定義するクラス、および不変性から書込、検索
される、データストア226を定義するクラスを含む。
不変オブジェクトクラス224は、属性を備えた不変デ
ータを定義する不変クラス250を含む。不変クラス2
50はメソッドテーブル(mテーブル)クラス252
(このクラスは、データストア226から不変データを
書込、検索するオペレーションを実行するためにクラス
250のインスタンス上で呼び出し得るメソッドを定義
する)に関係し、これについては本明細書で更に説明す
る。不変データ記憶メカニズム225は、NEO_SP
O_DBクラス238、NEO_Real_SPO_D
Bクラス239、NEO_SPO_Objectクラス
232、NEO_Real_SPO_Objクラス21
0、NEO_SPOManagerクラス242、Re
al_SPOManager243、NEO_SPO_
SCRepクラス228、およびNEO_RefCou
ntedSCRepクラス228を含む。これらのクラ
スは不変データ記憶メカニズムを備えたオペレーション
を定義するが、そのメカニズムを介して不変クラス25
0のインスタンスからの不変データがデータストア22
6から書込および/または検索される。
【0033】図示の実施例によれば、NEO_SPO_
DBクラス238のインスタンス(instance)は、データ
ストア、つまりデータベースを作成、オープンするため
に使用される静的クリエートアンドオープンメソッドを
持つ。NEO_Real_SPO_DBクラス239の
インスタンスはNEO_SPO_DBクラス238のイ
ンスタンスから抽出されるが、その静的メソッドはイン
ヘリタンスによって置き換えられない。静的クリエート
アンドオープン関数は、NEO_SPO_DBクラス2
38に関連する他のメソッドのすべてに先立って使用さ
れる。NEO_SPO_DBクラス238は、データの
読取り、書込、開閉を管理するデータベースマネジャを
表す。NEO_SPO_DBクラス238のインスタン
スはNEO_SPO_Objectクラス232に関連
しており、それは、次にオブジェクト呼出をサポートす
るメソッドを持ったサブコントラクト表示であるNEO
_SPO_SCRepクラス228のインスタンスに関
連する。NEO_SPO_Objectクラス232
は、メモリに保持されたオブジェクト表示を更新する実
際的機能を提供するデータベースオブジェクトを表す。
NEO_SPO_Objectクラス232に関連する
ゲットアトリビュート(get attribute) 、すなわちge
t_attrメソッドと、セットアトリビュート(set a
ttribute) 、すなわちset_attrメソッドは不変
オブジェクトの呼出に使用され、これについては図5に
関して以下に説明する。
【0034】或る実施例では、NEO_SPO_Man
agerクラス242に関連する静的クリエートアンド
オープンメソッドを使ってデータストアが作成、オープ
ンされる。しかし、多重バックエンドが不変データ記憶
メカニズム225に接続された場合、NEO_SPO_
Managerクラス242に関連する静的クリエート
アンドオープンメソッドは、更に、特定目的に合った適
切なバックエンドを選択するために使用される。NEO
_SPO_Managerクラス242は、同時性を管
理し、オブジェクトを作成し、オブジェクトを破壊し、
ディスク上のオブジェクトに対して行なわれた変更をセ
ーブするために使用されるインタフェースを提供する。
一般に、NEO_SPO_Managerクラス242
はシンプル不変オブジェクトアダプタとして役立つ。
【0035】データストア226は、その中で不変デー
タがメモリに書き込まれるデータ構造である。データス
トア226は、通常、これに限定されるものではない
が、DBVersionクラス254、SPO_D
B::Objectクラス234、SPO_DB::A
ttribute236、SPO_DB::Root2
40、およびタイプクラス221を含む。SPO_D
B::Attributes236は、単一データスト
アの表示であるSPO_DB::Root240に関連
するSPO_DB::Object234に関連する属
性である。或る実施例では、データストア226は不変
データ記憶メカニズム225から連結解除されることに
よって、不変データ記憶メカニズム225に影響するこ
となく容易に変更できる「接続可能なバックエンド」を
定義する。データストア用のデータ構造は、データスト
アが関連する特定のフレームワークによって幅広く変化
する。データストアのデータ構造の一つを、図7に関し
て以下に説明する。
【0036】図5は、本発明の一実施例による、データ
ストアに対する不変データの読取りと書込に関するステ
ップを説明するプロセス流れ図である。プロセスの流れ
はステップ302で開始され、そこで、属性のセット
(書込)または受取(作成)のいずれかのコールが行な
われる。ここで使用される場合、「属性」は値を持った
インタフェース定義言語(IDL)で規定されたオブジ
ェクトであるか、あるいは属性自体が値である。属性が
オブジェクトの場合、データストア不変データもここで
は「属性」と呼ぶ。或る実施例では、このコールはオブ
ジェクトレファレンスを使って行なわれる。
【0037】記載の実施例では、オブジェクトレファレ
ンスは、多くのフレームワーク内、例えばCORBAフ
レームワーク内で役立つオブジェクトレファレンスを表
すメカニズムのファットポインタ(fat pointer)でもよ
い。ファットポインタは、2つの「正常」ポインタを含
む構造と見做される。ファットポインタの第1ポインタ
は、クライアント表示を指示する表示ポインタであり、
ファットポインタの第2ポインタは、クライアント表示
に関連するメソッドテーブル、あるいはmテーブルを指
示するポインタである。クライアント表示は、記載の実
施例のサブコントラクト表示としても知られているが、
オブジェクト呼出をサポートするメソッドを持つオブジ
ェクトである。或る実施例では、各クライアント表示は
mテーブルに関連しており、mテーブルは、ファットポ
インタを用いて、コールされたメソッドを呼び出す場合
に使用する適切なディスパッチメソッドの決定に使用さ
れるスタブ関数に関連する。関連mテーブルはローカル
mテーブルでもリモートmテーブルでも標準mテーブル
でもよい。標準mテーブルはデータのマーシャリングと
結果のアンマーシャリングに使用されるコードに関連す
る。つまり、標準mテーブルは、不変オブジェクト用の
データをデータストアに書き込むために使用されるコー
ドと、不変オブジェクト用のコードをデータストアから
検索するために使用されるコードとを持つ。或る実施例
では、不変オブジェクトは標準mテーブルに関連する。
【0038】ステップ304では、データストア上でオ
ペレーションを実行するメソッドがオブジェクトレファ
レンスを使って呼び出される。記載の実施例では、呼び
出されたメソッドは属性をセットするメソッド(「セッ
トアトリビュート」メソッド)か、属性を受け取るメソ
ッド(「ゲットアトリビュート」メソッド)のいずれか
になる。或る実施例では、非属性メソッドはサポートさ
れないので、非属性メソッドを含むリクエストとはエラ
ーをして処理される。リクエストをマーシャルするため
の標準mテーブルメソッドを使用する実施例や、オペレ
ーションを局所的に実行するためのローカルmテーブル
メソッドを使用する実施例等の他の実施例も可能であ
る。後者の実施例では、オブジェクト表示は「混合」m
テーブル、つまり属性用の標準mテーブルメソッドと、
メソッド用のローカルmテーブル属性とを含むmテーブ
ル、を含むことができる。
【0039】ステップ304でメソッドが呼び出された
後、メソッドの呼出に使用される適切なスタブ関数が、
適切なmテーブルを使ってステップ306で識別され
る。次にステップ308では、識別されたスタブ関数
が、一部には呼び出すべきサーバントを識別するため
に、サブコントラクト、つまりサブコントラクト表示の
上で呼び出される。一旦、識別されたスタブ関数がサブ
コントラクト表示上で呼び出されると、メソッドは「セ
ットアトリビュート」オペレーションか「ゲットアトリ
ビュート」オペレーションかに関する決定がステップ3
10で行なわれる。オペレーションがセットアトリビュ
ートオペレーションである旨決定された場合、呼び出さ
れたメソッドにパスされるオブジェクトレファレンスは
属性値を含むことを示し、プロセスの流れはステップ3
12に進み、そこで、属性値がマーシャルバッファにマ
ーシャル、つまりコード化される。一旦、新属性値がマ
ーシャルバッファにマーシャルされると、セットアトリ
ビュートメソッドを用いて新属性値がデータストアに書
き込まれる。図4のOMT200を再び参照すると、セ
ットアトリビュートメソッドはNEO_SPO_Obj
ectクラス232(「set_attr」) のインス
タンスであるオブジェクトに関連するメソッドであり、
これについては図6に関して以下に説明する。セットア
トリビュートメソッドを使ってデータがデータストアに
書き込まれた後、データストアへのデータ書込のプロセ
スはステップ326で完了する。
【0040】オペレーションはゲットアトリビュートオ
ペレーションである旨ステップ310で決定された場
合、プロセス制御はステップ318に進み、そこで、ゲ
ットアトリビュートメソッドを使ってデータストアから
の属性が検索される。上述のセットアトリビュートメソ
ッドと同様、ゲットアトリビュートメソッド(「get
_ 」で始まるメソッド名とそれに続く属性の名前を持
ち、図4のNEO_SPO_Object232に関連
する)は、ステップ320で、データストアからデータ
をマーシャルバッファに読み取るために使用される。デ
ータストアからのデータの読取りに関連するステップ
は、図9に関して以下に説明する。ステップ322で
は、マーシャルバッファ内のデータが、コーラーによっ
てリクエストされた属性値、つまりコールされたメソッ
ドに関連するオブジェクトレファレンスを取得するため
に、アンマーシャルされる。属性値が取得された後、そ
の属性値はステップ324でコーラーに返される。その
後、不変オブジェクトのフレームワークの中でデータス
トアからデータを読み取るプロセスは、ステップ326
で完了する。
【0041】次に図6を参照して、本発明の一実施例に
よる、新属性値(図5のステップ314)をセットする
ためにセットアトリビュートメソッドを使用するプロセ
ス、を説明する。プロセスの流れ400はステップ40
2で開始され、そこでセットアトリビュートメソッドが
コールされる。ステップ404で、不変データ(すなわ
ち属性値)がデータストアからマーシャルバッファに読
み取られる。或る実施例では、データストアから読み取
られた不変データは、すでにマーシャルされた形、例え
ばオクテットの二進ストリームである。データストアか
らデータを読み取るために使用される一メソッドを、図
9に関して以下に説明する。不変データがデータストア
から読み取られた後、ステップ406で属性値がマーシ
ャルバッファにマーシャルされる。ステップ408で
は、その属性値を含むマーシャルバッファがデータスト
アに書き込まれる。データをデータストアに書き込むた
めに使用されるメソッドを、図8に関して以下に説明す
る。マーシャルバッファがデータストアに書き込まれた
後、セットアトリビュートメソッドを使用するプロセス
はステップ410で完了する。
【0042】図7は、本発明の一実施例による、データ
ストアのためのデータ構造500の概略表示である。図
7は、図4に関して上述したクラスの一部のインスタン
スの表示を示す。より詳細には、図7は、図4のグルー
プ226に含まれるクラスの表示を示す。データ構造5
00は、データストアに関連するバージョンと特性とを
識別するルートノード(root node) 502を含む。すな
わち、ルートノード502はデータストア用の識別子で
ある。図4を再び参照すると、ルートノード502はS
PO_DB::Rootクラス240のインスタンス
で、そこから由来した少なくとも一つの関連データスト
アオブジェクト504を持つ。データストアオブジェク
ト504はSPO_DB::Objectクラス234
のインスタンス、例えば「Obj1」である。各データ
ストアオブジェクト504は、SPO_DB::Att
ributeクラス236のインスタンス、例えば「A
ttr1」である属性506を含む。各属性506は、
名前508とバリュー510に関連しており、不変デー
タを表す。名前508は、オブジェクト504の属性5
06とバリュー510用の独特な識別子として役立つ
が、本発明の一実施例によるオクテットのシーケンスで
ある。
【0043】或る実施例では、各オブジェクト504も
オブジェクト識別子(OID)512および抹消フラグ
514と関連している。OID512は、それが関連す
るオブジェクト504を独特のメソッドで識別するが、
図12に関して以下に説明する。抹消フラグ514(デ
ィレーテッドフラグとも呼ぶ)は、それが関連するオブ
ジェクトの抹消によって、他のオブジェクトを挿入でき
る利用可能スペースが作成されたか否かを識別する。上
記の識別を行なう他のメソッドについては、分散オブジ
ェクトプログラミングの当業者には自明であろう。
【0044】或る実施例では、ルートノード502もタ
イプ516の関連リストを持ち、各タイプ516はイン
タフェース識別子と関連する独特のタイプ識別子(I
D)518を持つ。各タイプ516は対応するオブジェ
クト504と関連することができる。タイプ516は、
図4に示すタイプ221と等価である。この実施例によ
れば、各オブジェクト504は、一つのタイプ516に
対応するが、各タイプ516は一つ以上のオブジェクト
504に対応する。タイプID518は、特殊な呼出に
適したインタフェースを識別するために、「インタフェ
ースレポジトリ」の中で、つまり利用可能なインタフェ
ースのリストアップに使用できる。図2に関して、タイ
プID518は、呼出中のメソッドと共に使用する標準
mテーブルを識別するために、mテーブルレジストリ2
30で使用できる。
【0045】次に図8を参照して、本発明の一実施例に
よる、データストアにデータを書き込むメソッド、すな
わち図6のステップ408を説明する。データストアに
データを書き込むプロセスはステップ602で開始され
てステップ604に進み、そこで、書込先のデータスト
アが書込オペレーションを許すか否かの決定が行なわれ
る。この決定は、多重の読取りと書込のオペレーション
の同時発生を防ぐ何らかのメカニズムがデータストアへ
の書込を許すためにセットされるか否か、の決定を含
む。一部の実施例では、データストアが書込オペレーシ
ョンを許すか否かの決定は、そのデータストアに関連す
る書込ロックが、データストアに書込できるようにセッ
トされるか否かの決定を伴う。データストアが書込オペ
レーションを許さないと決定された場合、ステップ60
6で例外が放棄されて(thrown)、ステップ624でプロ
セスが終了する。
【0046】データストアが書込オペレーションを許す
旨ステップ604で決定された場合、プロセス制御はス
テップ608に移り、そこで、インデックスがNEO_
Real_SPO_Object(図2でNEO_Re
al_SPO_Obj210として識別されている)で
抽出される。インデックスがそこから抽出されるNEO
_Real_SPO_DB_Objectは、オブジェ
クトレファレンスによって指示されるNEO_Real
_SPO_DB_Objectクラスの内部インスタン
スで、これについては図11に関して以下に説明する。
インデックスが抽出された後、ステップ610におい
て、その抽出されたインデックスを使って、データスト
アでSPO_DB::Objectが発見される。SP
O_DB::Objectは、図2でSPO_DB::
Object234として識別されている。抽出された
インデックスは、通常、整数なので、様々な探索、例え
ばルックアップテーブルとリニアサーチを使った探索
が、データストアで適切なSPO_DB::Objec
tを発見するために使用される。SPO_DB::Ob
jectが発見された後、SPO_DB::Objec
tは、セットすべき属性の名前に対するマッチ(match)
を発見するためにステップ612で使用される。言い換
えれば、データストア内の対応するSPO_DB::O
bjectに関連するSPO_DB::Attribu
teが、データストアに書込中の属性の名前、すなわち
属性名に対するマッチを発見するために探索される。S
PO_DB::Attributeは図2でSPO_D
B::Attribute236として識別され、ま
た、図7に関して上述したように、データストア内の各
オブジェクトは関連属性を持つ。属性名は、通常、スト
リング、つまりオクテットのシーケンスなので、マッチ
を発見するために通常用いれられる探索メソッドは、リ
ニア探索メソッドと二進(binary)探索メソッドを含む。
【0047】一旦、データストア内の既存の属性名によ
る探索が行なわれると、セットすべき属性の名前に対応
するマッチが発見されたか否かに関する決定がステップ
624で行なわれる。属性名に対するマッチが発見され
なかった場合、プロセス制御はステップ616に進み、
そこで、新しいSPO_DB::Attributeが
属性リストの末尾に加えられる。新SPO_DB::A
ttributeがステップ616で属性リストの末尾
に加えられた後、ステップ618においてその属性名が
新属性に格納される。次に、ステップ620で、データ
ストアに書き込むべきデータが新属性に格納される。
【0048】属性名に対するマッチが発見された旨ステ
ップ614で決定された場合、プロセス制御は直接にス
テップ620に移り、そこで、マーシャルバッファの内
容、すなわちマーシャルバッファにデータとして含まれ
る属性値がその属性に格納される。言い換えれば、マー
シャルバッファ内でカプセル化されたデータが新属性に
格納される。最後に、マーシャルバッファ内でカプセル
化されたデータをデータストアに書き込むプロセスはス
テップ410で完了する。
【0049】次に図9を参照して、本発明の一実施例に
よる、データストアからデータを読み取るメソッド、す
なわち図5のステップ320と図6のステップ404を
説明する。データストアからのデータをマーシャルバッ
ファに読み取るプロセスはステップ702で開始され
る。ステップ704では、データの読取り先のデータス
トアが読取りを許すか否かに関する決定が行なわれる。
この決定は、或る実施例では、データストアから読取り
できるようにセットされた、データストアに関連する共
同読取りロック(shared read lock)が存在するか否かの
決定を含む。読取りロックが読取りオペレーションを許
さないと決定された場合、706で例外が放棄され、デ
ータストアからデータを読取りできないことを示す。デ
ータストアからデータを読み取るプロセスはステップ7
24で終了する。
【0050】データストアが読取りオペレーションを許
す旨ステップ704で決定された場合、プロセス制御は
ステップ708に移り、そこで、インデックスがNEO
_Real_SPO_Object(図4でNEO_R
eal_SPO_Obj210と識別されている)から
抽出される。インデックスは、オブジェクトレファレン
スによって指示されたNEO_Real_SPO_Ob
jectクラスの内部インスタンスから抽出されるが、
これについては図13に関して以下に説明する。インデ
ックスが抽出された後、抽出されたインデックスは、ス
テップ710で、対応するSPO_DB::Objec
tを発見するために使用される。SPO_DB::Ob
jectは図2で234SPO_DB::Object
234として識別されている。抽出されたインデックス
は、通常、整数なので、様々な探索メソッド論、例えば
ルックアップテーブルとリニアサーチとを使用した探索
が、適切なSPO_DB::Objectを発見するた
めに使用される。SPO_DB::Objectが発見
された後、SPO_DB::OBjectは、ステップ
711で、読み取るべき属性の名前に対するマッチを発
見するために使用される。或る実施例では、リニア探索
メソッドを使って、データストアから読み取るべき属性
の名前、すなわち属性名に対するマッチを発見するため
に、対応するSPO_DB::Objectに関連する
これらのSPO_DB::Attribute(図4の
クラス236)が配置される。他のメカニズム、例えば
ハッシングや二進探索が使用されるが、オブジェクトが
少数の属性しか持たない普通のケースでは、リニア探索
が最善の選択であることをよく理解しなければならな
い。図7に関して上述したように、各データストアオブ
ジェクトは一つ以上の関連属性を持つ。
【0051】一旦、データストアの既存の属性名による
探索が行なわれると、読み出すべき属性の名前に対応す
るマッチが発見されたか否かに関する決定がステップ7
12で行なわれる。属性名に対するマッチが発見されな
かった場合、読み取るべき属性は、ステップ710で識
別されたデータストアオブジェクトに対して存在しない
と決定される。プロセス制御は次にステップ714に進
み、そこで、一実施例によれば、例外の代わりに、空デ
ータ(null data) がコーラーまたはリクエストプロセス
に返される。或る場合には、空データは単に属性がセッ
トされていないことを意味するだけなので、空データは
エラーを表示しないかもしれない。空データがコーラー
に返された後、データをデータストアからマーシャルバ
ッファに読み取るプロセスは、ステップ722で完了し
たものと見做される。
【0052】属性名に対するマッチが発見された旨ステ
ップ712で決定された場合、ステップ716におい
て、属性の値に対応するデータが、適切なSPO_D
B::Attribute(読み取るべき属性の名前に
一致する名前を持つ属性)から取得される。属性の値に
対応するデータがSPO_DB::Attribute
から取得された後、データはステップ718でコーラー
に返される。データストアからマーシャルバッファにデ
ータを読み取るプロセスは、その後ステップ722で完
了する。
【0053】属性をデータストアから読み取ったりデー
タストアへ書き込むには、まず、データストアを開かな
ければならない。或る実施例では、データストアを開く
ために、そのデータストアに関係する情報を含むファイ
ルが識別される。分散オブジェクトシステム上で動作中
のプロセスは、一般に一つ以上のデータストアを利用し
ているので、まずデータストアから読み取ったりデータ
ストアに書き込むべき特定の属性に適したファイルが識
別される。図7に示す実施例に関して上述したように、
属性はオブジェクトと関連し、その各オブジェクトが次
にオブジェクト識別子と関連する。オブジェクト識別子
は、データストアと、従ってオブジェクトとそれに関連
する属性が属するファイル、とを識別する情報を含む。
オブジェクト識別子を図12に関して以下に更に詳しく
説明する。或る実施例では、特定のデータストアを開く
ために用いられる適切なファイルが、データストアから
読み取ったりデータストアに書き込むべき属性に関連す
るオブジェクトのオブジェクト識別子を使って、独特な
メソッドで識別される。
【0054】図10は、本発明の一実施例による、デー
タストアのオープニングに関連するステップを示すプロ
セス流れ図である。プロセスはステップ802で開始さ
れてステップ803に進み、そこで、データ記憶用の適
切なファイルが選択される。すなわち、データファイル
は、例えば開かれる記憶ディスク上に配置されたファイ
ルから選択される。適切なファイルを選択するメソッド
を図11に関して以下に説明する。適切なファイルが選
択された後、マーシャルバッファが、データ記憶用の選
択されたファイルを使ってステップ804で作成され
る。このマーシャルバッファはデータをメモリに保持す
るために使用され、「ファイルマーシャルバッファ」ま
たは「マーシャルバッファファイル」と見做される。次
に、ステップ806で、データストアバージョンレコー
ドが、データストアに対応するアンマーシャルメソッド
を使って、データファイルからアンマーシャルされる。
通常、バージョンレコードのフォーマットは変化しない
ので、データファイルに格納されたデータフォーマット
を識別するためにそのバージョンレコードを使用でき
る。
【0055】データストアバージョンレコードがデータ
ファイルからアンマーシャルされた後、そのバージョン
レコードによって識別されたバージョンタイプがシンプ
ル不変コードのバージョンでサポートされるか否かに関
して、ステップ808で決定が行なわれる。例として、
図4のデータストア226のスキーマを更新するとき
は、DBVersion254に関連するバージョン
は、データストア226を実装するコードがすべてのサ
ポートされたバージョンを認識して正しく解釈するよう
に変更される。すなわち、データストアバージョンレコ
ードは、ファイルがデータストアとしてサポートされる
か否かを決定するためにチェックされる。或る実施例で
は、バージョンレコードをチェックするプロセスも、適
切なファイルがデータストアとして役立つように開かれ
ているか否かを確かめるチェックを伴う。例として、そ
のチェックは、電子メールファイルがデータベースとし
て不注意に開かれているか否か決定することができる。
バージョンタイプがサポートされない場合、プロセス制
御はステップ810に進み、そこで、バージョンタイプ
がサポートされないことを示すために例外が放棄され
る。その後、データストアを開くプロセスがステップ8
20で終了する。
【0056】データファイルのバージョンレコードによ
って指示されたバージョンタイプがサポートされている
旨ステップ808で決定された場合、ステップ812に
おいてSPO_DB::Rootタイプオブジェクトが
作成される。一旦、SPO_DB::Rootオブジェ
クトが作成されると、ステップ814において、データ
がファイルからSPO_DB::Rootオブジェクト
に関連する構造、すなわちマーシャルバッファファイル
にアンマーシャルされる。すなわち、データは、ファイ
ルからデータストアルートオブジェクトに関連する構造
にアンマーシャルされる。インタフェース定義言語(I
DL)コンパイラは、ファイルからのデータをアンマー
シャルするために使用されるコンパイル済のアンマーシ
ャル関数を生成する。従って、ファイルからのデータを
ルート構造にアンマーシャルするために使用される実際
のアンマーシャルメソッドが分かっている。データがマ
ーシャルバッファファイルからアンマーシャルされた
後、ファイルはステップ816で閉じられる。
【0057】ステップ817では、データストアが、デ
ータストアレジストリによって登録されるが、それは、
或る実施例では分散オブジェクトシステム上の特定プロ
セスに関連するデータストアのリストを含む。データス
トアがデータストアレジストリによって登録された後、
ステップ818でルートがコーラーに返される、すなわ
ちステップ218で作成されたSPO_DB::Roo
tがコーラーに返される。その後、データストアを開く
プロセスはステップ822で完了する。データストアル
ートオブジェクトは、データストアルートオブジェクト
を破壊するためにコマンドが発行されるまでメモリの中
に残ることをよく理解しなければならない。従って、特
定プログラムを実行する間の任意の時点で、いくつもの
データストアを開けることができる。
【0058】次に図11を参照して、本発明の一実施例
による、データ記憶用の適切なファイルの選択メソッ
ド、すなわち図10のステップ803を説明する。記載
の実施例では、「適切なファイル」とは、所定の呼出に
関連する情報の格納を含むかその受け入れが可能なファ
イルの無傷なバージョン(intact version)のことを指
す。通常の状況、すなわち分散オブジェクトシステム上
のプロセスが適切に実行されている場合、ファイル
「F」はデータ記憶用に選択すべき適切なファイルであ
る。しかしながら、ファイルへの書込プロセスの実行時
に、ファイルが改竄(corrupted) されるような問題が起
こった場合、ファイル「F」よりもファイル「F」に関
係するファイルの方が選択すべき適切なファイルにな
る。例として、新ファイルのF.NEWが準備されるま
でファイルFが無傷に保たれるのを保証するために、新
ファイル「F.NEW」(ファイルFに書き込むための
変更を含む)をファイルFへの書込プロセスで作成でき
る。更に、システム破壊がファイルFへの書込プロセス
の間に起こった場合にバックアップデータを確実に利用
できるように、バックアップファイル「F.BACK」
もファイルFへの書込のプロセスで作成される。ファイ
ルF.NEWが作成された後、ファイルFはファイル
F.BACKと改名され、ファイルF.NEWはファイ
ルFと改名される。その後、ファイルF.BACKは抹
消される。
【0059】適切なファイルを選択するプロセスはステ
ップ902で開始される。ステップ904では、通常、
適切なファイルを求める探索の目標ファイルになるはず
のファイルFが存在するか否かを確かめるためにチェッ
クが行なわれる。次に、ファイルF.NEWのための探
索がステップ906で行なわれる。ファイルF.NEW
のための探索が行なわれた後、ファイルF.BACKを
求める探索がステップ908で行なわれる。次に、ステ
ップ910で、ファイルFが存在するか否かの決定が行
なわれる。ファイルFが存在する場合、ファイルFは無
傷であると予想され、ステップ912で適切なファイル
として選択される。ステップ902でファイルFが存在
しないと決定された場合、プロセス制御はステップ91
6に進み、ファイルF.NEWとF.BACKが共に存
在するか否か決定される。F.NEWとF.BACKが
共に存在すると決定された場合、ファイルF.NEWは
無傷と予想され、ステップ918で適切なファイルとし
て選択される。ファイルFが存在しないのに、F.NE
WとF.BACKの両ファイルが存在することは、ファ
イルFが置き換えられたこと、およびファイルF.NE
WをファイルFと改名してファイルF.BACKを抹消
するステップが起こらなかったと想定されることを示
す。従って、ファイルF.NEWは、そのファイルが存
在した場合、ファイルFに含まれるはずの情報を含むも
のと想定される。ファイルF.NEWは、従って、選択
すべき適切なファイルと想定される。ファイルF.NE
Wがステップ918で選択された後、適切なファイルを
選択するプロセスはステップ922で終了する。
【0060】ステップ916に戻って、ファイルFが存
在しないとステップ910で先に決定されていたとし
て、ステップ916においてファイルF.NEWとファ
イルF.BACKが共に存在しないと決定された場合、
ステップ920で例外が放棄され、適切なファイルが存
在しないことを示す。その後、適切なファイルを選択す
るプロセスはステップ922で終了する。
【0061】上述のように、オブジェクト識別子を使っ
て、オブジェクトが関連するデータストアオブジェクト
とデータストアが独特なメソッドで識別される。図12
は、本発明の一実施例によるオブジェクト識別子の概略
表示である。オブジェクト識別子(OID)1002
は、OID1002が関連するオブジェクトを独特なメ
ソッドで識別する情報を含むデータ構造で、オブジェク
トレファレンスをマーシャルおよびアンマーシャルする
プロセスで使用されるが、これについては図14と15
に関して以下に説明する。記載の実施例では、OID1
002はサブコントラクト識別子(SCID)100
4、データストア識別子、つまりデータベース識別子
(DBID)1006、およびOIDインデックス10
08を含む。
【0062】或る実施例では、SCID1004はタイ
プ「ロング」、すなわち長い整数で、OID1002に
よって識別されたオブジェクトに関連するサブコントラ
クトを独特なメソッドで識別する。OID1002によ
って識別されたオブジェクトのための適切なデータスト
アは、DBID1006の使用によって決定される。D
BID1006は、タイプスタンプ1010、プロセス
識別子1012、およびカウント変数1014を含む入
れ子構造(nested structure)である。図示の実施例で
は、タイムスタンプ1010はタイプロングで、特定の
データストアがアクセスされた最終時点に関する情報を
提供する。プロセス識別子1012はタイプ「ショー
ト」、すなわち短い整数で、OID1002によって識
別されたオブジェクトに関連するデータストアを作成し
たプロセスを識別する。またタイプショートであるカウ
ント変数1014は、データストアが作成される度毎に
増分されるカウンタである。プロセス識別子1012
は、データストアを同時に作成する多重プロセスが、他
のプロセスによってオープン可能な独特のDBID10
06を作成するのをチェックするために使用される。フ
ァイルが作成された後は、プロセス識別子1012は最
早プロセスに関連しない。一般に、タイムスタンプ10
10、プロセス識別子1012、およびカウント変数1
014は、同一ホスト上の一つ以上のデータストアが同
一DBID1006を持つ可能性が低くなるように、指
定される。
【0063】本発明の一実施例によれば、OIDインデ
ックス1008は、インデックス1016とユーズカウ
ント1018とを含む構造である。OIDインデックス
1008はオブジェクトレファレンスと直接に関連し、
そのオブジェクトレファレンスを適切なオブジェクトと
関連させるために使用される。インデックス1016
(図示の実施例ではタイプロング)は、OID1002
によって識別されたオブジェクトを発見するために、デ
ータストアに関連するオブジェクトのリストによるクイ
ックインデクシングを見込む。言い換えれば、インデッ
クス1016は、DBID1006によって識別された
データストアに関連するオブジェクトのリスト、つまり
シーケンスの中のオブジェクトの相対位置を決める。カ
ウント1018は、ユーズカウントとしても知られてい
るが、インデックス1016が再使用される度毎に増分
される。カウント1018(図示の実施例ではロングタ
イプ)は、インデックス1016に関連するオブジェク
トレファレンスの有効性を決定するために使用できる。
例として、オブジェクトレファレンスは、オブジェクト
のリストの所定の場所、つまりスロットに配置されたオ
ブジェクトに関連することができる。そのオブジェクト
が抹消されると、抹消されたオブジェクトに関連するす
べてのオブジェクトレファレンスは最早有効でない。カ
ウント1018の旧値(outdated value)は、通常、関連
オブジェクトレファレンスが無効であることを示す。
【0064】図13は、本発明の一実施例によるオブジ
ェクトレファレンスの概略表示である。オブジェクトレ
ファレンス1102は、メソッドテーブル、つまりmテ
ーブル1104、およびサブコントラクト表示1106
に関連する。mテーブル1104は、呼出可能なメソッ
ドに関連するスタブ関数へのポインタを含み、ローカル
mテーブルまたはリモートmテーブルのいずれでもよ
い。ローカルmテーブルは、ローカルプロセスで使用さ
れるメソッドに関連するが、リモート、すなわち標準m
テーブルは、リモートプロセスで使用されるメソッドに
関連する。或る実施例では、オブジェクトレファレンス
がローカルのプロセスに関連する場合、mテーブル11
04はローカルmテーブルとなる。同様に、オブジェク
トレファレンス1102がリモートプロセスに関連する
場合、mテーブル1104はリモート、つまり標準mテ
ーブルになる。前述したように、不変オブジェクトはリ
モートmテーブルに関連する。
【0065】サブコントラクト表示、つまりNEO_S
PO_SCRep1106(図4ではNEO_SPO_
SCRep228と表示)は、NEO_Real_SP
O_Object1108(図4ではNEO_Real
_SPO_Obj210と表示)に関連する。NEO_
SPO_SCRep1106によって引照されたNEO
_Real_SPO_ObjはOIDインデックス11
12(図12に関してOIDインデックス1008とし
て記載)と、NEO_Real_SPO_DBとに関連
する。NEO_Real_SPO_DBは、図4でNE
O_Real_SPO_DB239として表される。
【0066】分散オブジェクトは、不変であるかないか
を問わず、基本的な「ライフサイクルオペレーション」
を持ち、それは、通常、これに限定されるわけではない
が、呼出、マーシャリング、アンマーシャリング、作
成、および破壊を含む。オブジェクト呼出は、サーバン
トに或るオペレーションを実行させるためにサーバント
オブジェクトを呼び出すプロセスである。オブジェクト
呼出の例は、ゲットアトリビュートまたはセットアトリ
ビュートメソッドのいずれかの呼出であり、これについ
ては先に図5に関して述べた。不変オブジェクトのマー
シャリング、アンマーシャリング、作成、および破壊の
オペレーションについは、それぞれ図14〜18に関し
て説明する。
【0067】図14は、本発明の一実施例による、マー
シャルバッファへのオブジェクトレファレンスのマーシ
ャリングに関連するステップを説明するプロセス流れ図
である。具体的には、不変オブジェクトに関連するオブ
ジェクトレファレンスをマーシャルするプロセスについ
て説明する。プロセスはステップ1202で開始されて
ステップ1204に進み、そこで、そのオブジェクトレ
ファレンスに関連するデータストアが読取状態にあるか
否か決定される。データストアが読取状態にない場合、
ステップ1206で例外が放棄され、マーシャリングプ
ロセスはステップ1224で終了する。一方、データス
トアが読取状態にある場合、図12と13に関して上述
したように、OIDインデックスがオブジェクトレファ
レンスから取得されて、ステップ1208でSPO_D
B::Objectのインスタンスに変換される。ステ
ップ1210において、SPO_DB::Object
のインスタンスへのOIDインデックスの変換が成功し
たか否かに関する決定が行なわれる。或る実施例では、
この決定は、マーシャルすべきオブジェクトレファレン
スが有効か否かを決定するために用いられるエラーチェ
ックである。OIDインデックスへの変換が成功しなか
った場合、オブジェクトレファレンスは最早有効でない
ことを示すために、例外がステップ1206で放棄され
て、マーシャリングプロセスがステップ1224で終了
する。
【0068】OIDインデックスがSPO_DB::O
bjectのインスタンスに首尾よく変換された場合、
プロセス制御はステップ1212に進み、そこで、図1
2に関して上述したように、OIDが作成される。OI
Dが作成された後、サブコントラクト識別子(SCI
D)(OIDによって識別されたオブジェクトに関連す
るサブコントラクトに対応)がステップ1214でOI
Dに格納される。SCIDによって識別されたこのサブ
コントラクトは、図13のオブジェクトレファレンスに
対して記載されたサブコントラクト表示に関連するサブ
コントラクトである。通常、OIDに関連するサブコン
トラクトは一つしか存在しないのでSCIDが固定され
る。SCIDがOIDに格納された後、データストア識
別子、つまりデータベース識別子(DBID)が、ステ
ップ1208のSPO_DB::Objectに関連す
るNEO_Real_SPO_DBのインスタンスから
抽出される。DBIDの一部として含まれる情報は、こ
れに限定されるわけではないが、先に図12に関して記
載したように、タイプスタンプ、プロセス識別子、およ
びカウンタを含む。DBIDはステップ1218でOI
Dに挿入、つまり格納される。
【0069】DBIDがOIDに格納された後、オブジ
ェクトレファレンスに関連するOIDインデックスがス
テップ1220でOIDにコピーされる。次に、OID
がステップ1222でマーシャルバッファにマーシャル
される。OIDをマーシャルするために使用されるマー
シャリング関数はIDLコンパイラから取得され、OI
DのためのIDL定義に基づく。最後に、マーシャリン
グプロセスはステップ1224で完了する。
【0070】一旦、オブジェクトレファレンスが或る領
域でマーシャルバッファにマーシャルされると、それは
他の領域のマーシャルバッファからアンマーシャルでき
る。オブジェクトレファレンスをアンマーシャルするプ
ロセスは、オブジェクトレファレンスをマーシャルする
プロセスの逆と見做すことができる。言い換えれば、オ
ブジェクトレファレンスをマーシャルすることはマーシ
ャルバッファでオブジェクトレファレンスをコード化す
ることを意味するのに対して、マーシャルバッファから
オブジェクトレファレンスをアンマーシャルすること
は、マーシャルされたオブジェクトレファレンスをデコ
ードすることを意味する。
【0071】次に図15を参照して、本発明の一実施例
による、マーシャルバッファからデータをアンマーシャ
ルするプロセスを説明する。マーシャルバッファに含ま
れたオブジェクトレファレンスをアンマーシャルするプ
ロセスはステップ1302で開始されてステップ130
4に進み、そこで、OIDが、それがカプセル化される
マーシャルバッファからアンマーシャルされる。OID
がアンマーシャルされた後、OIDに対応するSCID
が正しいか否か、すなわちSCIDが期待される値を持
つか否かに関する決定が行なわれる。SCIDは正しく
ないと決定された場合、例外がステップ1307で放棄
されて、データをアンマーシャルするプロセスはステッ
プ1309で終了する。
【0072】ステップ1306で、SCIDが正しいと
決定された場合、次にステップ1308でDBIDがO
IDから取得される。多重データストアは、所定のプロ
セスの進行中、開いているので、マーシャルバッファに
含まれるオブジェクトレファレンスに関係する特定のデ
ータストアは、しばしば、先験的に未知である。DBI
Dは、オブジェクトレファレンスに対応するデータスト
アを決定するために使用される。記載の実施例では、D
BIDは、同一プロセス内で開かれているすべてのデー
タストアに関係する情報を含むデータストアレジストリ
でキーとして使用される。或る実施例では、データスト
アレジストリは、DBIDをインデックスとして使用し
てデータストアレコードを格納するルックアップテーブ
ルとし使用される。
【0073】DBIDがOIDから取得された後、プロ
セス制御はステップ1310に移り、そこで、DBID
によって識別されるデータストアが発見されたか否かに
関する決定が行なわれる。適切なデータストアが発見さ
れなかった場合、ステップ1307で例外が放棄され
て、手順はステップ1309で終了する。他方、適切な
データストアが発見された場合、次にステップ1312
において、データストアが読取オペレーションを許すか
否か決定される。記載の実施例では、データストアが読
取オペレーションを許すか否かの決定は、読取ロックが
保持されているか否かの決定である。データストアが読
取オペレーションに対して開いていない場合、ステップ
1307で例外が放棄される。そうでなく、データスト
アが読取オペレーションに対して開いている場合、ステ
ップ1314において、OIDから取得されるOIDイ
ンデックスが有効か否かに関する決定が行なわれる。O
IDインデックスが有効でない場合、ステップ1307
で例外が放棄される。
【0074】OIDインデックスが有効である旨ステッ
プ1314で決定された場合、プロセス制御はステップ
1316に進み、そこで、データストアオブジェクトラ
ッパーがOIDインデックスを使って構築されるが、そ
れは、図4で識別されたNEO_Real_SPO_O
bj210である。データストアオブジェクトラッパー
は、真のオブジェクトを作成するために使用し得るコー
ドを「ラップ(wrap)」またはパッケージするために使用
される。言い換えれば、オブジェクトラッパーを使用し
て、NEO_Real_SPO_ObjへのSPO_D
B::Objectのインスタンスの変換に関係するコ
ードがラップされる、すなわちNEO_Real_SP
O_Objは、SPO_DB::Objectである実
際のオブジェクト表示を囲むラッパーである。一般に、
オブジェクトラッパーの機能は、同一のサブコントラク
トが異なるデータストアに対して使用できるように、関
連サブコントラクトの実装をデータストアの実装から分
離することである。データストアオブジェクトラッパー
が構築された後、ステップ1318でタイプ識別子がオ
ブジェクトラッパーから取得される。次に、ステップ1
320で、データストアオブジェクトがオブジェクトラ
ッパーから取得される。
【0075】データストアオブジェクトがオブジェクト
ラッパーから取得された後、ステップ1322でインタ
フェース識別子(ID)がデータストアから取得され
る。インタフェースIDはステップ1318で取得され
たタイプIDを引数として使用して発見してもよい。ス
テップ1324では、オブジェクトレファレンスの構築
で使用し得る適切なmテーブルを発見するために、イン
タフェースIDがmテーブルレジストリでキーとして使
用される。mテーブルレジストリは、mテーブルのリス
トを含むデータ構造である。或る実施例では、不変オブ
ジェクトに関係するオブジェクトレファレンスに対し
て、適切なmテーブルはリモートmテーブルである。適
切なmテーブルがmテーブルレジストリで発見された
後、プロセス制御はステップ1326に進み、そこで、
オブジェクトレファレンスの作成に使用すべきサブコン
トラクト表示が、ラッパーとリモートmテーブルとを使
用して構築される。ステップ1328では、図13に関
して上述したオブジェクトレファレンスが、サブコント
ラクト表示とリモートmテーブルとを使って構築され
る。最後に、ステップ1330で、オブジェクトレファ
レンスが、アンマーシャルメソッドを呼び出したプロセ
スに返される。
【0076】図16は、本発明の一実施例による、オブ
ジェクトレファレンスの作成に関連するステップを示す
プロセス流れ図である。図4に関して、クリエートメソ
ッドがNEO_SPOManager242上で定義さ
れる。オブジェクトレファレンスを作成するプロセスは
ステップ1402で開始され、そこで、クリエートプロ
セスがタイプ識別子を引数としてコールされる。タイプ
識別子は、インタフェース識別子が既知の場合に決定さ
れる。例として、インタフェース識別子をインタフェー
スレポジトリ、すなわちインタフェースのリストの中で
インデックスとして使用して、インタフェース識別子を
対応するタイプ識別子に関連させることができる。ステ
ップ1404では、SPO_DB::Objectのイ
ンスタンスを真のオブジェクトに変換するためのNEO
_Real_SPO_Objが作成されるが、これにつ
いては図17に関して以下に説明する。
【0077】このオブジェクトラッパーが構築された
後、ステップ1406でインタフェース識別子がデータ
ストア、すなわちNEO_Real_SPO_DBから
取得される。インタフェースIDは、クリエートプロセ
スがコールされたときに、図4のNEO_SPO_Ma
nager244のクリエートメソッドに引数としてパ
スされたタイプIDを使って発見される。ステップ14
08では、返されたインタフェースIDが、不変オブジ
ェクト用のオブジェクトレファレンスの構築に適したm
テーブルを発見するために、mテーブルレジストリの中
でキーとして使用される。先に述べたように、或る実施
例では、適切なmテーブルはリモートmテーブルであ
る。適切なmテーブルがmテーブルレジストリで発見さ
れた後、プロセス制御はステップ1410に進み、そこ
で、サービス用のリクエストを示すサブコントラクト表
示が、オブジェクトラッパーとリモートmテーブルとを
使って構築される。ステップ1412では、図13に関
して上述したオブジェクトレファレンスがサブコントラ
クト表示とリモートmテーブルとを使って構築される。
最後に、ステップ1414で、新しく作成されたオブジ
ェクトレファレンスが、クリエートプロセスをコールし
たプロセスに返される。
【0078】次に図17を参照して、本発明の一実施例
による、タイプNEO_Real_SPO_Obj(図
16のステップ1404)のオブジェクトラッパーを作
成するメソッドを説明する。オブジェクトラッパーを作
成するプロセスは、ステップ1502で、オブジェクト
ラッパーを作成するためのコールで開始される。オブジ
ェクト用の新スロットがSPO_DB::Object
リストまたはシーケンスで利用可能か否かに関して、ス
テップ1504で決定が行なわれる。図7に関して先に
記載したように、各SPO_DB::Objectに関
連する抹消フラグは、データストアに関連するオブジェ
クトのリストの中の空、つまり未使用スロットを識別す
るためにセットされる。或る実施例では、空スロットが
利用可能か否かの決定は、真(true)にセットされる抹消
フラグのためのオブジェクトのリストによる探索を含
む。他の、より効率的な実施例は、二次データ構造、例
えば空スロットのフリーリストの作成を含む。そのよう
な実施例は、空スロットを探索するコストを回避する。
このような多数の二次構造が可能であり、これに限定さ
れるわけではないが、リスト、ビットマップ、テーブル
とツリーの各種形態を含む。
【0079】利用可能な空スロットが存在しない旨ステ
ップ1504で決定された場合、ステップ1508で、
新しいスロットがSPO_DB::Objectのリス
トの末尾に追加さえる。オブジェクトに関連するユーズ
カウント変数が、新しく追加されたスロットを初期化す
るために、ステップ1510でゼロにセットされる。図
7と11に関して先に述べたように、各SPO_D
B::ObjectはOIDに関連し、オブジェクトに
よって占拠されるスロットが再使用される度毎に増分す
るユーズカウント変数を含む。スロットが初期化される
と、スロット内のオブジェクトに関連する抹消フラグ
が、スロットが使用中であることを示すために、ステッ
プ1512で偽(false) にセットされる。
【0080】オブジェクトのリストの中に利用可能な空
スロットが存在する旨ステップ1504で決定された場
合、プロセスの流れはステップ1506に進み、そこ
で、そのスロットに関連するユーズカウントが、スロッ
トが再使用されたことを示すために増分される。一旦、
ユーズカウントが増分されると、スロット内のオブジェ
クトに関連する抹消フラグがステップ1512で偽にセ
ットされる。次にステップ1514で、タイプ識別子が
スロットに格納される。タイプ識別子がスロットに格納
された後、ステップ1516で、スロットに対応するO
IDインデックスが構築される。OIDインデックス
は、図12に関して先に記載したように、オブジェクト
のリストとユーズカウントとの効率的なインデックスを
可能にするために使用されるインデックスを含む。ステ
ップ1518では、OIDインデックスに対応するオブ
ジェクトラッパーが、分散オブジェクトプログラミング
の当業者には周知のメソッドを使って構築される。その
後、オブジェクトラッパーはステップ1520でコーラ
ーに返される。
【0081】図18は、本発明の一実施例による、デー
タストアオブジェクトの破壊に関連するステップを示す
プロセス流れ図である。プロセスはステップ1604で
開始され、データストアに格納されたオブジェクトを破
壊するためのコールが行なわれる。ステップ1604
で、オブジェクトが格納されるデータストアがオペレー
ションの書込のために開いているか否かに関して決定が
行なわれる。データストアが書込可能でない場合、オブ
ジェクトが破壊できなかったことを示すためにステップ
1606で例外が放棄され、プロセスはステップ160
7で終了する。他方、データストアが書込可能な場合、
プロセスの流れはステップ1608に進み、そこで、破
壊すべきオブジェクトに対応するSPO_DB::Ob
jectリストの中のスロットが発見される。破壊すべ
きオブジェクトに対応するOIDインデックスは、オブ
ジェクトのリストの中にインデックスとして使用でき
る。ステップ1610において、破壊すべきオブジェク
ト用のOIDインデックスに対応するスロットが発見さ
れたか否か決定される。適切なスロットが発見されなか
った場合、オブジェクトが破壊できなかったことを示す
ために、ステップ1606で例外が放棄されて、プロセ
スはステップ1607で終了する。
【0082】破壊すべきオブジェクト用のOIDインデ
ックスに対応するスロットが発見された旨ステップ16
10で決定された場合、スロット用の抹消フラグが、ス
ロットが空であることを示すために、ステップ1612
で真に等しくセットされる。抹消フラグがセットされた
後、プロセス制御はステップ1616に進み、そこで、
スロットに関連するメモリが属性に対して解放される。
すなわち、スロットに関連するメモリがクリアーされ
る。最後に、メモリが開放された後、プロセスはステッ
プ1618でコーラーに返る。
【0083】当業者にはよく理解されるように、データ
ストアは、通常、コンピュータディスク、CD−ROM
等の上のファイルに格納される。ファイルのデータスト
アがアクセスされて修正されるときは、データストアフ
ァイル(ここではファイル「X」と呼ぶ)は、通常、デ
ータストアに加えられる変更を反映するために修正さな
ければならない。システム破壊時のデータストアの完全
性を保護するために、まず、修正済データストアがファ
イルX以外のファイルに書き込まれる。ファイルXを別
のファイルと交換する前に修正済データストアをその別
のファイルに書き込むと共にX用のバックアップファイ
ルを作成することによって、万一システム破壊が起こっ
た場合でも、通常、データストアの何らかのバージョン
を含む無傷(intact)のファイルが常に存在することにな
る。このように、データストアをコンピュータディスク
等の上のファイルに付託(committing)するプロセスは、
通常、データストアを改竄(corrupting)する可能性から
保護するために一時的なデータファイルの作成を伴う。
【0084】図19は、本発明の一実施例による、デー
タストアファイルを更新するデータストア付託メカニズ
ムに関連するステップを示すプロセス流れ図である。プ
ロセスはステップ1702で開始され、そこで付託プロ
セスがコールされる。ステップ1703では、付託プロ
セスの目標であるデータストアが書込オペレーションに
対して開いているか否かに関して決定が行なわれる。デ
ータストアが書込可能でない場合、データストアに書込
できなかったことを示すためにステップ1712で例外
が放棄されて、ステップ1713において付託プロセス
が終了する。他方、データストアが書込可能な場合、プ
ロセスの流れはステップ1704に進み、そこで、デー
タストアの変更版に対応するSPO_DB::Root
クラスのインスタンスが新ファイルに書き込まれ、それ
をファイル「X.NEW」と呼ぶ。SPO_DB::R
ootクラスのインスタンスをファイルX.NEWに書
き込むプロセスを、図20に関して以下に説明する。フ
ァイルX.NEWが作成された後、プロセス制御はステ
ップ1706に進み、そこでファイルXがファイル
「X.BACK」と改名される。次にステップ1708
で、ファイルX.NEWがファイルXと改名される。フ
ァイルXをファイルX.BACKと改名することによっ
て、ファイルX.NEWをファイルXと改名するプロセ
スで万一システムエラーが起こっても、ファイルX.B
ACKは未改竄(uncorrupted) の、より旧版のデータス
トアを含むことになる。
【0085】ファイルX.NEWがファイルXと改名さ
れた後、ファイルX.BACKがステップ1710で抹
消される。次にステップ1714で、データストアの書
込状態、すなわちファイルXを含む修正されたデータス
トアが「無(none)」にクリアーされる。データストア
と、従って、データストアファイルの書込状態とを無に
クリアーすることは、コールのプロセスがデータストア
ファイルからの読取りまたは書込のいずれかに対する許
可をリクエストするまで、書込または読取りオペレーシ
ョンがデータストア上で起こらないことを示す。一旦、
書込状態が無にクリアーされると、付託プロセスの結果
がステップ1716でコーラーに返される。
【0086】次に図20を参照して、本発明の一実施例
による、新ファイルへのSPO_DB::Rootクラ
スのインスタンスの書込メソッド、すなわち図19のス
テップ1704を説明する。プロセスはステップ172
0で開始され、新ファイル、すなわちファイルX.NE
Wへのルートオブジェクト、すなわちSPO_DB::
Rootクラスのインスタンスの書込がリクエストされ
る。ステップ1722で、ファイルX.NEWを開く試
みが行なわれる。ステップ1723において、ファイル
X.NEWが首尾よく開かれたか否かに関する決定が行
なわれる。、ファイルX.NEWが首尾よく開かれなか
った旨決定された場合、ステップ1725で例外が放棄
されて、ルートオブジェクトをファイルX.NEWに書
き込む試みはステップ1727で終了する。
【0087】或る実施例では、ファイルX.NEWが首
尾よく開かれた旨ステップ1723で決定された場合、
プロセス制御はステップ1726に進み、そこで、ファ
イルX.NEWに対応する共通データ表示(CDR)マ
ーシャルバッファが作成される。CDRは、インターネ
ットインタオペラブルプロトコル(IIOP)によって
規定されたコード化ルールの名前である。CDRマーシ
ャルバッファが作成された後、データストアバージョン
構造が「マジックナンバー」と大小の両バージョンナン
バーとを使ってステップ1728で作成される。データ
ストアバージョン構造、つまりレコードは、データスト
アの特殊バージョンに関係する情報を提供する。或る実
施例では、データストアの特殊バージョンは、データス
トアが最後にアクセスまたは修正された時に関係するか
もしれない。データストアバージョンレコードを使っ
て、データストアとして現在使用中のファイルが実際に
有効なデータストアか否かを決定することができる。マ
ジックナンバーはハードワイヤード(hard-wired)ナンバ
ーまたはその他の一定の記述で、特殊なタイプのデータ
ファイルの特徴を示すために使用される。例として、記
号「%!」で始まるファイルは、通常、ポストスクリプ
トファイルと理解される。同様の慣行が他の多くのファ
イルタイプに対して使用される。バージョンナンバー
は、しばしば、2つのコンポーネント、例えば大バージ
ョンナンバーと、小バージョンナンバーとを使用して表
現される。大小のバージョンナンバーの正確な解釈はア
プリケーション固有のものだが、大小のバージョンナン
バーは、一般に、バージョン間の差の程度を反映するよ
うに設計されている。
【0088】データストアバージョン構造が作成された
後、データストアバージョン構造はステップ1730で
CDRマーシャルバッファにマーシャルされる。記載の
実施例では、データストアバージョンレコードは、CD
Rマーシャルバッファによって表されるファイルX.N
EWに直接マーシャルされる。大部分の通常ケースで
は、データがファイルに直接マーシャルされないことを
よく理解しなければならない。ステップ1732におい
て、ルートオブジェクトがCDRマーシャルバッファに
マーシャルされる。すなわち、データストアは、ファイ
ルX.NEWを表すCDRマーシャルバッファにマーシ
ャルされる。記載の実施例では、IDL生成マーシャリ
ング関数がマーシャルバッファを使って、より原始的な
データタイプの用語でIDL定義データタイプをマーシ
ャルする。最後に、ファイルX.NEWがステップ17
34で閉じられて、ファイルX.NEWへのSPO_D
B::Rootクラスのインスタンスをストリング(str
ing)するプロセスがステップ1736で終了する。
【0089】図4に関して先に説明したように、本発明
の不変データ記憶メカニズムは、「接続可能な(pluggab
le) バックエンド」、すなわち異なるデータストアを不
変フレームワークと共に使用できるようにするインタフ
ェース、を持つ。サブコントラクトは、対応するバック
エンド表示、すなわちデータストア、に対してオブジェ
クトレファレンスを関連させるために使用されるインタ
フェースの一部として利用される。接続可能なバックエ
ンドを持つ不変データ記憶メカニズムはフレキシブルだ
が、それは、所定の不変フレームワークと共に様々なバ
ックエンド表示が使用できるからである。接続可能バッ
クエンドはデータストアの作成とオープンのために使用
される関数を含むデータ構造、例えばデータストアイン
プリメンテーションのレジストリであるデータ構造を利
用できる。というのは、データストアは、適切なデータ
ストアの作成やオープニングのための適切なメカニズム
に写像(map) する識別子に関連する必要があるからであ
る。
【0090】図21は、本発明の一実施例による、デー
タストア実装レジストリであるデータ構造の概略表示で
ある。データストア実装レジストリ1802は、データ
ストアの作成とオープニングに使用される情報を収容す
る。データストア実装レジストリ1802と、図15に
関して上述したデータストアレジストリとは同一である
ことをよく理解しなければならない。データストア実装
レジストリ1802がデータストアの作成とオープンに
使用される情報を含むのに対して、データストアレジス
トリは、現時点で存在するデータストアのリストを含
む。データストア実装レジストリ1802は、特殊なデ
ータストアインプリメンテーションを発見するために使
用され、次に、そのインプリメンテーションを使って、
特殊なデータストアを作成するかオープンするための適
切な関数がコールされる。
【0091】データストア実装レジストリ1802は、
通常、キー1804、データストアの作成に用いられる
関数1806、およびデータストアのオープニングに用
いられる関数1808のリストを含む。キー1804
は、通常、データストアインプリメンテーションに関連
するタイプの識別に役立つストリングである。すなわ
ち、キー1804は、通常、所定のインプリメンテーシ
ョンに用いられるメカニズムの名前を提供する。幾つか
の実施例では、キー1804は、UNIXdbmが利用
される場合、UNIXデータベースマネジャ(dbm)
に対応する名前である。データストア作成関数1806
は、データストア識別子であるストリングを引数と見做
す。データストア識別子はデータストア用のファイル名
でもよいし、リレーショナルデータベース識別子でもよ
い。データストア開関数1808は、データストア作成
関数1806と同様、データストア識別子であるストリ
ングを引数と見做す。データストア開関数1808の一
つのバージョンは、図10に関して先に説明した。デー
タストア作成関数1806とデータストア開関数180
8は、それぞれ、任意数の引数を取り、データストア識
別子である引数に限定されないことをよく理解しなけれ
ばならない。例として、キー1804はそれらの関数の
一方または両方に対する引数になることができる。
【0092】データストア作成関数1806を用いて、
データストアに関係する情報を収容するファイルを開く
(作成するのではない)場合、データストア作成関数1
806はそのファイルを置き換える。言い換えると、デ
ータストア作成関数1806は、すでに存在するファイ
ルを開くために使うことはできない。というのは、デー
タストア作成関数1806はその代わりに同じ名前を持
つ新ファイルを作成するからである。データストア開関
数1808の用途は、データストアに関係する情報を収
容するファイルがすでに存在している場合に使用され
る。存在しない(non-existent)ファイルを開けようとし
てデータストア開関数1808を使用した場合、その試
みは失敗するだろう。或る実施例では、データストア作
成関数1806とデータストア開関数1808とは単一
の関数に合併できることをよく理解しなければならな
い。しかしながら、便宜と明快さのために、データスト
ア作成関数1806とデータストア開関数1808と
は、通常、独立の関数である。
【0093】データストア作成関数1806またはデー
タストア開関数1808のいずれかを使用することは、
図4に関して説明したNEO_SPO_DBクラスのイ
ンスタンスの作成に役立つ。NEO_SPO_DBクラ
スに関係する静的クリエートアンドオープン関数を使用
してオブジェクトを作成するとき、オブジェクトはNE
O_SPO_Objectクラスのインスタンスを表す
が、これについても図2に関して先に説明した。接続可
能なバックエンドも、NEO_Real_SPO_DB
とNEO_Real_SPO_Objに似た新しいクラ
スを定義する。このようなクラスのインスタンスは、い
ずれも、図2の矢印221と211で示される相続関係
によって、それぞれNEO_SPO_DBまたはNEO
_SPO_Objのインスタンスである。
【0094】本発明の実施例を一つだけ説明したが、本
発明は、その精神と範囲から逸脱することなく、他の多
くの形式で具体化し得ることは言うまでもない。記載の
実施例では、オブジェクト識別子データ構造の一構成の
みを説明したが、オブジェクト識別子データ構造が本発
明の範囲内で幅広い変化が可能なことは明らかであろ
う。同様に、データストアの構造も幅広く変化する。更
に、データストアからのデータ読取りとデータストアへ
のデータ書込をコールするメソッドやデータストアを作
成、付託するメソッドに伴うステップは再構成が可能で
ある。これらのステップも、本発明の精神と範囲から逸
脱することなく追加、除去することができる。従って、
記載の実施例は説明のためであって、限定のためではな
いと見做すべきであり、本発明は下記クレームならびに
それらに相当する仕様によって定義されるものとする。
【図面の簡単な説明】
【図1】本発明による分散オブジェクトシステムの実装
に適したコンピュータネットワークの説明図である。
【図2】図1に示されるコンピュータの主要コンポーネ
ントの概略説明図である。
【図3】本発明による、分散オブジェクトシステムの象
徴的概要図である。
【図4】本発明の一実施例による、オブジェクトモデル
化技術(OMT)のクラス図表の概略表示図である。
【図5】本発明の一実施例による、不変オブジェクトフ
レームワークにおけるデータの読取りと書込に関連する
ステップを説明するプロセス流れ図である。
【図6】本発明の一実施例による、図3のステップ31
4を説明するプロセス流れ図である。
【図7】本発明の一実施例による、不変オブジェクトフ
レームワークにおいて使用されるデータストア構造の概
略表示図である。
【図8】本発明の一実施例による、図6のステップ40
8を説明するプロセス流れ図である。
【図9】本発明の一実施例による、図5のステップ32
0および図6のステップ404を説明するプロセス流れ
図である。
【図10】本発明の一実施例による、データストアのオ
ープニングに関連するステップを説明するプロセス流れ
図である。
【図11】本発明の一実施例による、図8のステップ8
03に関連するステップを説明するプロセス流れ図であ
る。
【図12】本発明の一実施例による、オブジェクト識別
子(OID)の概略表示図である。
【図13】本発明の一実施例による、オブジェクトレフ
ァレンスに関連するオブジェクトレファレンスとエレメ
ントの概略表示図である。
【図14】本発明の一実施例による、マーシャリングプ
ロセスに関連するステップを説明するプロセス流れ図で
ある。
【図15】本発明の一実施例による、アンマーシャリン
グプロセスに関連するステップを説明するプロセス流れ
図である。
【図16】本発明の一実施例による、オブジェクト作成
プロセスに関連するステップを説明するプロセス流れ図
である。
【図17】本発明の一実施例による、図14のステップ
1404を説明するプロセス流れ図である。
【図18】本発明の一実施例による、オブジェクトを破
壊するためのプロセスに関連するステップを説明するプ
ロセス流れ図である。
【図19】本発明の一実施例による、付託プロセスに関
連するステップを説明するプロセス流れ図である。
【図20】本発明の一実施例による、図17Aのステッ
プ1704を説明するプロセス流れ図である。
【図21】本発明の一実施例による、データストア実装
レジストリの概略表示図である。

Claims (28)

    【特許請求の範囲】
  1. 【請求項1】 不変オブジェクトがインストールされた
    分散オブジェクトシステムにおいて、該インストールさ
    れた不変オブジェクト用の不変データを管理するための
    メソッドであって、該不変データはデータストアに書き
    込まれると共に不変オブジェクト属性値を有する不変オ
    ブジェクト属性を備え、該メソッドが、 a)該不変オブジェクト属性値をマーシャルバッファに
    マーシャルすることによって、コード化された不変オブ
    ジェクト属性値を提供するステップ、 b)該不変オブジェクト属性値を更新して、更新された
    不変オブジェクト属性値を提供するステップ、 c)該更新された不変オブジェクト属性値をマーシャル
    バッファからアンマーシャルして、デコードされた更新
    済不変オブジェクト属性値を提供するステップ、および d)該デコードされた更新済不変オブジェクト属性値を
    該データストアに書き込むステップ、の各ステップを含
    むメソッド。
  2. 【請求項2】 更に、該不変オブジェクト属性値を該マ
    ーシャルバッファにマーシャルするステップに先立っ
    て、該不変オブジェクト属性値を該不変オブジェクトか
    ら検索するステップを含む、請求項1記載のメソッド。
  3. 【請求項3】 更に、該不変オブジェクト属性値を該マ
    ーシャルバッファにマーシャルするステップに先立っ
    て、該不変オブジェクト属性値を該データストアから検
    索するステップを含む、請求項1又は2記載のメソッ
    ド。
  4. 【請求項4】 該不変オブジェクト属性値を該データス
    トアから検索する前記ステップが、 a)該データストアを開くステップ、 b)該データストアから、該データストアに収容された
    不変オブジェクト属性のインデックスを抽出するステッ
    プ、 c)該データストアに収容された不変オブジェクト属性
    の該インデックスを探索して、該データストアの中の該
    不変オブジェクト属性の場所を決定するステップ、およ
    び d)該不変オブジェクト属性に対応する該不変オブジェ
    クト属性値を返すステップを含む請求項3記載のメソッ
    ド。
  5. 【請求項5】 該データストアを開く該ステップが、 a)該適切なデータストアファイルを選択するステッ
    プ、 b)該適切なデータストアファイルを使用してマーシャ
    ルバッファを作成するステップ、 c)該データストアに関連するデータストアルートオブ
    ジェクトを作成するステップ、および d)データストアレジストリによって該データストアを
    登録するステップを含む請求項4記載のメソッド。
  6. 【請求項6】 a)該データストアファイルに対応する
    データストアバージョンレコードをアンマーシャルする
    ステップ、および b)該データストアファイルがサポートされているか否
    かを決定するステップを更に含む請求項5記載のメソッ
    ド。
  7. 【請求項7】 デコードされた更新済不変オブジェクト
    属性値を該データストアに書き込むステップが、 a)該データ構造に格納された不変オブジェクト属性を
    抽出するステップ、 b)該データベース内の該不変オブジェクト属性の場所
    を発見するステップ、 c)該不変オブジェクト属性が該インデックスで発見で
    きなかった場合、該不変オブジェクト属性を該データに
    追加するステップ、および d)該不変オブジェクト属性に対応する場所で該不変オ
    ブジェクト属性値を該データに書き込むステップを含む
    請求項1〜6のいずれかに記載のメソッド。
  8. 【請求項8】 不変オブジェクトがインストールされた
    分散オブジェクトシステムにおいて、該インストールさ
    れた不変オブジェクト用の不変データを管理するための
    メソッドであって、該不変データはデータストアに書き
    込まれると共に不変オブジェクト属性値と不変オブジェ
    クト属性名とを有する不変オブジェクト属性を備え、該
    メソッドが、 a)該分散オブジェクトシステム上で、該不変オブジェ
    クト属性値と該不変オブジェクト属性名とを有する該不
    変オブジェクト属性に関連するメソッドを呼び出すステ
    ップ、 b)該不変オブジェクト属性値をマーシャルバッファに
    マーシャルすることによって、コード化された不変オブ
    ジェクト属性値を提供するステップ、 c)該不変オブジェクト属性値を更新して、更新された
    不変オブジェクト属性値を提供するステップ、 d)該更新された不変オブジェクト属性値をマーシャル
    バッファからアンマーシャルして、デコードされた更新
    済不変オブジェクト属性値を提供するステップ、および e)該デコードされた更新済不変オブジェクト属性値を
    該データストアに書き込むステップ、の各ステップを含
    むメソッド。
  9. 【請求項9】 該不変オブジェクト属性値を該マーシャ
    ルバッファにマーシャルするステップに先立って、該不
    変オブジェクト属性値を該不変オブジェクトから検索す
    るステップを更に含む請求項8に記載のメソッド。
  10. 【請求項10】 該不変オブジェクト属性値を該マーシ
    ャルバッファにマーシャルするステップに先立って、該
    不変オブジェクト属性値を該データストアから検索する
    ステップを更に含む請求項8に記載のメソッド。
  11. 【請求項11】 該不変オブジェクト属性値を該データ
    ストアから検索する前記ステップが、 a)該データストアを開くステップ、 b)該データストアから、該データストアに収容された
    不変オブジェクト属性のインデックスを抽出するステッ
    プ、 c)該データストアに収容された不変オブジェクト属性
    の該インデックスを、該不変オブジェクト属性名を使っ
    て探索して、該データストアの中の該不変オブジェクト
    属性の場所を決定するステップ、および d)該不変オブジェクト属性に対応する該不変オブジェ
    クト属性値を返すステップを含む請求項10に記載のメ
    ソッド。
  12. 【請求項12】 デコードされた更新済不変オブジェク
    ト属性値を該データストアに書き込むステップが、 a)該データストアに格納された不変オブジェクト属性
    を抽出するステップ、 b)該データベース内の該不変オブジェクト属性の場所
    を、該不変オブジェクト属性名と該インデックスとを使
    って発見するステップ、 c)該不変オブジェクト属性が該インデックスで発見で
    きなかった場合、該不変オブジェクト属性を該データに
    追加するステップ、 d)該不変オブジェクト属性に対応する場所で該不変オ
    ブジェクト属性名を該データに書き込むステップ、およ
    び e)該不変オブジェクト属性に対応する場所で該不変オ
    ブジェクト属性値を該データに書き込むステップを含む
    請求項1〜11のいずれかに記載のメソッド。
  13. 【請求項13】 インストールされた不変オブジェクト
    用の不変データをデータストアに格納することができる
    分散オブジェクトシステムであって、該不変データはデ
    ータストアに書き込まれると共に不変オブジェクト属性
    値を有する不変オブジェクト属性を備え、該分散オブジ
    ェクトシステムが、 a)プロセッサ、 b)不変データが格納される大容量記憶メカニズム、 c)該不変オブジェクト属性値をマーシャルバッファに
    コード化することによって、コード化された不変オブジ
    ェクト属性値を提供するためのマーシャリングメカニズ
    ム、および d)該不変オブジェクト属性値をマーシャルバッファか
    らデコードすることによって、デコードされた不変オブ
    ジェクト属性値を提供するためのアンマーシャリングメ
    カニズム、を含む分散オブジェクトシステム。
  14. 【請求項14】 インストールされた不変オブジェクト
    用の不変データをデータストアに格納することができる
    分散オブジェクトシステムであって、 a)該適切なデータストアファイルを選択するためのデ
    ータストアセレクタ、 b)該データストアに関連するデータストアルートオブ
    ジェクトを作成するためのデータストアクリエータ、お
    よび c)該データストアを該データストアレジストリによっ
    て登録するための登録メカニズムを更に含む請求項13
    記載の分散オブジェクトシステム。
  15. 【請求項15】 請求項14に記載されたインストール
    された不変オブジェクト用の不変データをデータストア
    に格納することができる分散オブジェクトシステムにお
    いて、該データストアファイルがサポートされているか
    否かを決定するためのサポートメカニズムを更に含む分
    散オブジェクトシステム。
  16. 【請求項16】 請求項13〜15のいずれかに記載さ
    れたインストールされた不変オブジェクト用の不変デー
    タをデータストアに格納することができる分散オブジェ
    クトシステムにおいて、該データベース内で該不変オブ
    ジェクト属性の場所を発見するためのロケータと、該不
    変オブジェクト属性が該データストア内で発見できない
    場合に該不変オブジェクト属性を該データストアに追加
    するための追加メカニズムとを更に含む分散オブジェク
    トシステム。
  17. 【請求項17】 不変データ記憶フレームワークを実装
    するためにコンピュータ読取り可能コードが具体化され
    たコンピュータ使用可能媒体、を備えたコンピュータプ
    ログラムプロダクトであって、該不変データ記憶フレー
    ムワークが、 a)不変オブジェクト属性値のセットを含む不変オブジ
    ェクトクラスのインスタンス、 b)該不変オブジェクトクラスの該インスタンスに関連
    する不変データ記憶メカニズム、および c)該不変データ記憶メカニズムに関連する接続可能バ
    ックエンドを定義するクラスのインスタンスを含むコン
    ピュータプログラムプロダクト。
  18. 【請求項18】 請求項17に記載されたコンピュータ
    読取り可能コードが具体化されたコンピュータ使用可能
    媒体を含むコンピュータプログラムプロダクトにおい
    て、該接続可能バックエンドがデータストアであるコン
    ピュータプログラムプロダクト。
  19. 【請求項19】 請求項17又は18に記載された不変
    データ記憶フレームワークを実装するためにコンピュー
    タ読取り可能コードが具体化されたコンピュータ使用可
    能媒体を含むコンピュータプログラムプロダクトにおい
    て、更に、該不変オブジェクトクラスの該インスタンス
    に関連するメソッドテーブルクラスのインスタンスを含
    み、該メソッドテーブルクラスの該インスタンスは不変
    オブジェクト属性値の該セットに関係するメソッドを含
    む、コンピュータプログラムプロダクト。
  20. 【請求項20】 請求項19に記載された、不変データ
    記憶フレームワークを実装するためにコンピュータ読取
    り可能コードが具体化されたコンピュータ使用可能媒
    体、を含むコンピュータプログラムプロダクトにおい
    て、不変オブジェクト属性値の該セットに関係する該メ
    ソッドがセットアトリビュートメソッドとゲットアトリ
    ビュートメソッドの少なくとも一方を含むコンピュータ
    プログラムプロダクト。
  21. 【請求項21】 請求項17〜20のいずれかに記載さ
    れた、不変データ記憶フレームワークを実装するために
    コンピュータ読取り可能コードが具体化されたコンピュ
    ータ使用可能媒体を含むコンピュータプログラムプロダ
    クトにおいて、該不変データ記憶メカニズムがそれに関
    連するメソッドを持つクラスのインスタンスを含み、ク
    ラスの該インスタンスと該メソッドを使用して、該不変
    オブジェクトクラスの該インスタンスを該接続可能バッ
    クエンドに関連させるコンピュータプログラムプロダク
    ト。
  22. 【請求項22】 分散オブジェクトシステム内で定義さ
    れたデータストアに不変オブジェクト用の状態データを
    格納するためにコンピュータ読取り可能コードが具体化
    されたコンピュータ使用可能媒体を含むコンピュータプ
    ログラムプロダクトであって、該データストアは該分散
    オブジェクトシステムでメソッドを呼び出すために使用
    されるオブジェクトと属性とに対応する情報を収容し、
    該データストアが、 a)該データストアの該バージョンを識別するルートノ
    ード、 b)該ルートノードに関連する少なくとも一つの不変オ
    ブジェクト、 c)属性名と属性値とを含む、該オブジェクトに関連す
    る少なくとも一つの属性、および d)該オブジェクトに関連した、該オブジェクトを識別
    するオブジェクト識別子を含むコンピュータプログラム
    プロダクト。
  23. 【請求項23】 該オブジェクト識別子が、 a)該オブジェクト識別子が関連する該データストアを
    識別するデータベース識別子、 b)該オブジェクトが有効オブジェクトか否かを識別す
    るオブジェクト識別子インデックス、および c)関連サブコントラクトを識別するサブコントラクト
    識別子を含む、請求項22に記載のコンピュータプログ
    ラムプロダクト。
  24. 【請求項24】 不変分散オブジェクト用の不変データ
    を格納するためのコンピュータシステムであって、該不
    変分散オブジェクト用の不変データが属性名と属性値と
    を含み、 a)該不変分散オブジェクト用の該不変データを処理、
    格納するように構成された不変データ記憶メカニズム、
    および b)該データストアの異なるバックエンド表示が該不変
    オブジェクト記憶メカニズムと共に含まれるように構成
    された該データストアの表示、を含むコンピュータシス
    テム。
  25. 【請求項25】 該データストアが、該不変分散オブジ
    ェクト用の該不変データの該属性名と該属性値とを格納
    するように配列された請求項24に記載のコンピュータ
    システム。
  26. 【請求項26】 該データストアが複数のオブジェクト
    を含み、該オブジェクトが、該データストアと該不変オ
    ブジェクトの間で属性値を交換するためと該データスト
    ア内で該属性値を操作するためのオペレーションを定義
    する少なくとも一つの相続関係を介して、該不変オブジ
    ェクトと連結されている、請求項25に記載のコンピュ
    ータシステム。
  27. 【請求項27】 該データストアと該不変オブジェクト
    の間の相続関係が、該データストアからの不変データの
    書込と検索を可能にする不変データ記憶メカニズムを定
    義する少なくとも一つのオブジェクトクラスを含む、請
    求項26に記載のコンピュータシステム。
  28. 【請求項28】 該データストアが、該データストア内
    に収容されたルートオブジェクトクラスと該不変データ
    記憶メカニズムの間の相続関係を含む少なくとも一つの
    相続関係を介して、該不変データ記憶メカニズムと連結
    されている、請求項27に記載のコンピュータシステ
    ム。
JP9176096A 1996-07-01 1997-07-01 マーシャリングフレームワークを使用して分散オブジェクトネットワーク上に不変オブジェクトを格納するためのメソッドと装置 Pending JPH10133877A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/677013 1996-07-01
US08/677,013 US5809507A (en) 1996-07-01 1996-07-01 Method and apparatus for storing persistent objects on a distributed object network using a marshaling framework

Publications (1)

Publication Number Publication Date
JPH10133877A true JPH10133877A (ja) 1998-05-22

Family

ID=24716954

Family Applications (1)

Application Number Title Priority Date Filing Date
JP9176096A Pending JPH10133877A (ja) 1996-07-01 1997-07-01 マーシャリングフレームワークを使用して分散オブジェクトネットワーク上に不変オブジェクトを格納するためのメソッドと装置

Country Status (3)

Country Link
US (1) US5809507A (ja)
EP (1) EP0817026A3 (ja)
JP (1) JPH10133877A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015170366A (ja) * 2014-03-07 2015-09-28 シュネーデル、エレクトリック、インダストリーズ、エスアーエスSchneider Electric Industries Sas 電子デバイスを備える電子システム、そのようなシステムを備える回路遮断器、デバイス間に非互換性がある場合に偏差指標を生成するための方法および関連するコンピュータ・プログラム製品

Families Citing this family (130)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6182083B1 (en) 1997-11-17 2001-01-30 Sun Microsystems, Inc. Method and system for multi-entry and multi-template matching in a database
US6226746B1 (en) 1998-03-20 2001-05-01 Sun Microsystems, Inc. Stack-based system and method to combine security requirements of methods
US6708171B1 (en) 1996-04-23 2004-03-16 Sun Microsystems, Inc. Network proxy
US6138238A (en) 1997-12-11 2000-10-24 Sun Microsystems, Inc. Stack-based access control using code and executor identifiers
US6466947B2 (en) 1998-03-20 2002-10-15 Sun Microsystems, Inc. Apparatus and method for dynamically verifying information in a distributed system
US6578044B1 (en) 1997-11-17 2003-06-10 Sun Microsystems, Inc. Method and system for typesafe attribute matching
US6272559B1 (en) 1997-10-15 2001-08-07 Sun Microsystems, Inc. Deferred reconstruction of objects and remote loading for event notification in a distributed system
US6185611B1 (en) 1998-03-20 2001-02-06 Sun Microsystem, Inc. Dynamic lookup service in a distributed system
US6438614B2 (en) 1998-02-26 2002-08-20 Sun Microsystems, Inc. Polymorphic token based control
US6832223B1 (en) * 1996-04-23 2004-12-14 Sun Microsystems, Inc. Method and system for facilitating access to a lookup service
US6560656B1 (en) 1998-02-26 2003-05-06 Sun Microsystems, Inc. Apparatus and method for providing downloadable code for use in communicating with a device in a distributed system
US6237024B1 (en) 1998-03-20 2001-05-22 Sun Microsystem, Inc. Method and apparatus for the suspension and continuation of remote processes
US6421704B1 (en) 1998-03-20 2002-07-16 Sun Microsystems, Inc. Method, apparatus, and product for leasing of group membership in a distributed system
US6938263B2 (en) 1996-04-23 2005-08-30 Sun Microsystems, Inc. System and method for facilitating dynamic loading of “stub” information to enable a program operating in one address space to invoke processing of a remote method or procedure in another address space
US6487607B1 (en) 1998-02-26 2002-11-26 Sun Microsystems, Inc. Methods and apparatus for remote method invocation
US6463446B1 (en) 1998-02-26 2002-10-08 Sun Microsystems, Inc. Method and apparatus for transporting behavior in an event-based distributed system
US6598094B1 (en) 1998-03-20 2003-07-22 Sun Microsystems, Inc. Method and apparatus for determining status of remote objects in a distributed system
US6247026B1 (en) 1996-10-11 2001-06-12 Sun Microsystems, Inc. Method, apparatus, and product for leasing of delegation certificates in a distributed system
US6393497B1 (en) 1998-03-20 2002-05-21 Sun Microsystems, Inc. Downloadable smart proxies for performing processing associated with a remote procedure call in a distributed system
US6446070B1 (en) 1998-02-26 2002-09-03 Sun Microsystems, Inc. Method and apparatus for dynamic distributed computing over a network
US6718550B1 (en) 1996-06-26 2004-04-06 Sun Microsystems, Inc. Method and apparatus for improving the performance of object invocation
US5991535A (en) * 1996-07-03 1999-11-23 Sun Microsystems, Inc. Visual composition tool for constructing application programs using distributed objects on a distributed object network
US6728737B2 (en) 1996-10-11 2004-04-27 Sun Microsystems, Inc. Method and system for leasing storage
US5832529A (en) 1996-10-11 1998-11-03 Sun Microsystems, Inc. Methods, apparatus, and product for distributed garbage collection
US6237009B1 (en) 1996-10-11 2001-05-22 Sun Microsystems, Inc. Lease renewal service
US5970490A (en) * 1996-11-05 1999-10-19 Xerox Corporation Integration platform for heterogeneous databases
US6014673A (en) * 1996-12-05 2000-01-11 Hewlett-Packard Company Simultaneous use of database and durable store in work flow and process flow systems
US5937388A (en) * 1996-12-05 1999-08-10 Hewlett-Packard Company System and method for performing scalable distribution of process flow activities in a distributed workflow management system
US5999988A (en) * 1997-03-31 1999-12-07 Sun Microsystems, Inc. Method and apparatus for generating and employing a run-time generated stub to reference an object in object oriented systems
US6230159B1 (en) * 1997-04-30 2001-05-08 Microsoft Corporation Method for creating object inheritance
US6182274B1 (en) * 1997-05-01 2001-01-30 International Business Machines Corporation Reusing code in object-oriented program development
US6125383A (en) * 1997-06-11 2000-09-26 Netgenics Corp. Research system using multi-platform object oriented program language for providing objects at runtime for creating and manipulating biological or chemical data
US5893106A (en) * 1997-07-11 1999-04-06 International Business Machines Corporation Object oriented server process framework with interdependent-object creation
US5884317A (en) * 1997-08-20 1999-03-16 Bea Systems, Inc. Service interface repository
US6049807A (en) * 1997-09-03 2000-04-11 International Business Machines Corporation Technique for maintaining object integrity during modification of a persistent store of objects
US6253256B1 (en) 1997-10-15 2001-06-26 Sun Microsystems, Inc. Deferred reconstruction of objects and remote loading in a distributed system
US6185609B1 (en) * 1997-10-24 2001-02-06 Sun Microsystems, Inc. Method, apparatus and program to provide client access to a management information service residing on a server in a computer network system
US6216152B1 (en) * 1997-10-27 2001-04-10 Sun Microsystems, Inc. Method and apparatus for providing plug in media decoders
US6125364A (en) * 1997-11-06 2000-09-26 International Business Machines Corporation Flexible object persistence framework using data cursor objects loaded from superclasses
US6668257B1 (en) * 1997-11-06 2003-12-23 International Business Machines Corporation Migrating non-persistent objects when one or more of the superclass fields of the object are modified
US6032153A (en) * 1997-11-13 2000-02-29 Electric Data Systems Corporation Method and system for maintaining persistence in a shared object system
US6516354B2 (en) 1997-12-18 2003-02-04 Sun Microsystems, Inc. Method and apparatus for efficient representation of variable length identifiers in a distributed object system
US6438616B1 (en) * 1997-12-18 2002-08-20 Sun Microsystems, Inc. Method and apparatus for fast, local corba object references
US6205491B1 (en) * 1997-12-18 2001-03-20 Sun Microsystems, Inc. Method and apparatus for deferred throwing of exceptions in C++
US6249803B1 (en) * 1997-12-18 2001-06-19 Sun Microsystems, Inc. Method and apparatus for executing code during method invocation
US6405264B1 (en) 1997-12-18 2002-06-11 Sun Microsystems, Inc. Marshaling and unmarshaling framework for supporting filters in a distributed object system
US6510460B1 (en) 1997-12-18 2003-01-21 Sun Microsystems, Inc. Method and apparatus for enforcing locking invariants in multi-threaded systems
US6192368B1 (en) * 1998-02-11 2001-02-20 International Business Machines Corporation Apparatus and method for automatically propagating a change made to at least one of a plurality of objects to at least one data structure containing data relating to the plurality of objects
US6604127B2 (en) 1998-03-20 2003-08-05 Brian T. Murphy Dynamic lookup service in distributed system
CN1298514A (zh) 1998-02-26 2001-06-06 太阳微系统公司 确定性散列识别远程方法的方法和系统
CA2232246C (en) * 1998-03-16 2004-11-16 Ibm Canada Limited-Ibm Canada Limitee Generic data centric object structure and implementation
US6330709B1 (en) * 1998-03-30 2001-12-11 International Business Machines Corporation Virtual machine implementation for shared persistent objects
US6028998A (en) * 1998-04-03 2000-02-22 Johnson Service Company Application framework for constructing building automation systems
US6223344B1 (en) * 1998-06-11 2001-04-24 Internationl Business Machines Corporation Apparatus and method for versioning persistent objects
GB2341951A (en) * 1998-09-22 2000-03-29 Ibm Thin-client remote object execution
US6262726B1 (en) * 1998-10-09 2001-07-17 Dell U.S.A., L.P. Factory installing desktop components for an active desktop
US6701382B1 (en) * 1998-12-23 2004-03-02 Nortel Networks Limited Name service for transparent container objects
US6421739B1 (en) * 1999-01-30 2002-07-16 Nortel Networks Limited Fault-tolerant java virtual machine
US6877163B1 (en) 1999-06-14 2005-04-05 Sun Microsystems, Inc. Method and system for dynamic proxy classes
US6539425B1 (en) 1999-07-07 2003-03-25 Avaya Technology Corp. Policy-enabled communications networks
US6470354B1 (en) 1999-08-05 2002-10-22 International Business Machines Corporation Implementing persistent object services (POS) on top of a relational database
US6704780B1 (en) * 1999-12-21 2004-03-09 Cisco Technology Efficient representation of system network management object identifiers
US6571252B1 (en) * 2000-04-12 2003-05-27 International Business Machines Corporation System and method for managing persistent objects using a database system
US6678700B1 (en) * 2000-04-27 2004-01-13 General Atomics System of and method for transparent management of data objects in containers across distributed heterogenous resources
US8001232B1 (en) 2000-05-09 2011-08-16 Oracle America, Inc. Event message endpoints in a distributed computing environment
US6862594B1 (en) 2000-05-09 2005-03-01 Sun Microsystems, Inc. Method and apparatus to discover services using flexible search criteria
US6643650B1 (en) 2000-05-09 2003-11-04 Sun Microsystems, Inc. Mechanism and apparatus for using messages to look up documents stored in spaces in a distributed computing environment
US6918084B1 (en) 2000-05-09 2005-07-12 Sun Microsystems, Inc. Spawning new repository spaces using information provided in advertisement schema messages
US6970869B1 (en) 2000-05-09 2005-11-29 Sun Microsystems, Inc. Method and apparatus to discover services and negotiate capabilities
US7080078B1 (en) 2000-05-09 2006-07-18 Sun Microsystems, Inc. Mechanism and apparatus for URI-addressable repositories of service advertisements and other content in a distributed computing environment
US6789126B1 (en) 2000-05-09 2004-09-07 Sun Microsystems, Inc. Addressing message gates in a distributed computing environment
US7243356B1 (en) 2000-05-09 2007-07-10 Sun Microsystems, Inc. Remote method invocation with secure messaging in a distributed computing environment
US6973493B1 (en) 2000-05-09 2005-12-06 Sun Microsystems, Inc. Mechanism and apparatus for security of newly spawned repository spaces in a distributed computing environment
US6898618B1 (en) 2000-05-09 2005-05-24 Sun Microsystems, Inc. Client-specified display services in a distributed computing environment
US6868447B1 (en) 2000-05-09 2005-03-15 Sun Microsystems, Inc. Mechanism and apparatus for returning results of services in a distributed computing environment
US7072967B1 (en) 2000-05-09 2006-07-04 Sun Microsystems, Inc. Efficient construction of message endpoints
US7188251B1 (en) 2000-05-09 2007-03-06 Sun Microsystems, Inc. System and method for secure message-based leasing of resources in a distributed computing environment
US7577834B1 (en) 2000-05-09 2009-08-18 Sun Microsystems, Inc. Message authentication using message gates in a distributed computing environment
US6950875B1 (en) 2000-05-09 2005-09-27 Sun Microsystems, Inc. Message conductors in a distributed computing environment
US7010573B1 (en) 2000-05-09 2006-03-07 Sun Microsystems, Inc. Message gates using a shared transport in a distributed computing environment
US7260543B1 (en) 2000-05-09 2007-08-21 Sun Microsystems, Inc. Automatic lease renewal with message gates in a distributed computing environment
US7395333B1 (en) 2000-05-09 2008-07-01 Sun Microsystems, Inc. Method and apparatus to obtain negotiated service advertisement
US6792466B1 (en) 2000-05-09 2004-09-14 Sun Microsystems, Inc. Trusted construction of message endpoints in a distributed computing environment
US7200848B1 (en) 2000-05-09 2007-04-03 Sun Microsystems, Inc. Migrating processes using data representation language representations of the processes in a distributed computing environment
US6789077B1 (en) 2000-05-09 2004-09-07 Sun Microsystems, Inc. Mechanism and apparatus for web-based searching of URI-addressable repositories in a distributed computing environment
US7016966B1 (en) 2000-05-09 2006-03-21 Sun Microsystems, Inc. Generating results gates in a distributed computing environment
US8082491B1 (en) 2000-05-09 2011-12-20 Oracle America, Inc. Dynamic displays in a distributed computing environment
US8135796B1 (en) 2000-05-09 2012-03-13 Oracle America, Inc. Mechanism and apparatus for accessing and addressing services in a distributed computing environment
US6917976B1 (en) 2000-05-09 2005-07-12 Sun Microsystems, Inc. Message-based leasing of resources in a distributed computing environment
US7716492B1 (en) 2000-05-09 2010-05-11 Oracle America, Inc. Method and apparatus to obtain service capability credentials
US7370091B1 (en) 2000-05-09 2008-05-06 Sun Microsystems, Inc. Method and apparatus for obtaining space advertisements
US7065574B1 (en) 2000-05-09 2006-06-20 Sun Microsystems, Inc. Messaging system using pairs of message gates in a distributed computing environment
US6850979B1 (en) 2000-05-09 2005-02-01 Sun Microsystems, Inc. Message gates in a distributed computing environment
US6760815B1 (en) * 2000-06-02 2004-07-06 Sun Microsystems, Inc. Caching mechanism for a virtual heap
US6854115B1 (en) 2000-06-02 2005-02-08 Sun Microsystems, Inc. Process persistence in a virtual machine
US6763440B1 (en) 2000-06-02 2004-07-13 Sun Microsystems, Inc. Garbage collection using nursery regions for new objects in a virtual heap
US6957237B1 (en) 2000-06-02 2005-10-18 Sun Microsystems, Inc. Database store for a virtual heap
US6941410B1 (en) 2000-06-02 2005-09-06 Sun Microsystems, Inc. Virtual heap for a virtual machine
US6865657B1 (en) 2000-06-02 2005-03-08 Sun Microsystems, Inc. Garbage collector for a virtual heap
US6996566B1 (en) * 2000-11-21 2006-02-07 International Business Machines Corporation Method and system for an object model with embedded metadata and mapping information
US7249190B2 (en) * 2001-02-09 2007-07-24 Comlet Technologies, Llc. Enhanced data exchange and presentation/communication system
US7797431B2 (en) * 2001-02-09 2010-09-14 Willard Case Enhanced data exchange and functionality control system and method
US7257820B2 (en) * 2001-04-14 2007-08-14 Siebel Systems, Inc. Method and system for using integration objects with enterprise business applications
US7370272B2 (en) * 2001-04-14 2008-05-06 Siebel Systems, Inc. Data adapter
US6944615B2 (en) * 2001-06-28 2005-09-13 International Business Machines Corporation System and method for avoiding deadlock situations due to pseudo-deleted entries
US7069540B1 (en) * 2001-07-02 2006-06-27 Unisys Corporation COM persistence model
US7660887B2 (en) 2001-09-07 2010-02-09 Sun Microsystems, Inc. Systems and methods for providing dynamic quality of service for a distributed system
US7756969B1 (en) 2001-09-07 2010-07-13 Oracle America, Inc. Dynamic provisioning of identification services in a distributed system
US7685562B2 (en) * 2001-09-28 2010-03-23 Siebel Systems, Inc. Method and code generator for integrating different enterprise business applications
US7631092B2 (en) * 2001-10-05 2009-12-08 Bea Systems, Inc. System and method for providing a pluggable message store
US6976036B2 (en) * 2001-11-06 2005-12-13 Science Applications International Corporation Database management system
JP2003256228A (ja) * 2002-02-28 2003-09-10 Denso Corp プログラム書換装置
JP4459504B2 (ja) * 2002-03-11 2010-04-28 三菱電機株式会社 データサーバ
US6951009B2 (en) * 2002-03-12 2005-09-27 Bellsouth Intellectual Property Corporation System and method for generating computer code to facilitate development of CDR management tools
US7155205B2 (en) * 2002-03-12 2006-12-26 Bellsouth Intellectual Property Corporation System and method for verifying subscriber data records in a telephone system
US6876731B2 (en) 2002-03-12 2005-04-05 Bellsouth Intellectual Property Corporation System and method for managing CDR information
US20030192038A1 (en) * 2002-04-09 2003-10-09 Thomas Hagmann Linking data objects to a project development system
KR100500245B1 (ko) * 2003-02-18 2005-07-11 삼성전자주식회사 객체 지향 프로그램이 기록된 저장 매체
EP1652043B1 (en) * 2003-07-11 2017-01-25 CA, Inc. System and method for common storage object model
US7877390B2 (en) * 2003-10-20 2011-01-25 International Business Machines Corporation Systems and methods for providing autonomous persistent storage systems
US7792874B1 (en) 2004-01-30 2010-09-07 Oracle America, Inc. Dynamic provisioning for filtering and consolidating events
US7921216B2 (en) * 2005-02-01 2011-04-05 Microsoft Corporation System and method for building and using communication binding objects
US7565217B2 (en) * 2005-04-01 2009-07-21 International Business Machines Corporation Traversal of empty regions in a searchable data structure
US7680800B2 (en) * 2005-05-20 2010-03-16 International Business Machines Corporation Algorithm to marshal/unmarshal XML schema annotations to SDO dataobjects
US7487174B2 (en) * 2006-01-17 2009-02-03 International Business Machines Corporation Method for storing text annotations with associated type information in a structured data store
EP1906344A1 (en) * 2006-09-28 2008-04-02 Siemens Aktiengesellschaft A method and system for providing process statistic data for a business process work flow
US20090006435A1 (en) * 2007-06-28 2009-01-01 Cisco Technology, Inc. Object identifier awareness for network device notifications
US9292549B2 (en) * 2008-12-22 2016-03-22 Sap Se Method and system for index serialization
US9674637B2 (en) 2011-06-16 2017-06-06 Microsoft Technology Licensing, Llc Object marshaling
US9176712B2 (en) 2013-03-14 2015-11-03 Oracle International Corporation Node Grouped Data Marshalling

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0833862B2 (ja) * 1989-10-23 1996-03-29 インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン オブジエクト指向コンピユータ・システム
US5291593A (en) * 1990-10-24 1994-03-01 International Business Machines Corp. System for persistent and delayed allocation object reference in an object oriented environment
US5295256A (en) * 1990-12-14 1994-03-15 Racal-Datacom, Inc. Automatic storage of persistent objects in a relational schema
CA2246948C (en) * 1991-03-28 1999-09-14 Ibm Canada Limited-Ibm Canada Limitee Method and means for encoding storing and retrieving hierarchical data processing information for a computer system
US5414812A (en) * 1992-03-27 1995-05-09 International Business Machines Corporation System for using object-oriented hierarchical representation to implement a configuration database for a layered computer network communications subsystem
JP3613401B2 (ja) * 1992-07-06 2005-01-26 マイクロソフト コーポレーション オブジェクトの名称を付けて結び付ける方法及びシステム
WO1994011810A1 (en) * 1992-11-13 1994-05-26 Microsoft Corporation A method and system for marshalling interface pointers for remote procedure calls
US5566302A (en) * 1992-12-21 1996-10-15 Sun Microsystems, Inc. Method for executing operation call from client application using shared memory region and establishing shared memory region when the shared memory region does not exist
EP0604010B1 (en) * 1992-12-21 1999-12-29 Sun Microsystems, Inc. Method and apparatus for subcontracts in distributed processing systems
US5377350A (en) * 1993-04-30 1994-12-27 International Business Machines Corporation System for cooperative communication between local object managers to provide verification for the performance of remote calls by object messages
US5797007A (en) * 1993-06-14 1998-08-18 International Business Machines Corporation Persistent object storage system with default object encoder/decoder
WO1995003586A1 (en) * 1993-07-21 1995-02-02 Persistence Software, Inc. Method and apparatus for generation of code for mapping relational data to objects
JPH07295815A (ja) * 1994-04-26 1995-11-10 Internatl Business Mach Corp <Ibm> 永続オブジェクトのマッピング・システム及び方法
US5664182A (en) * 1995-09-18 1997-09-02 Actuate Software Corporation Persistent storage of report objects

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015170366A (ja) * 2014-03-07 2015-09-28 シュネーデル、エレクトリック、インダストリーズ、エスアーエスSchneider Electric Industries Sas 電子デバイスを備える電子システム、そのようなシステムを備える回路遮断器、デバイス間に非互換性がある場合に偏差指標を生成するための方法および関連するコンピュータ・プログラム製品

Also Published As

Publication number Publication date
US5809507A (en) 1998-09-15
EP0817026A3 (en) 2005-04-13
EP0817026A2 (en) 1998-01-07

Similar Documents

Publication Publication Date Title
US5809507A (en) Method and apparatus for storing persistent objects on a distributed object network using a marshaling framework
US6233582B1 (en) Persistent storage interface for a configuration object-based system
US6976261B2 (en) Method and apparatus for fast, local CORBA object references
US7127724B2 (en) Method and apparatus for providing protocol independent naming and life cycle services in an object-oriented system
US5692183A (en) Methods and apparatus for providing transparent persistence in a distributed object operating environment
US5758351A (en) System and method for the creation and use of surrogate information system objects
US6349342B1 (en) Methods and apparatus for managing computer processes
US6640255B1 (en) Method and apparatus for generation and installation of distributed objects on a distributed object system
US5652879A (en) Dynamic value mechanism for computer storage container manager enabling access of objects by multiple application programs
US6601072B1 (en) Method and system for distribution of application data to distributed databases of dissimilar formats
US20090300093A1 (en) Server computer
EP0932099A2 (en) Dynamic modification of a database management system
JPH10505693A (ja) 異種オブジェクトシステム相互間にインタオペラビリティを提供するシステム及び方法
JPH10133876A (ja) 低オーバヘッドオブジェクトアダプタ
JPH10511202A (ja) オブジェクト指向環境における回復可能プロキシ・オブジェクト
JPH11242605A (ja) マルチスレッドのクライアント・ベースapiをシングルスレッドのサーバ・ベースapiにインタフェースさせる方法、装置、およびプログラム製品
EP2751673A1 (en) Projecting native application programming interfaces of an operating system into other programming languages
US6205491B1 (en) Method and apparatus for deferred throwing of exceptions in C++
Bishop et al. JavaSpaces in practice
US6598093B1 (en) Method and apparatus for a core application programming interface
WO2000077632A1 (en) Management of non-mbeam objects in jmx environment
KR100313844B1 (ko) 프레임워크환경에서도구데이터객체를로킹하는메카니즘
US6769125B2 (en) Methods and apparatus for managing computer processes
US6401100B1 (en) Method for associating classes contained in the same or different models
EP0714532B1 (en) Dynamic value mechanism for computer storage container manager

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20050811

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050831

A521 Written amendment

Effective date: 20051024

Free format text: JAPANESE INTERMEDIATE CODE: A523

A131 Notification of reasons for refusal

Effective date: 20060307

Free format text: JAPANESE INTERMEDIATE CODE: A131

A762 Written abandonment of application

Effective date: 20060413

Free format text: JAPANESE INTERMEDIATE CODE: A762