JPH10149286A - 効率的な共通オブジェクトリクエストブローカアーキテクチャトランザクションを実行するための方法および装置 - Google Patents
効率的な共通オブジェクトリクエストブローカアーキテクチャトランザクションを実行するための方法および装置Info
- Publication number
- JPH10149286A JPH10149286A JP9246217A JP24621797A JPH10149286A JP H10149286 A JPH10149286 A JP H10149286A JP 9246217 A JP9246217 A JP 9246217A JP 24621797 A JP24621797 A JP 24621797A JP H10149286 A JPH10149286 A JP H10149286A
- Authority
- JP
- Japan
- Prior art keywords
- client
- transaction
- server
- coordinator
- application
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/465—Distributed object oriented systems
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)【要約】 (修正有)
【課題】 効率的にトランザクションを管理する。
【解決手段】 クライアントコンピュータは、新たなト
ランザクションを作成し、オブジェクトがリンクされる
べきことをリクエストする。クライアントは、サーバコ
ンピュータに対してコーディネータオブジェクト及び回
復コーディネータオブジェクトの組合わせを供給する。
オブジェクト呼出し内では、リソースが作成され、クラ
イアントのコーディネータオブジェクトと共に登録され
る。この方法は、クライアントに返し、回答し、サーバ
のコーディネータオブジェクトを供給する。このように
して、コーディネータオブジェクトが、クライアントコ
ンピュータに暗黙的に登録される。このトランザクショ
ンが他のオブジェクトについての呼出しを伴う場合、ク
ライアントは、それ自身のものではく、第1のサーバの
コーディネータオブジェクトを、後のサーバに供給す
る。
ランザクションを作成し、オブジェクトがリンクされる
べきことをリクエストする。クライアントは、サーバコ
ンピュータに対してコーディネータオブジェクト及び回
復コーディネータオブジェクトの組合わせを供給する。
オブジェクト呼出し内では、リソースが作成され、クラ
イアントのコーディネータオブジェクトと共に登録され
る。この方法は、クライアントに返し、回答し、サーバ
のコーディネータオブジェクトを供給する。このように
して、コーディネータオブジェクトが、クライアントコ
ンピュータに暗黙的に登録される。このトランザクショ
ンが他のオブジェクトについての呼出しを伴う場合、ク
ライアントは、それ自身のものではく、第1のサーバの
コーディネータオブジェクトを、後のサーバに供給す
る。
Description
【0001】
【発明の属する技術分野】この発明は、ワークステーシ
ョンコンピュータにおいて、Common Object Request Br
oker Architecture(CORBA:共通オブジェクト・
リクエスト・ブローカ・アーキテクチャ)のオブジェク
ト・トランザクション・サービス(“OTS”)を使用
して、効率的にトランザクションを管理するための方法
および装置に関する。特に、この発明の方法および装置
は、コーディネート用トランザクションの負担を、前記
ワークステーションから該ワークステーションに備えら
れたトランザクションオリジネータ(transaction orig
inator)によって呼び出された第1のサーバに移すもの
である。
ョンコンピュータにおいて、Common Object Request Br
oker Architecture(CORBA:共通オブジェクト・
リクエスト・ブローカ・アーキテクチャ)のオブジェク
ト・トランザクション・サービス(“OTS”)を使用
して、効率的にトランザクションを管理するための方法
および装置に関する。特に、この発明の方法および装置
は、コーディネート用トランザクションの負担を、前記
ワークステーションから該ワークステーションに備えら
れたトランザクションオリジネータ(transaction orig
inator)によって呼び出された第1のサーバに移すもの
である。
【0002】
【従来の技術】分散オブジェクトコンピューティング
は、分散コンピューティングの概念とオブジェクト指向
コンピューティングの概念とを組合わせたものである。
前記分散コンピューティングは、互いに情報を共用する
2つまたは3つ以上のソフトウエアで構成される。これ
ら2つのソフトウエアは、同一のコンピュータ、また
は、共通のネットワークに接続された異なるコンピュー
タで実行可能である。ほとんどの分散コンピューティン
グは、クライアント/サーバモードに基づいている。該
クライアント/サーバモードの場合、2種類の主要ソフ
トウエアが使用される。すなわち、情報またはサービス
をリクエストするクライアントソフトウエアと、情報ま
たはサービスを提供しまたは実行するサーバソフトウエ
アとである。
は、分散コンピューティングの概念とオブジェクト指向
コンピューティングの概念とを組合わせたものである。
前記分散コンピューティングは、互いに情報を共用する
2つまたは3つ以上のソフトウエアで構成される。これ
ら2つのソフトウエアは、同一のコンピュータ、また
は、共通のネットワークに接続された異なるコンピュー
タで実行可能である。ほとんどの分散コンピューティン
グは、クライアント/サーバモードに基づいている。該
クライアント/サーバモードの場合、2種類の主要ソフ
トウエアが使用される。すなわち、情報またはサービス
をリクエストするクライアントソフトウエアと、情報ま
たはサービスを提供しまたは実行するサーバソフトウエ
アとである。
【0003】一方、オブジェクトコンピューティングは
オブジェクトモデルに基づいており、該モードにおい
て、(しばしば実世界における実際の物体から抽出され
る)“オブジェクト”と呼ばれるコードは、(オブジェ
クト指向プログラム言語において“属性”と呼ばれる)
データを有し、(“オペレーション(operations)”ま
たは“メンバ関数”)としても知られているメソッドを
当してサービスを提供する。同様なオブジェクトの集合
は、インターフェイス(またしC++言語における“クラ
ス”)を構成する。各オブジェクトは、分散オブジェク
トシステムにおいて、オブジェクト参照と呼ばれるユニ
ークな識別子によって特定される。
オブジェクトモデルに基づいており、該モードにおい
て、(しばしば実世界における実際の物体から抽出され
る)“オブジェクト”と呼ばれるコードは、(オブジェ
クト指向プログラム言語において“属性”と呼ばれる)
データを有し、(“オペレーション(operations)”ま
たは“メンバ関数”)としても知られているメソッドを
当してサービスを提供する。同様なオブジェクトの集合
は、インターフェイス(またしC++言語における“クラ
ス”)を構成する。各オブジェクトは、分散オブジェク
トシステムにおいて、オブジェクト参照と呼ばれるユニ
ークな識別子によって特定される。
【0004】分散オブジェクトシステムにおいて、クラ
イアントは、サーバが実行すべき処理の表示と、オブジ
ェクト参照と、リクエストの成功または失敗に関する
“例外情報”を返すメカニズムを含むリクエスト(また
は“オブジェクトコール”)を送る。サーバは、前記リ
クエストを受け取り、可能な場合には、該リクエストを
実行し、例外情報を返す。オブジェクト・リクエスト・
ブローカ(ORB)は、当該システムにおけるすべての
オブジェクトのための通信ハブを提供し、前記リクエス
トを前記サーバに送り、その回答を前記クライアントに
返す。
イアントは、サーバが実行すべき処理の表示と、オブジ
ェクト参照と、リクエストの成功または失敗に関する
“例外情報”を返すメカニズムを含むリクエスト(また
は“オブジェクトコール”)を送る。サーバは、前記リ
クエストを受け取り、可能な場合には、該リクエストを
実行し、例外情報を返す。オブジェクト・リクエスト・
ブローカ(ORB)は、当該システムにおけるすべての
オブジェクトのための通信ハブを提供し、前記リクエス
トを前記サーバに送り、その回答を前記クライアントに
返す。
【0005】クライアント側において、前記ORBは、
メソッドの呼出し、ならびに、サーバおよびメソッドに
ついて関連した選択のためのリクエストを処理する。あ
るアプリケーションがあるオブジェクトについて実行す
べきメソッドに関するリクエストを前記ORBに送った
場合、該ORBは、前記リクエストに含まれる引き数の
正当性を前記インターフェイスに対して確認し、該リク
エストを前記サーバに送り、必要な場合これを開始す
る。サーバ側において、前記ORBは、このようなリク
エストを受け取り、前記引き数を配列から外し、必要に
応じてコンテキストを設定し、メソッドディスパッチャ
ーを呼出し、出力引き数を配列させ、その結果を前記ク
ライアントに返し、これにより、そのオブジェクト呼出
しを完成させる。
メソッドの呼出し、ならびに、サーバおよびメソッドに
ついて関連した選択のためのリクエストを処理する。あ
るアプリケーションがあるオブジェクトについて実行す
べきメソッドに関するリクエストを前記ORBに送った
場合、該ORBは、前記リクエストに含まれる引き数の
正当性を前記インターフェイスに対して確認し、該リク
エストを前記サーバに送り、必要な場合これを開始す
る。サーバ側において、前記ORBは、このようなリク
エストを受け取り、前記引き数を配列から外し、必要に
応じてコンテキストを設定し、メソッドディスパッチャ
ーを呼出し、出力引き数を配列させ、その結果を前記ク
ライアントに返し、これにより、そのオブジェクト呼出
しを完成させる。
【0006】クライアントおよびサーバは、共に、実行
され得る利用可能なオブジェクトおよびメソッドについ
ての情報を有さなければならない。私用データを隠す
(オブジェクト指向言語において“カプセル化”する)
ことによって、前記クライアントは、リクエトがどのよ
うに前記サーバによって実行されるのかを知る必要がな
い。それにもかかわらず、クライアントおよびサーバ
は、共に、これらの間における通信を可能にするため
に、共通のインターフェイス定義にアクセスできなけれ
ばならない。現在、分散オブジェクトコンピューティン
グのための標準的な言語は、Object Management Group
(OMG)のInterface Definition Language(ID
L:インターフェイス定義言語)である。
され得る利用可能なオブジェクトおよびメソッドについ
ての情報を有さなければならない。私用データを隠す
(オブジェクト指向言語において“カプセル化”する)
ことによって、前記クライアントは、リクエトがどのよ
うに前記サーバによって実行されるのかを知る必要がな
い。それにもかかわらず、クライアントおよびサーバ
は、共に、これらの間における通信を可能にするため
に、共通のインターフェイス定義にアクセスできなけれ
ばならない。現在、分散オブジェクトコンピューティン
グのための標準的な言語は、Object Management Group
(OMG)のInterface Definition Language(ID
L:インターフェイス定義言語)である。
【0007】前記IDL(インターフェイス定義言語)
は、前記OMGのCommon Object Request Broker Archi
tecture(CORBA:共通オブジェクト・リクエスト
・ブローカ・アーキテクチャ)を実行する分散オブジェ
クトシステムに使用される。典型的なCORBAシステ
ムにおいて、インターフェイス定義は、IDLによって
定義されたソースファイル(“翻訳ユニット”としても
知られている)に書かれている。前記ソースファイル
は、クライアント・スタブ・ファイル、ヘッダファイ
ル、ヘッダファイルおよびサーバ・スケルトン・ファイ
ルを含むプログラミング言語別ファイルを発生するID
Lコンパイラによってコンパイルされる。クライアント
・スタブ・ファイルは、コンパイルされ、クライアント
アプリケーションにリンクされ、リクエストを作成する
ために使用される。ヘッダファイルは、クライアントア
プリケーションおよびサーバアプリケーションにリンク
され、データタイプを定義するために使用される。サー
バ・スケルトン・ファイルは、サーバアプリケーション
にリンクされ、オブジェクト(リクエスト)についての
クライアントオペレーションを、サーバ実施メソッドに
マッピングするために使用される。
は、前記OMGのCommon Object Request Broker Archi
tecture(CORBA:共通オブジェクト・リクエスト
・ブローカ・アーキテクチャ)を実行する分散オブジェ
クトシステムに使用される。典型的なCORBAシステ
ムにおいて、インターフェイス定義は、IDLによって
定義されたソースファイル(“翻訳ユニット”としても
知られている)に書かれている。前記ソースファイル
は、クライアント・スタブ・ファイル、ヘッダファイ
ル、ヘッダファイルおよびサーバ・スケルトン・ファイ
ルを含むプログラミング言語別ファイルを発生するID
Lコンパイラによってコンパイルされる。クライアント
・スタブ・ファイルは、コンパイルされ、クライアント
アプリケーションにリンクされ、リクエストを作成する
ために使用される。ヘッダファイルは、クライアントア
プリケーションおよびサーバアプリケーションにリンク
され、データタイプを定義するために使用される。サー
バ・スケルトン・ファイルは、サーバアプリケーション
にリンクされ、オブジェクト(リクエスト)についての
クライアントオペレーションを、サーバ実施メソッドに
マッピングするために使用される。
【0008】CORBA ORB自体は、オブジェクト
がシステムレベルで相互作用するのに必要なすべてのも
のを含むわけではない。しかし、前記ORBは、クライ
アントと少なくとも1つのサーバとの間のオブジェクト
リクエストを仲介するための基本メカニズムを提供す
る。その他の必要な、または、望ましいサービスは、前
記ORBの上端に格納されたIDLインターフェイスを
有するオブジェクトによって提供される。IDLおよび
ORBは“ソフトウエアバス”の機能を提供し、COR
BAオブジェクトサービスは、このバスに差し込まれ、
これを増大する。エンドユーザオブジェクト構成要素
は、前記バスおよびそのサービスの両方を利用する。
がシステムレベルで相互作用するのに必要なすべてのも
のを含むわけではない。しかし、前記ORBは、クライ
アントと少なくとも1つのサーバとの間のオブジェクト
リクエストを仲介するための基本メカニズムを提供す
る。その他の必要な、または、望ましいサービスは、前
記ORBの上端に格納されたIDLインターフェイスを
有するオブジェクトによって提供される。IDLおよび
ORBは“ソフトウエアバス”の機能を提供し、COR
BAオブジェクトサービスは、このバスに差し込まれ、
これを増大する。エンドユーザオブジェクト構成要素
は、前記バスおよびそのサービスの両方を利用する。
【0009】CORBA対応の分散オブジェクトシステ
ムによって提供されるオブジェクトサービスのうちの1
つは、オブジェクト・トランザクション・サービス
(“OTS”)である。OTSは、分散オブジェクト技
術とトランザクション処理技術とを組合わせる前記OM
Gによる試みである。前記トランザクション処理技術
は、分散システムにおける頑強性を保証する設計哲学で
ある。ORB環境において、トランザクションは、クラ
イアント側の発生地点から、1つまたは2つ以上のサー
バを通り、前記発生地点に返るまで管理されなければな
らない。1つのトランザクションが終了すると、すべて
の関係当事者(例えば、前記トランザクションに関係す
るトランザクショナルクライアントおよびすべてのサー
バ)は、該トランザクションが成功したか、または、失
敗したかについて了解すべきである。前記トランザクシ
ョンについての各当事者は、該トランザクションに参加
し、または、該トランザクションをロールバックさせ、
こうして、該トランザクションを再スタートさせる。分
散オブジェクトシステムにおいて、トランザクション
は、回復、一貫性および同時並行の基本単位となる。前
記OTSは、各CORBAコンピュータに格納されたト
ランザクション管理ソフトウエアによって実行される。
以下、このコードを“トランザクションマネージャ”
(TM)と言う。好ましくは、各コンピュータは、特定
のマシーンに関するトランザクションを管理するため
に、CORBA OTS規格に準拠するトランザクショ
ンマネージャを含む。
ムによって提供されるオブジェクトサービスのうちの1
つは、オブジェクト・トランザクション・サービス
(“OTS”)である。OTSは、分散オブジェクト技
術とトランザクション処理技術とを組合わせる前記OM
Gによる試みである。前記トランザクション処理技術
は、分散システムにおける頑強性を保証する設計哲学で
ある。ORB環境において、トランザクションは、クラ
イアント側の発生地点から、1つまたは2つ以上のサー
バを通り、前記発生地点に返るまで管理されなければな
らない。1つのトランザクションが終了すると、すべて
の関係当事者(例えば、前記トランザクションに関係す
るトランザクショナルクライアントおよびすべてのサー
バ)は、該トランザクションが成功したか、または、失
敗したかについて了解すべきである。前記トランザクシ
ョンについての各当事者は、該トランザクションに参加
し、または、該トランザクションをロールバックさせ、
こうして、該トランザクションを再スタートさせる。分
散オブジェクトシステムにおいて、トランザクション
は、回復、一貫性および同時並行の基本単位となる。前
記OTSは、各CORBAコンピュータに格納されたト
ランザクション管理ソフトウエアによって実行される。
以下、このコードを“トランザクションマネージャ”
(TM)と言う。好ましくは、各コンピュータは、特定
のマシーンに関するトランザクションを管理するため
に、CORBA OTS規格に準拠するトランザクショ
ンマネージャを含む。
【0010】トランザクション処理の1つの基本的な特
徴は、いわゆる“2段階コミット”手続きである。該2
段階コミット手続きは、複数の異なるマシーンのすべて
が失敗するか、または、成功するよう、これらマシーン
のアップデートを同期させるために使用されるトランザ
クション処理プロトコルである。これは、コミットする
決定を中央に集中させ、しかし、各従属当事者に拒否権
を与えることによって行われる(通常、コミットする決
定はクライアント)。コミットの第1の段階において、
コミットマネージャは、トランザクションに参加するよ
う要請されたすべての従属当事者に対して、prepare
(準備)コマンドを送る。前記コミットマネージャがす
べての従属当事者からコミット準備完了信号を受け取っ
た時、前記コミットの第1の段階が終了する。前記コミ
ットマネージャが前記トランザクションをコミットする
よう決定した時、前記コミットの第2の段階が始まる。
前記すべての従属当事者が前記トランザクションの各々
の分担を支障なくコミットした時、前記第2の段階が終
了する。いずれかの前記当事者が前記トランザクション
に参加することを拒否する表示を返した場合、前記2段
階コミットはアボート(中断)する。 その場合、前記
コミットマネージャは、前記すべての従属当事者に対し
てロールバックを実行するよう指示する。
徴は、いわゆる“2段階コミット”手続きである。該2
段階コミット手続きは、複数の異なるマシーンのすべて
が失敗するか、または、成功するよう、これらマシーン
のアップデートを同期させるために使用されるトランザ
クション処理プロトコルである。これは、コミットする
決定を中央に集中させ、しかし、各従属当事者に拒否権
を与えることによって行われる(通常、コミットする決
定はクライアント)。コミットの第1の段階において、
コミットマネージャは、トランザクションに参加するよ
う要請されたすべての従属当事者に対して、prepare
(準備)コマンドを送る。前記コミットマネージャがす
べての従属当事者からコミット準備完了信号を受け取っ
た時、前記コミットの第1の段階が終了する。前記コミ
ットマネージャが前記トランザクションをコミットする
よう決定した時、前記コミットの第2の段階が始まる。
前記すべての従属当事者が前記トランザクションの各々
の分担を支障なくコミットした時、前記第2の段階が終
了する。いずれかの前記当事者が前記トランザクション
に参加することを拒否する表示を返した場合、前記2段
階コミットはアボート(中断)する。 その場合、前記
コミットマネージャは、前記すべての従属当事者に対し
てロールバックを実行するよう指示する。
【0011】OTS(オブジェクト・トランザクション
・サービス)では、現在のオブジェクトについてbegin
メソッドを呼び出すことによって、クライアントアプリ
ケーション(トランザクションオリジネータ)において
トランザクションが作成される。前記現在のオブジェク
トは、実際上、前記クライアントアプリケーション内を
通るスレッドを表す擬似オブジェクト(ORBによって
直接実行可能なオブジェクト)である。トランザクショ
ンが作成されと、前記クライアントスレッドのトランザ
クションコンテキストが、暗黙的に、新たな前記トラン
ザクションに対応づけられる。さらに、ターミネータオ
ブジェクト、コーディネータオブジェクトおよび回復コ
ーディネータオブジェクトが、呼び出される。前記ター
ミネータオブジェクトは、トランザクションをコミット
し、または、ロールバックさせることによって前記トラ
ンザクションを終了させるために、クライアントによっ
て使用される。前記コーディネータオブジェクトは、ト
ランザクションに関係する2段階コミットを調整するた
めに使用される。前記回復コーディネータオブジェクト
は、失敗したトランザクションからの回復を補助するた
めに使用される。前記beginメソッドを呼び出す代り
に、OTSのファクトリ(Factory)オブジェクトにつ
いてcreate(作成)メソッドを呼び出すことによって、
制御オブジェクトが明示的に作成されることができる。
該制御オブジェクトは、現在のトランザクションを前記
スレッドと明示的に対応づけるために使用される。クラ
イアントが現在の擬似オブジェクトについてbeginメソ
ッドを呼び出す場合、前記クライアントアプリケーショ
ンはこれらのオブジェクトを明示的に処理する機会を持
たないことになる(多分、多数のトランザクションを処
理するために明示的に使用可能な制御オブジェクトを例
外とする)。
・サービス)では、現在のオブジェクトについてbegin
メソッドを呼び出すことによって、クライアントアプリ
ケーション(トランザクションオリジネータ)において
トランザクションが作成される。前記現在のオブジェク
トは、実際上、前記クライアントアプリケーション内を
通るスレッドを表す擬似オブジェクト(ORBによって
直接実行可能なオブジェクト)である。トランザクショ
ンが作成されと、前記クライアントスレッドのトランザ
クションコンテキストが、暗黙的に、新たな前記トラン
ザクションに対応づけられる。さらに、ターミネータオ
ブジェクト、コーディネータオブジェクトおよび回復コ
ーディネータオブジェクトが、呼び出される。前記ター
ミネータオブジェクトは、トランザクションをコミット
し、または、ロールバックさせることによって前記トラ
ンザクションを終了させるために、クライアントによっ
て使用される。前記コーディネータオブジェクトは、ト
ランザクションに関係する2段階コミットを調整するた
めに使用される。前記回復コーディネータオブジェクト
は、失敗したトランザクションからの回復を補助するた
めに使用される。前記beginメソッドを呼び出す代り
に、OTSのファクトリ(Factory)オブジェクトにつ
いてcreate(作成)メソッドを呼び出すことによって、
制御オブジェクトが明示的に作成されることができる。
該制御オブジェクトは、現在のトランザクションを前記
スレッドと明示的に対応づけるために使用される。クラ
イアントが現在の擬似オブジェクトについてbeginメソ
ッドを呼び出す場合、前記クライアントアプリケーショ
ンはこれらのオブジェクトを明示的に処理する機会を持
たないことになる(多分、多数のトランザクションを処
理するために明示的に使用可能な制御オブジェクトを例
外とする)。
【0012】リクエストが1つのトランザクションの範
囲内に発せられる場合であっても、OTSは、すべての
オブジェクトに関するすべてのリクエストが前記トラン
ザクションに関係する(トランザクショナルな)挙動を
有する、ことを要求しない。例えば、あるオブジェクト
は、いくつかのリクエストのためのトランザクショナル
な関係する挙動を支援するが、他のリクエストのための
トランザクショナルな挙動は支援しないかもしれない。
トランザクショナルでないオブジェクトとは、1つのト
ランザクションの範囲内で呼び出されることによって影
響されるオペレーションを有さないオブジェクトのこと
である。また、トランザクショナルなオブジェクトと
は、1つのトランザクションの範囲内で呼び出されるこ
とによって影響されるオペレーションを有するオブジェ
クトのことである。典型的には、トランザクショナルな
オブジェクトは、リクエストによって修正可能な継続的
なデータを含むものか、または、これらのデータを間接
的に言及する。トランザクションオブジェクトは、OT
Sのトランザクション・オブジェクト・インターフェイ
スから引き継ぐ。
囲内に発せられる場合であっても、OTSは、すべての
オブジェクトに関するすべてのリクエストが前記トラン
ザクションに関係する(トランザクショナルな)挙動を
有する、ことを要求しない。例えば、あるオブジェクト
は、いくつかのリクエストのためのトランザクショナル
な関係する挙動を支援するが、他のリクエストのための
トランザクショナルな挙動は支援しないかもしれない。
トランザクショナルでないオブジェクトとは、1つのト
ランザクションの範囲内で呼び出されることによって影
響されるオペレーションを有さないオブジェクトのこと
である。また、トランザクショナルなオブジェクトと
は、1つのトランザクションの範囲内で呼び出されるこ
とによって影響されるオペレーションを有するオブジェ
クトのことである。典型的には、トランザクショナルな
オブジェクトは、リクエストによって修正可能な継続的
なデータを含むものか、または、これらのデータを間接
的に言及する。トランザクションオブジェクトは、OT
Sのトランザクション・オブジェクト・インターフェイ
スから引き継ぐ。
【0013】OTSにおいてトランザクション挙動を実
行するために、1つのオブジェクトは、前記2段階コミ
ットを含む一定のプロトコルに参加しなければならな
い。オブジェクトは、1つのトランザクション内におい
てその状態が変化しやすいデータを直接的に管理する場
合にのみ、これらのプロトコルに参加するようリクエス
トされる。このようなデータは“リソース”(Resourc
e:資源)と称される。また、そのデータがトランザク
ションをコミットまたはロールバックすることによって
影響されるオブジェクトは、回復可能なオブジェクトと
呼ばれる。しかし、オブジェクトは、トランザクショナ
ルであり得るが、他の回復可能なオブジェクトを使用し
てその状態を実行するによって回復可能にならない。サ
ーバアプリケーションにおける回復可能なオブジェクト
は、リソースを示すリソースオブジェクトを作成するこ
とによって2段階コミットに参加することを所望してい
る旨指示する。このリソースオブジェクトは、register
_resourceメソッドを使用してコーディネータオブジェ
クトに登録される。
行するために、1つのオブジェクトは、前記2段階コミ
ットを含む一定のプロトコルに参加しなければならな
い。オブジェクトは、1つのトランザクション内におい
てその状態が変化しやすいデータを直接的に管理する場
合にのみ、これらのプロトコルに参加するようリクエス
トされる。このようなデータは“リソース”(Resourc
e:資源)と称される。また、そのデータがトランザク
ションをコミットまたはロールバックすることによって
影響されるオブジェクトは、回復可能なオブジェクトと
呼ばれる。しかし、オブジェクトは、トランザクショナ
ルであり得るが、他の回復可能なオブジェクトを使用し
てその状態を実行するによって回復可能にならない。サ
ーバアプリケーションにおける回復可能なオブジェクト
は、リソースを示すリソースオブジェクトを作成するこ
とによって2段階コミットに参加することを所望してい
る旨指示する。このリソースオブジェクトは、register
_resourceメソッドを使用してコーディネータオブジェ
クトに登録される。
【0014】ここで、OTSにより、前記ORBは負担
を増したことになる。1つのアプリケーションにおける
すべての制御スレッドは、暗黙的な現在のトランザクシ
ョンを有する(そのスレッドに対応づけられたトランザ
クションが存在しない場合、トランザクションは“ゼ
ロ”である)。前記ORBは、スレッドの暗黙的な現在
のトランザクションについて知らない。むしろ、1つの
トランザクショナルなオブジェクトについてメソッドが
呼び出されることをクライアントアプリケーションがリ
クエストした場合、前記ORBは、最初に、現在のトラ
ンザクションを記述したデータ構造であるトランザクシ
ョンコンテキストを呼出す。該トランザクションコンテ
キストは、コーディネートオブジェクト参照、ターミネ
ータオブジェクト参照、ユニークな識別子、および、そ
の他の実行毎の情報を含むものである。前記ORBがリ
クエストを送る場合、自動的に、前記トランザクション
コンテキストがそのリクエストと共に送られる。サーバ
のスレッドにおいて、前記ORBは、OTSルーチンを
呼出し、前記トランザクションコンテキストをそのルー
チンに送る。その後、前記サーバは、それ自身の制御オ
ブジェクトを作成する。前記メソッドが返された後であ
って、その回答が前記クライアントに送られる前におい
て、前記ORBは、前記トランザクションコンテキスト
を返す他のOTSルーチンを呼出す。前記クライアント
において、ORBは、第4のルーチンを呼出し、前記サ
ーバからのトランザクションコンテキストを送る。こう
して、各トランザクショナルなメソッド呼出し毎に、ト
ランザクションコンテキストが、自動的に、クライアン
トスレッドとサーバスレッドとの間で送られる。
を増したことになる。1つのアプリケーションにおける
すべての制御スレッドは、暗黙的な現在のトランザクシ
ョンを有する(そのスレッドに対応づけられたトランザ
クションが存在しない場合、トランザクションは“ゼ
ロ”である)。前記ORBは、スレッドの暗黙的な現在
のトランザクションについて知らない。むしろ、1つの
トランザクショナルなオブジェクトについてメソッドが
呼び出されることをクライアントアプリケーションがリ
クエストした場合、前記ORBは、最初に、現在のトラ
ンザクションを記述したデータ構造であるトランザクシ
ョンコンテキストを呼出す。該トランザクションコンテ
キストは、コーディネートオブジェクト参照、ターミネ
ータオブジェクト参照、ユニークな識別子、および、そ
の他の実行毎の情報を含むものである。前記ORBがリ
クエストを送る場合、自動的に、前記トランザクション
コンテキストがそのリクエストと共に送られる。サーバ
のスレッドにおいて、前記ORBは、OTSルーチンを
呼出し、前記トランザクションコンテキストをそのルー
チンに送る。その後、前記サーバは、それ自身の制御オ
ブジェクトを作成する。前記メソッドが返された後であ
って、その回答が前記クライアントに送られる前におい
て、前記ORBは、前記トランザクションコンテキスト
を返す他のOTSルーチンを呼出す。前記クライアント
において、ORBは、第4のルーチンを呼出し、前記サ
ーバからのトランザクションコンテキストを送る。こう
して、各トランザクショナルなメソッド呼出し毎に、ト
ランザクションコンテキストが、自動的に、クライアン
トスレッドとサーバスレッドとの間で送られる。
【0015】トランザクションコンテキストを伝えるこ
のメソッドにより、サーバは、単に、そのトランザクシ
ョンのためのターミネータオブジェクト参照およびコー
ディネータオブジェクト参照を記憶し、これらを現在の
制御スレッドに対応づけ、その後、前記現在の制御スレ
ッドのget_coordinatorメソッドを呼び出して、リソー
スを記憶したコーディネータオブジェクト参照に対応づ
ける。しかし、前記サーバが他のサーバのメソッドを呼
び出さなければならない場合、該サーバは、前記ターミ
ネータオブジェクト参照およびコーディネータオブジェ
クト参照を前方に送るよう手配しなければならない。こ
うして、前記ターミネータオブジェクトおよびコーディ
ネータオブジェクトは前記クライアント上に(または、
この近くに)留まっているので、参加しているすべての
回復可能なオブジェクトは、前記クライアントによって
調整されることになる。これは、クライアントとサーバ
との間における多数の前後通信につながることになる。
この問題点を克服するために、CORBA対応システム
は、そのトランザクションを完成させるための従属コー
ディネータオブジェクトの挿入を可能にする。前記サー
バが前記クライアントからのリクエストを受け取ると、
該サーバは、それ自身のコーディネータオブジェクトを
作成し、前記クライアントのコーディネータオブジェク
トに前記トランザクションに関する従属コーディネータ
オブジェクトを登録し、そのトランザクションを現在の
トランザクションとする。それ自身のコーディネータオ
ブジェクトを作成すると、前記サーバは、前記トランザ
クションを記述するために、(従属コーディネータオブ
ジェクトに加えて)それ自身のターミネータオブジェク
トとリソースオブジェクトを受け取る。(最もありそう
なこととして、前記サーバは、コーディネータインター
フェイスおよびリソースオブジェクトの両方から属性お
よびメソッドを“継承”するコーディネータ/リソース
オブジェクトの組合わせを受け取る。)前記サーバは、
前記クライアントのコーディネータオブジェクトに、そ
の新たなリソースを登録する。前記クライアントは、前
記新たなサーバコーディネータが前記トランザクション
からの回復を試みることを可能にするために、回復コー
ディネータオブジェクトを返す。その後のすべての呼出
しは前記サーバの新たな従属コーディネータオブジェク
トに報告でき、該新たな従属コーディネータオブジェク
トは前記クライアントのコーディネータオブジェクトに
報告する。前記新たな従属コーディネータオブジェクト
の挿入は、該従属コーディネータオブジェクトとの通信
毎のネットワーク周遊トリップの必要性を除去し、これ
により、様々なアプリケーションの速度を高める。
のメソッドにより、サーバは、単に、そのトランザクシ
ョンのためのターミネータオブジェクト参照およびコー
ディネータオブジェクト参照を記憶し、これらを現在の
制御スレッドに対応づけ、その後、前記現在の制御スレ
ッドのget_coordinatorメソッドを呼び出して、リソー
スを記憶したコーディネータオブジェクト参照に対応づ
ける。しかし、前記サーバが他のサーバのメソッドを呼
び出さなければならない場合、該サーバは、前記ターミ
ネータオブジェクト参照およびコーディネータオブジェ
クト参照を前方に送るよう手配しなければならない。こ
うして、前記ターミネータオブジェクトおよびコーディ
ネータオブジェクトは前記クライアント上に(または、
この近くに)留まっているので、参加しているすべての
回復可能なオブジェクトは、前記クライアントによって
調整されることになる。これは、クライアントとサーバ
との間における多数の前後通信につながることになる。
この問題点を克服するために、CORBA対応システム
は、そのトランザクションを完成させるための従属コー
ディネータオブジェクトの挿入を可能にする。前記サー
バが前記クライアントからのリクエストを受け取ると、
該サーバは、それ自身のコーディネータオブジェクトを
作成し、前記クライアントのコーディネータオブジェク
トに前記トランザクションに関する従属コーディネータ
オブジェクトを登録し、そのトランザクションを現在の
トランザクションとする。それ自身のコーディネータオ
ブジェクトを作成すると、前記サーバは、前記トランザ
クションを記述するために、(従属コーディネータオブ
ジェクトに加えて)それ自身のターミネータオブジェク
トとリソースオブジェクトを受け取る。(最もありそう
なこととして、前記サーバは、コーディネータインター
フェイスおよびリソースオブジェクトの両方から属性お
よびメソッドを“継承”するコーディネータ/リソース
オブジェクトの組合わせを受け取る。)前記サーバは、
前記クライアントのコーディネータオブジェクトに、そ
の新たなリソースを登録する。前記クライアントは、前
記新たなサーバコーディネータが前記トランザクション
からの回復を試みることを可能にするために、回復コー
ディネータオブジェクトを返す。その後のすべての呼出
しは前記サーバの新たな従属コーディネータオブジェク
トに報告でき、該新たな従属コーディネータオブジェク
トは前記クライアントのコーディネータオブジェクトに
報告する。前記新たな従属コーディネータオブジェクト
の挿入は、該従属コーディネータオブジェクトとの通信
毎のネットワーク周遊トリップの必要性を除去し、これ
により、様々なアプリケーションの速度を高める。
【0016】
【発明が解決しようとする課題】挿入等の特徴を使用す
るにも関わらず、OTSは、トランザクションを完成さ
せるために、依然として多くの周遊トリップを必要とす
る。例えば、挿入を伴う1つのトランザクションにおい
て、クライアントは、1つのメソッドが特定のオブジェ
クトについて実行されることをリクエストする。そのオ
ブジェクトが回復可能なオブジェクトである場合、サー
バ側においてリソースオブジェクトが作成される。サー
バ・トランザクション・マネージャは、最初にそれ自身
の従属コーディネータ/リソースオブジェクトを作成
し、こりオブジェクトをサーバトランザクションに対応
づけなければならない。前記サーバのコーディネータ/
リソースオブジェクトは、前記クライアントのコーディ
ネータに登録されなければならず、前記クライアントに
対する周遊トリップを必要とする。前記回復可能なオブ
ジェクトについてのメソッドの呼出しの後、前記メソッ
ドは前記クライアントに返る。前記クライアントは、前
記トランザクションに専念し、前記サーバのリソースに
ついてのprepareメソッドを呼び出し、このため、前記
サーバに対する他の周遊トリップを必要とする。前記リ
ソースは回答し、前記クライアントは、該リソースのco
mmitメソッドを呼び出し、前記サーバに対するさらに他
の周遊トリップを必要とする。その他のサーバが参加す
る場合、この処理は、さらに時間がかかるものになり、
当該システムの性能を低下させる。
るにも関わらず、OTSは、トランザクションを完成さ
せるために、依然として多くの周遊トリップを必要とす
る。例えば、挿入を伴う1つのトランザクションにおい
て、クライアントは、1つのメソッドが特定のオブジェ
クトについて実行されることをリクエストする。そのオ
ブジェクトが回復可能なオブジェクトである場合、サー
バ側においてリソースオブジェクトが作成される。サー
バ・トランザクション・マネージャは、最初にそれ自身
の従属コーディネータ/リソースオブジェクトを作成
し、こりオブジェクトをサーバトランザクションに対応
づけなければならない。前記サーバのコーディネータ/
リソースオブジェクトは、前記クライアントのコーディ
ネータに登録されなければならず、前記クライアントに
対する周遊トリップを必要とする。前記回復可能なオブ
ジェクトについてのメソッドの呼出しの後、前記メソッ
ドは前記クライアントに返る。前記クライアントは、前
記トランザクションに専念し、前記サーバのリソースに
ついてのprepareメソッドを呼び出し、このため、前記
サーバに対する他の周遊トリップを必要とする。前記リ
ソースは回答し、前記クライアントは、該リソースのco
mmitメソッドを呼び出し、前記サーバに対するさらに他
の周遊トリップを必要とする。その他のサーバが参加す
る場合、この処理は、さらに時間がかかるものになり、
当該システムの性能を低下させる。
【0017】さらに、CORBA OTSへのワークス
テーションの導入は、さらに他の問題点生じる。上記か
ら明らかなように、OTSは、様々なシステムに関する
2段階コミット記録の作成、管理および保存を含む重要
なトランザクション管理を必要とする。ワークステーシ
ョンが最終的なトランザクションマネージャとして機能
しなければならない場合、サーバアプリケーションは、
ワークステーションが回答する(例えば、リソースを登
録する)のを待ち続ける状態におかれることがある。前
記ワークステーションが回答を怠ると、アプリケーショ
ンは、前記ワークステーションが回答するまで、ロック
状態におかれることがある。例えば、ユーザがコンピュ
ータを停止したことにより前記ワークステーションが回
答を怠ると、サーバアプリケーションは、数日または数
ケ月待ち続けることになるという可能性がある。
テーションの導入は、さらに他の問題点生じる。上記か
ら明らかなように、OTSは、様々なシステムに関する
2段階コミット記録の作成、管理および保存を含む重要
なトランザクション管理を必要とする。ワークステーシ
ョンが最終的なトランザクションマネージャとして機能
しなければならない場合、サーバアプリケーションは、
ワークステーションが回答する(例えば、リソースを登
録する)のを待ち続ける状態におかれることがある。前
記ワークステーションが回答を怠ると、アプリケーショ
ンは、前記ワークステーションが回答するまで、ロック
状態におかれることがある。例えば、ユーザがコンピュ
ータを停止したことにより前記ワークステーションが回
答を怠ると、サーバアプリケーションは、数日または数
ケ月待ち続けることになるという可能性がある。
【0018】従って、ネットワーク周遊トリップの合計
回数を少なくするCORBA OTS仕様を実行するシ
ステム、または、これに類似したシステムにおけるトラ
ンザクショナルな分散オブジェクトを実行するためのメ
ソッドおよびシステムが、必要とされている。さらに、
特にワークステーションまたはこれに類似したコンピュ
ータを必要とするトランザクションを効率的に管理する
CORBA OTS仕様を実行するシステム、または、
これに類似したシステムにおけるトランザクショナルな
分散オブジェクトを実行するためのメソッドおよびシス
テムが、必要とされている。この発明は、上述の点に鑑
みてなされたもので、ネットワーク周遊トリップの合計
回数を少なくできるCORBA OTS仕様を実施する
システムにおいてトランザクショナル分散オブジェクト
呼出しを実行するための方法およびシステムを提供する
ことを目的とする。さらに、この発明は、ワークステー
ションコンピュータを使用するトランザクションを効率
的に管理する方法およびシステムを提供することを目的
とする。
回数を少なくするCORBA OTS仕様を実行するシ
ステム、または、これに類似したシステムにおけるトラ
ンザクショナルな分散オブジェクトを実行するためのメ
ソッドおよびシステムが、必要とされている。さらに、
特にワークステーションまたはこれに類似したコンピュ
ータを必要とするトランザクションを効率的に管理する
CORBA OTS仕様を実行するシステム、または、
これに類似したシステムにおけるトランザクショナルな
分散オブジェクトを実行するためのメソッドおよびシス
テムが、必要とされている。この発明は、上述の点に鑑
みてなされたもので、ネットワーク周遊トリップの合計
回数を少なくできるCORBA OTS仕様を実施する
システムにおいてトランザクショナル分散オブジェクト
呼出しを実行するための方法およびシステムを提供する
ことを目的とする。さらに、この発明は、ワークステー
ションコンピュータを使用するトランザクションを効率
的に管理する方法およびシステムを提供することを目的
とする。
【0019】
【課題を解決するための手段】この発明の方法およびシ
ステムは、クライアントコンピュータおよび1つまたは
複数のサーバコンピュータを使用するCORBA対応ト
ランザクションを管理する。両前記クライアントコンピ
ュータおよびサーバコンピュータのメモリには、COR
BA対応トランザクションマネージャを実施するための
コードを格納している。前記クライアントコンピュータ
は、トランザクションの開始を要求する。前記トランザ
クションマネージャは、ターミネータオブジェクトおよ
びコーディネータ/回復コーディネータオブジェクトを
作成する。前記クライアントは、前記サーバコンピュー
タに格納されたオブジェクトについてメソッドの呼出し
をリクエストする。該リクエストは、前記ORBによっ
て前記サーバコンピュータに送られる。トランザクショ
ンコンテキスト構造は、前記リクエストと共に送られ
る。前記トランザクションコンテキスト構造は、前記サ
ーバが最終的に前記クライアントに回答する時、前記ク
ライアントが第1のサーバコンピュータを介してそのリ
ソースをクライアントコーディネータオブジェクトと共
に“暗黙的に”登録したがっていることを示すフラグを
含む。前記サーバコンピュータは前記リクエストを受け
取り、リソースオブジェクトを直接前記クライアントに
登録する代りに、そのトランザクションを処理するため
にそれ自身のコーディネータ/リソース/回復コーディ
ネータオブジェクトを作成する。このコーディネータ/
リソース/回復コーディネータオブジェクトはまだクラ
イアントコンピュータに登録されておらず、従って、こ
の際、従来の挿入法に比べて周遊トリップを少なくでき
る。そして、前記サーバコンピュータは、そのオブジェ
クトについてのメソッドを呼び出す。このオブジェクト
呼出し内において、リソースオブジェクトを作成し、そ
の後、クライアントコーディネータオブジェクトと共に
直接登録する代りに、前記サーバのコーディネータ/リ
ソース/回復コーディネータオブジェクトと共にこれを
登録することによって、リソースが保護される。前記メ
ソッドは、続行し、前記クライアントに回答する。トラ
ンザクションコンテキスト構造は、前記サーバがそのコ
ーディネータ/リソース/回復コーディネータオブジェ
クトを前記クライアントのコーディネータと共に暗黙的
に登録したがっていることを示すよう変更される。
ステムは、クライアントコンピュータおよび1つまたは
複数のサーバコンピュータを使用するCORBA対応ト
ランザクションを管理する。両前記クライアントコンピ
ュータおよびサーバコンピュータのメモリには、COR
BA対応トランザクションマネージャを実施するための
コードを格納している。前記クライアントコンピュータ
は、トランザクションの開始を要求する。前記トランザ
クションマネージャは、ターミネータオブジェクトおよ
びコーディネータ/回復コーディネータオブジェクトを
作成する。前記クライアントは、前記サーバコンピュー
タに格納されたオブジェクトについてメソッドの呼出し
をリクエストする。該リクエストは、前記ORBによっ
て前記サーバコンピュータに送られる。トランザクショ
ンコンテキスト構造は、前記リクエストと共に送られ
る。前記トランザクションコンテキスト構造は、前記サ
ーバが最終的に前記クライアントに回答する時、前記ク
ライアントが第1のサーバコンピュータを介してそのリ
ソースをクライアントコーディネータオブジェクトと共
に“暗黙的に”登録したがっていることを示すフラグを
含む。前記サーバコンピュータは前記リクエストを受け
取り、リソースオブジェクトを直接前記クライアントに
登録する代りに、そのトランザクションを処理するため
にそれ自身のコーディネータ/リソース/回復コーディ
ネータオブジェクトを作成する。このコーディネータ/
リソース/回復コーディネータオブジェクトはまだクラ
イアントコンピュータに登録されておらず、従って、こ
の際、従来の挿入法に比べて周遊トリップを少なくでき
る。そして、前記サーバコンピュータは、そのオブジェ
クトについてのメソッドを呼び出す。このオブジェクト
呼出し内において、リソースオブジェクトを作成し、そ
の後、クライアントコーディネータオブジェクトと共に
直接登録する代りに、前記サーバのコーディネータ/リ
ソース/回復コーディネータオブジェクトと共にこれを
登録することによって、リソースが保護される。前記メ
ソッドは、続行し、前記クライアントに回答する。トラ
ンザクションコンテキスト構造は、前記サーバがそのコ
ーディネータ/リソース/回復コーディネータオブジェ
クトを前記クライアントのコーディネータと共に暗黙的
に登録したがっていることを示すよう変更される。
【0020】前記クライアントが1角無オブジェクトに
ついてターミネータのメソッド呼出しを実行する場合、
前記クライアントは新たなサーバに送られるトランザク
ションコンテキストを変更することになる。しかし、そ
れ自身のコーディネータオブジェクト参照を前記トラン
ザクションコンテキスト構造に含ませる代りに、前記第
1のサーバコンピュータの回答によって提供されるコー
ディネータ/リソース/回復コーディネータオブジェク
トの参照を前記クライアントに送る。その後のすべての
サーバは、前記クライアントのコーディネータオブジェ
クトの代りに、この第1のサーバのコーディネータ/リ
ソース/回復コーディネータオブジェクトを明示的に登
録するよう要求される。
ついてターミネータのメソッド呼出しを実行する場合、
前記クライアントは新たなサーバに送られるトランザク
ションコンテキストを変更することになる。しかし、そ
れ自身のコーディネータオブジェクト参照を前記トラン
ザクションコンテキスト構造に含ませる代りに、前記第
1のサーバコンピュータの回答によって提供されるコー
ディネータ/リソース/回復コーディネータオブジェク
トの参照を前記クライアントに送る。その後のすべての
サーバは、前記クライアントのコーディネータオブジェ
クトの代りに、この第1のサーバのコーディネータ/リ
ソース/回復コーディネータオブジェクトを明示的に登
録するよう要求される。
【0021】上述のように、この発明の方法は、第1の
サーバコンピュータがそのリソースを前記クライアント
コーディネータオブジェクトと共に暗黙的に登録するよ
う要求することによって、ネットワーク周遊トリップを
少なくする。前記サーバコンピュータは、そのコーディ
ネータ/リソース/回復コーディネータオブジェクトを
前記クライアントのコーディネータオブジェクトと共に
明示的に登録しない。こうして、前記クライアントは、
前記サーバがコーディネータオブジェクト参照および回
復コーディネータオブジェクト参照の組合わせを受け取
る。前記サーバは、前記トランザクションについての情
報を確認するために、このコーディネータ/リソース/
回復コーディネータオブジェクトを積極的に検査する。
サーバコンピュータがそのリソースを前記クライアント
コーディネータオブジェクトと共に暗黙的に登録するよ
う要求することによって、ネットワーク周遊トリップを
少なくする。前記サーバコンピュータは、そのコーディ
ネータ/リソース/回復コーディネータオブジェクトを
前記クライアントのコーディネータオブジェクトと共に
明示的に登録しない。こうして、前記クライアントは、
前記サーバがコーディネータオブジェクト参照および回
復コーディネータオブジェクト参照の組合わせを受け取
る。前記サーバは、前記トランザクションについての情
報を確認するために、このコーディネータ/リソース/
回復コーディネータオブジェクトを積極的に検査する。
【0022】さらに、この発明の方法は、前記クライア
ントコンピュータからのトランザクションを調整するた
めの管理上の責任を除去する。その代りに、前記サーバ
コンピュータは、コーディネータ/リソース/回復コー
ディネータオブジェクトの参照を前記クライアントに返
すことによって、上述のように直接的にクライアントコ
ンピュータに暗黙的に登録する。前記クライアントコン
ピュータは、該トランザクションに関与する後のサーバ
に前記コーディネータ/リソース/回復コーディネータ
オブジェクトの参照を与える。従って、これらの新たな
サーバは、前記トランザクションに参加するために、前
記第1のサーバコンピュータに明示的に登録可能であ
る。
ントコンピュータからのトランザクションを調整するた
めの管理上の責任を除去する。その代りに、前記サーバ
コンピュータは、コーディネータ/リソース/回復コー
ディネータオブジェクトの参照を前記クライアントに返
すことによって、上述のように直接的にクライアントコ
ンピュータに暗黙的に登録する。前記クライアントコン
ピュータは、該トランザクションに関与する後のサーバ
に前記コーディネータ/リソース/回復コーディネータ
オブジェクトの参照を与える。従って、これらの新たな
サーバは、前記トランザクションに参加するために、前
記第1のサーバコンピュータに明示的に登録可能であ
る。
【0023】
【発明の実施の形態】以下、添付図面を参照してこの発
明の一実施の形態を詳細に説明する。図1は、この発明
の方法を利用した代表的なコンピュータシステム5を示
すブロック図である。クライアントワークステーション
10は、CPU12と、表示装置18および入力装置1
6に接続された入出力線19とを備えている。前記表示
装置18は、例えば、表示端末装置であり、前記入力装
置16は、例えば、キーボードまたはマウスである。当
業者に理解されるように、前記コンピュータシステム5
は、ディスクドライブ、付加的なキーボード、付加的な
出力線、付加的な表示装置、付加的なネットワーク接続
部、付加的なメモリ、付加的なCPUのような、明確さ
のため図1には示されていないその他多数の要素を含ん
でいてもよい。
明の一実施の形態を詳細に説明する。図1は、この発明
の方法を利用した代表的なコンピュータシステム5を示
すブロック図である。クライアントワークステーション
10は、CPU12と、表示装置18および入力装置1
6に接続された入出力線19とを備えている。前記表示
装置18は、例えば、表示端末装置であり、前記入力装
置16は、例えば、キーボードまたはマウスである。当
業者に理解されるように、前記コンピュータシステム5
は、ディスクドライブ、付加的なキーボード、付加的な
出力線、付加的な表示装置、付加的なネットワーク接続
部、付加的なメモリ、付加的なCPUのような、明確さ
のため図1には示されていないその他多数の要素を含ん
でいてもよい。
【0024】前記クライアントワークステーション10
は、ネットワークバス51を介して、広域ネットワー
ク、ローカルエリアネットワークまたはインターネット
のようなネットワークによって、他のコンピュータと通
信する。前記ネットワークバス51は、電話通信線、ケ
ーブル線および様々なコンピュータ間における通信を可
能にする他の線を利用してよい。
は、ネットワークバス51を介して、広域ネットワー
ク、ローカルエリアネットワークまたはインターネット
のようなネットワークによって、他のコンピュータと通
信する。前記ネットワークバス51は、電話通信線、ケ
ーブル線および様々なコンピュータ間における通信を可
能にする他の線を利用してよい。
【0025】前記クライアントワークステーション10
は、前記ネットワークバス51を使用してサーバコンピ
ュータ20,30,40と通信する。各前記サーバコン
ピュータ20,30,40は、CPU22,32,42
とRAM25,35,45とを備えている。各前記サー
バは、上記ネットワークバス51と同じか、または、こ
れに類似したネットワークバス53を介して、他のサー
バと通信する。このネットワークバス53は、上記ネッ
トワークバス51と接続されていてよい。
は、前記ネットワークバス51を使用してサーバコンピ
ュータ20,30,40と通信する。各前記サーバコン
ピュータ20,30,40は、CPU22,32,42
とRAM25,35,45とを備えている。各前記サー
バは、上記ネットワークバス51と同じか、または、こ
れに類似したネットワークバス53を介して、他のサー
バと通信する。このネットワークバス53は、上記ネッ
トワークバス51と接続されていてよい。
【0026】なお、前記3つのサーバ20,30,40
の使用は単なる一例にすぎない。この発明において、前
記“クライアント”はサービスをリクエストするアプリ
ケーションであり、前記“サーバ”はリクエストされた
サービスを実行するアプリケーションである。実際上、
前記クライアントアプリケーションおよびサーバアプリ
ケーションは、同一のコンピュータに備えられている。
しかし、いずれにせよ、分散オブジェクト環境は、両コ
ンピュータのRAMにロードされる必要がある。該分散
オブジェクト環境は、オブジェクト・リクエスト・ブロ
ーカとオブジェクト・トランザクション・サービスとを
含んでいる。
の使用は単なる一例にすぎない。この発明において、前
記“クライアント”はサービスをリクエストするアプリ
ケーションであり、前記“サーバ”はリクエストされた
サービスを実行するアプリケーションである。実際上、
前記クライアントアプリケーションおよびサーバアプリ
ケーションは、同一のコンピュータに備えられている。
しかし、いずれにせよ、分散オブジェクト環境は、両コ
ンピュータのRAMにロードされる必要がある。該分散
オブジェクト環境は、オブジェクト・リクエスト・ブロ
ーカとオブジェクト・トランザクション・サービスとを
含んでいる。
【0027】前記クライアントワークステーション10
のメモリ15は、“トランザクションオリジネータ”1
4と呼ばれるコンピュータプログラムを格納している。
該トランザクションオリジネータ14は、トランザクシ
ョンを開始するプログラムである。該トランザクション
オリジネータ14は、トランザクションクライアントと
呼ばれることもある。サーバコンピュータ20は、RA
M25にロードされたトランザクションサーバ24を含
んでいる。該トランザクションサーバ24は、前記トラ
ンザクションオリジネータ14によって開始されたトラ
ンザクションによってその動作が影響されるがそれ自体
は回復可能な状態(ステート)を有さない1つ以上のオ
ブジェクトの集合である。その代り、前記トランザクシ
ョンサーバ24は、他の回復可能なオブジェクトを使用
してトランザクション変更を実行する。前記トランザク
ションサーバ24は、トランザクションの完了には参加
しないが、例えば、2段階のコミットを完了することを
拒絶することによって、トランザクションをロールバッ
クさせることができる。前記サーバコンピュータ30,
40は、RAM35,45にロードされた回復可能なサ
ーバ34,44を含んでいる。該回復可能なサーバは、
そのうちの少なくとも1つが回復可能なオブジェクトの
集合である。該回復可能なサーバは、OTS(Object T
ransaction Service:オブジェクト・トランザクション
・サービス)コーディネータオブジェクトに1つまたは
2つ以上のリソース(resource:資源)を登録すること
によって、前記OTSのプロトコルに参加する。前記O
TSは、1つのトランザクションに関して登録されたリ
ソースに対するリクエストを発することによって、前記
2段階コミットのプロトコルをドライブする。ここで説
明する本発明の方法の実行中において、オブジェクト・
リクエスト・ブローカ(ORB)およびOTSによって
指示される前記クライアントとサーバとの間の様々な通
信は、前記ネットワークバス51を介して行われる。
のメモリ15は、“トランザクションオリジネータ”1
4と呼ばれるコンピュータプログラムを格納している。
該トランザクションオリジネータ14は、トランザクシ
ョンを開始するプログラムである。該トランザクション
オリジネータ14は、トランザクションクライアントと
呼ばれることもある。サーバコンピュータ20は、RA
M25にロードされたトランザクションサーバ24を含
んでいる。該トランザクションサーバ24は、前記トラ
ンザクションオリジネータ14によって開始されたトラ
ンザクションによってその動作が影響されるがそれ自体
は回復可能な状態(ステート)を有さない1つ以上のオ
ブジェクトの集合である。その代り、前記トランザクシ
ョンサーバ24は、他の回復可能なオブジェクトを使用
してトランザクション変更を実行する。前記トランザク
ションサーバ24は、トランザクションの完了には参加
しないが、例えば、2段階のコミットを完了することを
拒絶することによって、トランザクションをロールバッ
クさせることができる。前記サーバコンピュータ30,
40は、RAM35,45にロードされた回復可能なサ
ーバ34,44を含んでいる。該回復可能なサーバは、
そのうちの少なくとも1つが回復可能なオブジェクトの
集合である。該回復可能なサーバは、OTS(Object T
ransaction Service:オブジェクト・トランザクション
・サービス)コーディネータオブジェクトに1つまたは
2つ以上のリソース(resource:資源)を登録すること
によって、前記OTSのプロトコルに参加する。前記O
TSは、1つのトランザクションに関して登録されたリ
ソースに対するリクエストを発することによって、前記
2段階コミットのプロトコルをドライブする。ここで説
明する本発明の方法の実行中において、オブジェクト・
リクエスト・ブローカ(ORB)およびOTSによって
指示される前記クライアントとサーバとの間の様々な通
信は、前記ネットワークバス51を介して行われる。
【0028】図2は、この発明によって変更されたCORB
A OTS仕様を実行するシステムに係る様々なアプリケー
ションおよびオブジェクトを示すブロック図である。前
記トランザクションオリジネータ14は、オブジェクト
73について、トランザクション開始(begin)/終了
(end)境界によって区分された1組のメソッド呼出し
を発する。前記区分内の呼出しには、トランザクショナ
ルオブジェクトのためのものと、ノントランザクショナ
ルオブジェクトのためのものとがある。オブジェクト・
リクエスト・ブローカ(ORB)60は、当該システム
におけるすべてのコンピュータによってアクセス可能な
ミドルウエアであり、beginコール65を傍受し、これ
をトランザクショナルサービス75に送る。該トランザ
クショナルサービス75は、クライアントスレッドに関
連したトランザクションコンテキスト70を確立する。
こうして、クライアントは、トランザクショナルサーバ
XXXに含まれるトランザクショナルオブジェクトXXXにつ
いてメソッド呼出しを発する。前記ORBは、暗黙的に
前記トランザクションコンテキストにタッグを付け、前
記呼出しXXXにおいてこれを前記オブジェクトに伝え
る。トランザクショナルサーバは、その挙動がトランザ
クションによって影響されるが、それ自身の回復可能な
状態またはリソースを有さない1つまたは複数のトラン
ザクショナルオブジェクトの集合である。これらのオブ
ジェクトが回復可能なリソースを呼び出す度に、前記O
RB60は、暗黙的に前記トランザクションコンテキス
トを伝える。回復可能なサーバXXXは、そのデータがト
ランザクションをコミットまたはロールバックすること
によって影響される回復可能なオブジェクトの集合であ
る。
A OTS仕様を実行するシステムに係る様々なアプリケー
ションおよびオブジェクトを示すブロック図である。前
記トランザクションオリジネータ14は、オブジェクト
73について、トランザクション開始(begin)/終了
(end)境界によって区分された1組のメソッド呼出し
を発する。前記区分内の呼出しには、トランザクショナ
ルオブジェクトのためのものと、ノントランザクショナ
ルオブジェクトのためのものとがある。オブジェクト・
リクエスト・ブローカ(ORB)60は、当該システム
におけるすべてのコンピュータによってアクセス可能な
ミドルウエアであり、beginコール65を傍受し、これ
をトランザクショナルサービス75に送る。該トランザ
クショナルサービス75は、クライアントスレッドに関
連したトランザクションコンテキスト70を確立する。
こうして、クライアントは、トランザクショナルサーバ
XXXに含まれるトランザクショナルオブジェクトXXXにつ
いてメソッド呼出しを発する。前記ORBは、暗黙的に
前記トランザクションコンテキストにタッグを付け、前
記呼出しXXXにおいてこれを前記オブジェクトに伝え
る。トランザクショナルサーバは、その挙動がトランザ
クションによって影響されるが、それ自身の回復可能な
状態またはリソースを有さない1つまたは複数のトラン
ザクショナルオブジェクトの集合である。これらのオブ
ジェクトが回復可能なリソースを呼び出す度に、前記O
RB60は、暗黙的に前記トランザクションコンテキス
トを伝える。回復可能なサーバXXXは、そのデータがト
ランザクションをコミットまたはロールバックすること
によって影響される回復可能なオブジェクトの集合であ
る。
【0029】図3Aおよび図3Bは、CORBAシステ
ムにおける挿入を使用したトランザクションに係るステ
ップを示すフローチャートである。ステップ301にお
いて、クライアントはトランザクションを開始する。こ
れは、ステップ302において現在の擬似オブジェクト
についてbegin(開始)オペレーションの呼出しを使用
することによって、暗黙的に行われることができる。代
案として、これは、FactoryオブジェクトについてOT
Sのcreate(作成)オブジェクトを呼び出すことによっ
て、明示的に行われてもよい(ステップ303)。CO
RBA OTS仕様に定義された現在のインターフェイ
スは、クライアントが前記OTSを使用するのを容易に
するCORBA擬似オブジェクトを定義する。トランザ
クションマネージャ(TM)コード(beginメソッドの
実施)は、ステップ305において、新たなトランザク
ションを開始する。さらに、ステップ306において、
前記OTSは、前記トランザクションを記述するため
に、ターミネータ(Terminator)オブジェクト、コーデ
ィネータ(Coordinator)オブジェクトおよび回復コー
ディネータ(Recovery Coordinator)オブジェクトを作
成する。前記回復コーディネータオブジェクトは、一定
の情況下において回復処理を駆動するために、回復可能
なオブジェクトによって使用されるオブジェクトであ
る。各回復コーディネータオブジェクトは、暗黙的に単
一のリソースオブジェクトに対応づけられることにな
る。ステップ308において、前記トランザクションマ
ネージャ(TM)は、現在のクライアントスレッドを新
たに作成されたトランザクションに対応づける。そし
て、ステップ309において、トランザクショナルオブ
ジェクト(例えば、“オブジェクト”タイプ)について
メソッドが呼び出されることをリクエストする。
ムにおける挿入を使用したトランザクションに係るステ
ップを示すフローチャートである。ステップ301にお
いて、クライアントはトランザクションを開始する。こ
れは、ステップ302において現在の擬似オブジェクト
についてbegin(開始)オペレーションの呼出しを使用
することによって、暗黙的に行われることができる。代
案として、これは、FactoryオブジェクトについてOT
Sのcreate(作成)オブジェクトを呼び出すことによっ
て、明示的に行われてもよい(ステップ303)。CO
RBA OTS仕様に定義された現在のインターフェイ
スは、クライアントが前記OTSを使用するのを容易に
するCORBA擬似オブジェクトを定義する。トランザ
クションマネージャ(TM)コード(beginメソッドの
実施)は、ステップ305において、新たなトランザク
ションを開始する。さらに、ステップ306において、
前記OTSは、前記トランザクションを記述するため
に、ターミネータ(Terminator)オブジェクト、コーデ
ィネータ(Coordinator)オブジェクトおよび回復コー
ディネータ(Recovery Coordinator)オブジェクトを作
成する。前記回復コーディネータオブジェクトは、一定
の情況下において回復処理を駆動するために、回復可能
なオブジェクトによって使用されるオブジェクトであ
る。各回復コーディネータオブジェクトは、暗黙的に単
一のリソースオブジェクトに対応づけられることにな
る。ステップ308において、前記トランザクションマ
ネージャ(TM)は、現在のクライアントスレッドを新
たに作成されたトランザクションに対応づける。そし
て、ステップ309において、トランザクショナルオブ
ジェクト(例えば、“オブジェクト”タイプ)について
メソッドが呼び出されることをリクエストする。
【0030】前記クライアントのスレッド内において、
前記ORBは、前記オブジェクトがトランザクショナル
なオブジェクトであるか否か(すなわち、オブジェクト
はトランザクショナルオブジェクトから継承するもので
あるか否か)を判定する。前記オブジェクトがトランザ
クショナルなものである場合、前記ORBは、ステップ
311において、OTSファンクションsending_reques
tを呼び出す。このメソッドは、前記ORBが異なる処
理にメソッドリクエストを送る準備をしている時に、該
ORBによって自動的に呼び出される。このメソッド
は、サーバ処理に送られることになるトランザクション
コンテキストを構築し、現在のトランザクションについ
てリクエストが未処理であることを記録し、前記スレッ
ドと前記トランザクションとの対応関係を記憶するため
に使用される。 前記sending_requestメソッドは前記O
TSに送られ、該OTSは、どのトランザクションが前
記スレッドの現在のトランザクションであるのかを。ス
テップ312において、前記OTSは、そのトランザク
ションに関する前記ターミネータオブジェクトおよびコ
ーディネータオブジェクトのためのオブジェクト参照を
含むトランザクションコンテキスト構造を返す。
前記ORBは、前記オブジェクトがトランザクショナル
なオブジェクトであるか否か(すなわち、オブジェクト
はトランザクショナルオブジェクトから継承するもので
あるか否か)を判定する。前記オブジェクトがトランザ
クショナルなものである場合、前記ORBは、ステップ
311において、OTSファンクションsending_reques
tを呼び出す。このメソッドは、前記ORBが異なる処
理にメソッドリクエストを送る準備をしている時に、該
ORBによって自動的に呼び出される。このメソッド
は、サーバ処理に送られることになるトランザクション
コンテキストを構築し、現在のトランザクションについ
てリクエストが未処理であることを記録し、前記スレッ
ドと前記トランザクションとの対応関係を記憶するため
に使用される。 前記sending_requestメソッドは前記O
TSに送られ、該OTSは、どのトランザクションが前
記スレッドの現在のトランザクションであるのかを。ス
テップ312において、前記OTSは、そのトランザク
ションに関する前記ターミネータオブジェクトおよびコ
ーディネータオブジェクトのためのオブジェクト参照を
含むトランザクションコンテキスト構造を返す。
【0031】ステップ313において、前記ORBは、
前記methodリクエストを前記サーバ処理に送る。ステッ
プ315では、前記サーバ処理において、前記ORB
は、received_requestを呼び出し、前記トランザクショ
ンコンテキスト構造内において送る。このメソッドは、
前記ORBがその他の処理からのトランザクションコン
テキストと共にリクエストを受け取った時に、前記OR
Bによって自動的に呼び出される。前記received_reque
stメソッドは、新たなトランザクショナルオブジェクト
を作成し、該オブジェクトを前記サーバスレッドの現在
のトランザクションとするために使用される。ステップ
316において、前記OTSは、新たなトランザクショ
ンを作成し、該トランザクションを記述するために、そ
れ自身のターミネータオブジェクト、従属コーディネー
タオブジェクトおよびリソースオブジェクトを作成す
る。このステップは、前記サーバ上において後に作成さ
れるローカルリソースが、前記クライアントのコーディ
ネータオブジェクトに登録されるために該クライアント
に返されることなく、前記新たな従属コーディネータに
登録されることを可能にする、ために実行される。ステ
ップ318において、前記OTSは、さらに、前記トラ
ンザクションコンテキスト構造に含まれる前記クライア
ントのコーディネータオブジェクトについて、コーディ
ネータインターフェイスのregister(登録)メソッドを
呼び出す。前記サーバのリソースを前記クライアントの
コーディネータオブジェクトに登録するためのリクエス
トは、クライアントマシーンへのネットワーク周遊トリ
ップを構成する。前記registerメソッドは、ターゲット
オブジェクトに関連づけられた前記トランザクションの
関係者として、指定された前記リソースオブジェクトを
登録する。前記トランザクションが終了すると、前記リ
ソースオブジェクトは、前記トランザクションの一部と
して実行されるアップデート(更新)をコミットしまた
はロールバックするリクエトを受け取ることになる。前
記登録オペレーションは、回復中に前記リソースオブジ
ェクトによって使用されることが可能な回復コーディネ
ータオブジェクトを先に返している。回復コーディネー
タオブジェクトは、トランザクション中に何が発生した
かを判定するために、前記リソースオブジェクトによっ
て使用される。
前記methodリクエストを前記サーバ処理に送る。ステッ
プ315では、前記サーバ処理において、前記ORB
は、received_requestを呼び出し、前記トランザクショ
ンコンテキスト構造内において送る。このメソッドは、
前記ORBがその他の処理からのトランザクションコン
テキストと共にリクエストを受け取った時に、前記OR
Bによって自動的に呼び出される。前記received_reque
stメソッドは、新たなトランザクショナルオブジェクト
を作成し、該オブジェクトを前記サーバスレッドの現在
のトランザクションとするために使用される。ステップ
316において、前記OTSは、新たなトランザクショ
ンを作成し、該トランザクションを記述するために、そ
れ自身のターミネータオブジェクト、従属コーディネー
タオブジェクトおよびリソースオブジェクトを作成す
る。このステップは、前記サーバ上において後に作成さ
れるローカルリソースが、前記クライアントのコーディ
ネータオブジェクトに登録されるために該クライアント
に返されることなく、前記新たな従属コーディネータに
登録されることを可能にする、ために実行される。ステ
ップ318において、前記OTSは、さらに、前記トラ
ンザクションコンテキスト構造に含まれる前記クライア
ントのコーディネータオブジェクトについて、コーディ
ネータインターフェイスのregister(登録)メソッドを
呼び出す。前記サーバのリソースを前記クライアントの
コーディネータオブジェクトに登録するためのリクエス
トは、クライアントマシーンへのネットワーク周遊トリ
ップを構成する。前記registerメソッドは、ターゲット
オブジェクトに関連づけられた前記トランザクションの
関係者として、指定された前記リソースオブジェクトを
登録する。前記トランザクションが終了すると、前記リ
ソースオブジェクトは、前記トランザクションの一部と
して実行されるアップデート(更新)をコミットしまた
はロールバックするリクエトを受け取ることになる。前
記登録オペレーションは、回復中に前記リソースオブジ
ェクトによって使用されることが可能な回復コーディネ
ータオブジェクトを先に返している。回復コーディネー
タオブジェクトは、トランザクション中に何が発生した
かを判定するために、前記リソースオブジェクトによっ
て使用される。
【0032】前記registerメソッドが返されると、(前
記received_requestメソッド内の)前記OTSは、ステ
ップ321において、前記新たな作成されたターミネー
タオブジェクトおよびコーディネータオブジェクトを記
憶し、これらのオブジェクトおよび前記トランザクショ
ンを前記サーバスレッドに対応づける。
記received_requestメソッド内の)前記OTSは、ステ
ップ321において、前記新たな作成されたターミネー
タオブジェクトおよびコーディネータオブジェクトを記
憶し、これらのオブジェクトおよび前記トランザクショ
ンを前記サーバスレッドに対応づける。
【0033】オブジェクトに関してリクエストされた前
記メソッドを実行する前記サーバ処理内における前記O
RBは、ステップ319において、リクエストされたメ
ソッドを呼び出す。該メソッドは、現在のオブジェクト
のget_coordinatorメソッドを呼び出す。前記OTSは
現在のスレッドを前記新たな作成されたトランザクショ
ンに対応づけているので、このメソッド呼出しは、前記
新たな従属コーディネータオブジェクトのオブジェクト
参照を返すことになる。そして、ステップ320におい
て、前記メソッドは、前記リソースオブジェクトから継
承する新たなオブジェクトを作成する。ステップ322
において、前記リソースが2段階コミットに参加するこ
とを所望していることを示すために、この新たなリソー
スオブジェクトは、前記新たな従属コーディネータオブ
ジェクトに登録される。なお、前記従属コーディネータ
オブジェクトは前記サーバに格納されたローカルオブジ
ェクトであり、前記registerメソッドの呼出しは比較的
迅速に行われる。ステップ323において、前記メソッ
ドは、完了し、前記クライアントに回答する。
記メソッドを実行する前記サーバ処理内における前記O
RBは、ステップ319において、リクエストされたメ
ソッドを呼び出す。該メソッドは、現在のオブジェクト
のget_coordinatorメソッドを呼び出す。前記OTSは
現在のスレッドを前記新たな作成されたトランザクショ
ンに対応づけているので、このメソッド呼出しは、前記
新たな従属コーディネータオブジェクトのオブジェクト
参照を返すことになる。そして、ステップ320におい
て、前記メソッドは、前記リソースオブジェクトから継
承する新たなオブジェクトを作成する。ステップ322
において、前記リソースが2段階コミットに参加するこ
とを所望していることを示すために、この新たなリソー
スオブジェクトは、前記新たな従属コーディネータオブ
ジェクトに登録される。なお、前記従属コーディネータ
オブジェクトは前記サーバに格納されたローカルオブジ
ェクトであり、前記registerメソッドの呼出しは比較的
迅速に行われる。ステップ323において、前記メソッ
ドは、完了し、前記クライアントに回答する。
【0034】前記サーバ側では、ステップ325におい
て、前記ORBは、前記OTSのsending_replyメソッ
ドを呼び出す。このメソッドは、前記ORBがトランザ
クショナルリクエストに回答を送る用意ができた時に、
該ORBによって自動的に呼び出される。このメソッド
は、適切なトランザクションコンテキストオブジェクト
を返し、前記新たなサーバトランザクションを前記サー
バのスレッドから引き離すために使用される。前記OT
Sは、前記トランザクションと前記スレッドとの間の対
応関係をキャンセルし、効果的に前記サーバの現在のト
ランザクションをゼロに設定する。ステップ327にお
いて、前記ORBはその回答を前記クライアントに送
る。ステップ329では、前記クライアントのスレッド
内において、前記ORBはreceived_replyメソッドを呼
び出す。このメソッドは、前記ORBが異なる処理から
回答を受け取った時に、該ORBによって自動的に呼出
される。
て、前記ORBは、前記OTSのsending_replyメソッ
ドを呼び出す。このメソッドは、前記ORBがトランザ
クショナルリクエストに回答を送る用意ができた時に、
該ORBによって自動的に呼び出される。このメソッド
は、適切なトランザクションコンテキストオブジェクト
を返し、前記新たなサーバトランザクションを前記サー
バのスレッドから引き離すために使用される。前記OT
Sは、前記トランザクションと前記スレッドとの間の対
応関係をキャンセルし、効果的に前記サーバの現在のト
ランザクションをゼロに設定する。ステップ327にお
いて、前記ORBはその回答を前記クライアントに送
る。ステップ329では、前記クライアントのスレッド
内において、前記ORBはreceived_replyメソッドを呼
び出す。このメソッドは、前記ORBが異なる処理から
回答を受け取った時に、該ORBによって自動的に呼出
される。
【0035】こうして、前記クライアントは、2段階コ
ミットを実行可能になる。ステップ331において、該
2段階コミットは、前記クライアントの現在のオブジェ
クトについてcommitメソッドを呼び出すことによって開
始される。このメソッドは前記OTSに送られる。ステ
ップ308において前記クライアントスレッドを前記ト
ランザクションに対応づけた前記OTSは、このトラン
ザクションにおいてどのリソースオブジェクトが前記コ
ーディネータオブジェクトに登録されたのかを判定す
る。この例において、ただ1つのリソース(サーバのO
TSリソース)のみが、前記コーディネータオブジェク
トに登録されている(ステップ318)。従って、前記
OTSは、ステップ333においてそのリクエストを前
記サーバに送り、ステップ335において前記サーバの
リソースのprepareメソッドを呼び出す。前記ORB
は、このリクエストを呼び出すために使用される。
ミットを実行可能になる。ステップ331において、該
2段階コミットは、前記クライアントの現在のオブジェ
クトについてcommitメソッドを呼び出すことによって開
始される。このメソッドは前記OTSに送られる。ステ
ップ308において前記クライアントスレッドを前記ト
ランザクションに対応づけた前記OTSは、このトラン
ザクションにおいてどのリソースオブジェクトが前記コ
ーディネータオブジェクトに登録されたのかを判定す
る。この例において、ただ1つのリソース(サーバのO
TSリソース)のみが、前記コーディネータオブジェク
トに登録されている(ステップ318)。従って、前記
OTSは、ステップ333においてそのリクエストを前
記サーバに送り、ステップ335において前記サーバの
リソースのprepareメソッドを呼び出す。前記ORB
は、このリクエストを呼び出すために使用される。
【0036】この2段階コミットのサーバ側において、
該サーバのOTSは、該サーバの従属コーディネータオ
ブジェクトに登録されたリソースオブジェクトの数を判
定することによって、前記サーバのprepareメソッドを
実行する。前記サーバのOTSは、1つのリソースオブ
ジェクトが登録されたことを認識し、該リソースオブジ
ェクトのprepareメソッドを呼び出す。ステップ337
において、前記サーバのprepareメソッドがリターンす
る。そして、前記サーバのOTSは、ステップ338に
おいて作成された記録をそのログに書き込み、そのprep
areメソッドから前記クライアントに返る。
該サーバのOTSは、該サーバの従属コーディネータオ
ブジェクトに登録されたリソースオブジェクトの数を判
定することによって、前記サーバのprepareメソッドを
実行する。前記サーバのOTSは、1つのリソースオブ
ジェクトが登録されたことを認識し、該リソースオブジ
ェクトのprepareメソッドを呼び出す。ステップ337
において、前記サーバのprepareメソッドがリターンす
る。そして、前記サーバのOTSは、ステップ338に
おいて作成された記録をそのログに書き込み、そのprep
areメソッドから前記クライアントに返る。
【0037】前記サーバのOTSのリソースオブジェク
トからコミット準備完了を知らせる回答を受け取った前
記クライアントのOTSは、ステップ351において、
そのログにコミット記録を書き込み、前記サーバのOT
Sのリソースオブジェクトについてcommitメソッドを呼
び出す。そのオブジェクトのcommitメソッドにおいて、
コミット記録がそのログに書き込まれ、前記サーバのO
TSは、該サーバのリソースオブジェクトのcommitメソ
ッドを呼出す。前記サーバのメソッドのリソースオブジ
ェクトおよび前記サーバのOTSのリソースオブジェク
トの両方(すなわち、コーディネータ/リソースオブジ
ェクト)が、それぞれのcommitメソッドから返る。最後
に、ステップ341において、前記クライアントのcomm
itメソッドがリターンする。
トからコミット準備完了を知らせる回答を受け取った前
記クライアントのOTSは、ステップ351において、
そのログにコミット記録を書き込み、前記サーバのOT
Sのリソースオブジェクトについてcommitメソッドを呼
び出す。そのオブジェクトのcommitメソッドにおいて、
コミット記録がそのログに書き込まれ、前記サーバのO
TSは、該サーバのリソースオブジェクトのcommitメソ
ッドを呼出す。前記サーバのメソッドのリソースオブジ
ェクトおよび前記サーバのOTSのリソースオブジェク
トの両方(すなわち、コーディネータ/リソースオブジ
ェクト)が、それぞれのcommitメソッドから返る。最後
に、ステップ341において、前記クライアントのcomm
itメソッドがリターンする。
【0038】現在のCORBA OTSを使用すること
により、2つ問題が生じる。第1に、挿入の使用にも関
わらず、上述のように、クライアント処理とサーバ処理
との間に多数の周遊トリップが発生する。しかし、1つ
のネットワーク周遊トリップが除去され得る場合、当該
システムの性能が高められることになる。第2に、ユー
ザのワークステーションがある1つのトランザクション
のための最終的なコミットコーディネータとして機能す
る場合、様々なサーバ処理が前記クライアントにおける
処理の結果を待っている期間が多くなる。例えば、ユー
ザは、トランザクションの中途で前記ワークステーショ
ンをオフ状態にすることがある。該ワークステーション
はフォールトトレラント(耐故障)性が高く、且つ、ユ
ーザのワークステーションは、最終的に、ある1つのト
ランザクションの調整を保障する責任があるので、この
ようなシステムは、本来、安定性および信頼性に欠け
る。ここで、図4Aおよび図4Bを参照して、この発明
に係るシステムおよび方法について説明する。この発明
のメソッドは、ワークステーション・オブジェクト・ト
ランザクション・サービス(WOTS)の機能ほ記述す
るものである。該WOTSの実施は、全体的に、新たな
トランザクション管理コード内に含まれている。該WO
TSは、前記CORBA OTSと同様に機能する。あ
る一定のCORBA OTSのクラスは、前記WOTS
によって下位分類される。さらに、これらのクラス内の
一定のメソッドは、オーバライドされる。該新たなWO
TSのクラスおよびそれらのオーバライドされたメソッ
ドは、この発明のメソッドのコンテキスト内に記述され
る。この方法は、図1および図2に記載されたようなこ
の発明のシステム上で動作することができる。説明を簡
単且つ明確にするために、以下の説明においては、方法
ステップのみについて説明する。しかし、図1および図
2に記載されたような通信、格納及び処理の実施の物理
的な位置は、当業者に自明であろう。
により、2つ問題が生じる。第1に、挿入の使用にも関
わらず、上述のように、クライアント処理とサーバ処理
との間に多数の周遊トリップが発生する。しかし、1つ
のネットワーク周遊トリップが除去され得る場合、当該
システムの性能が高められることになる。第2に、ユー
ザのワークステーションがある1つのトランザクション
のための最終的なコミットコーディネータとして機能す
る場合、様々なサーバ処理が前記クライアントにおける
処理の結果を待っている期間が多くなる。例えば、ユー
ザは、トランザクションの中途で前記ワークステーショ
ンをオフ状態にすることがある。該ワークステーション
はフォールトトレラント(耐故障)性が高く、且つ、ユ
ーザのワークステーションは、最終的に、ある1つのト
ランザクションの調整を保障する責任があるので、この
ようなシステムは、本来、安定性および信頼性に欠け
る。ここで、図4Aおよび図4Bを参照して、この発明
に係るシステムおよび方法について説明する。この発明
のメソッドは、ワークステーション・オブジェクト・ト
ランザクション・サービス(WOTS)の機能ほ記述す
るものである。該WOTSの実施は、全体的に、新たな
トランザクション管理コード内に含まれている。該WO
TSは、前記CORBA OTSと同様に機能する。あ
る一定のCORBA OTSのクラスは、前記WOTS
によって下位分類される。さらに、これらのクラス内の
一定のメソッドは、オーバライドされる。該新たなWO
TSのクラスおよびそれらのオーバライドされたメソッ
ドは、この発明のメソッドのコンテキスト内に記述され
る。この方法は、図1および図2に記載されたようなこ
の発明のシステム上で動作することができる。説明を簡
単且つ明確にするために、以下の説明においては、方法
ステップのみについて説明する。しかし、図1および図
2に記載されたような通信、格納及び処理の実施の物理
的な位置は、当業者に自明であろう。
【0039】上述のものと同様に、この方法は、WOT
Sを使用するクライアント処理がトランザクションを開
始しようとしている、と仮定する。前記WOTSを使用
するすべての処理はOTSWSProssクラスのオブジェクトを
含み、該OTSWSProssクラスは、CORBAの標準的なOT
SClientProcessクラスから継承する。このオブジェクト
は、いずれかのOTSサービスを使用する試みがなされ
る前に呼び出されなければならないCORBA OTS
ファンクションであるOTSInit0に対する呼出しによって
作成される。前記OTSWSPross処理は決して破壊されな
い。該オブジェクトは、現在の擬似オブジェクト、ファ
クトリオブジェクトおよびORB−OTSインターフェ
イスオブジェクトとして作用する。このオブジェクトの
単一のインターフェイスは、大域OTS変数であるTran
sactions_Current、Transactions_FactoryおよびgpOTSC
lientProcessによって指示される。GetFactoryメソッド
は、OTSWSFactory(以下に述べる)のインスタンスを作
成し、この新たなインスタンスを指示するようgpOTSFac
tory変数を設定するために、オーバライドされる。NewT
ransactionメソッドは、新たなOTSWSTransactionalObje
ctを返すために、前記OTSWSProssにおいてオーバライド
される。同様に、NewInheritedTransactionメソッド
は、新たなOTSWSInheritedTransactionalオブジェクト
を作成して返すためにオーバライドされる。ステップ4
01において、クライアントは、ステップ404におい
てタイプOTSFactoryのオブジェクトについてのcreateメ
ソッドを介してトランザクションを明示的に作成するこ
とにより、または、ステップ402において現在のオブ
ジェクトについてbeginメソッドを呼び出すことによっ
て暗黙的に、新たなトランザクションを開始する。前記
クライアントのワークステーション・トランザクション
管理コード(クライアントのWTM)は、新たなトラン
ザクションを開始する。前記呼出しが明示的になされる
場合、前記OTWSFactoryオブジェクトが作成される。こ
のオブジェクトは、CORBA OTSAbstractFactoryオブジェ
クトから継承するものである。このオブジェクトは、cr
eate,importおよびgetrminfoの3つのオーバライドされ
たメソッドを使用する。前記createオペレーションは、
新たなOTSWSTransactionオブジェクトを返すことによっ
て新たなWOTSトランザクションを作成する。前記im
portオペレーションは、新たなWOTSトランザクショ
ンをインポートする。前記getrminfoメソッドは、その
識別名が与えられた場合、特定のX/Openリソースマネー
ジャについての情報を返す。同様に、前記beginメソッ
ドを呼び出すことによって、OTSWSTransactionオブジェ
クトが作成される。
Sを使用するクライアント処理がトランザクションを開
始しようとしている、と仮定する。前記WOTSを使用
するすべての処理はOTSWSProssクラスのオブジェクトを
含み、該OTSWSProssクラスは、CORBAの標準的なOT
SClientProcessクラスから継承する。このオブジェクト
は、いずれかのOTSサービスを使用する試みがなされ
る前に呼び出されなければならないCORBA OTS
ファンクションであるOTSInit0に対する呼出しによって
作成される。前記OTSWSPross処理は決して破壊されな
い。該オブジェクトは、現在の擬似オブジェクト、ファ
クトリオブジェクトおよびORB−OTSインターフェ
イスオブジェクトとして作用する。このオブジェクトの
単一のインターフェイスは、大域OTS変数であるTran
sactions_Current、Transactions_FactoryおよびgpOTSC
lientProcessによって指示される。GetFactoryメソッド
は、OTSWSFactory(以下に述べる)のインスタンスを作
成し、この新たなインスタンスを指示するようgpOTSFac
tory変数を設定するために、オーバライドされる。NewT
ransactionメソッドは、新たなOTSWSTransactionalObje
ctを返すために、前記OTSWSProssにおいてオーバライド
される。同様に、NewInheritedTransactionメソッド
は、新たなOTSWSInheritedTransactionalオブジェクト
を作成して返すためにオーバライドされる。ステップ4
01において、クライアントは、ステップ404におい
てタイプOTSFactoryのオブジェクトについてのcreateメ
ソッドを介してトランザクションを明示的に作成するこ
とにより、または、ステップ402において現在のオブ
ジェクトについてbeginメソッドを呼び出すことによっ
て暗黙的に、新たなトランザクションを開始する。前記
クライアントのワークステーション・トランザクション
管理コード(クライアントのWTM)は、新たなトラン
ザクションを開始する。前記呼出しが明示的になされる
場合、前記OTWSFactoryオブジェクトが作成される。こ
のオブジェクトは、CORBA OTSAbstractFactoryオブジェ
クトから継承するものである。このオブジェクトは、cr
eate,importおよびgetrminfoの3つのオーバライドされ
たメソッドを使用する。前記createオペレーションは、
新たなOTSWSTransactionオブジェクトを返すことによっ
て新たなWOTSトランザクションを作成する。前記im
portオペレーションは、新たなWOTSトランザクショ
ンをインポートする。前記getrminfoメソッドは、その
識別名が与えられた場合、特定のX/Openリソースマネー
ジャについての情報を返す。同様に、前記beginメソッ
ドを呼び出すことによって、OTSWSTransactionオブジェ
クトが作成される。
【0040】OTSWSTransactionインターフェイスは、C
ORBA OTSのOTSClientTransactionから継承する
ものである。OTSClientTransactionのように、前記OTSW
STransactionオブジェクトの唯一のインスタンスが、各
トランザクション毎に明示的にまたは暗黙的に作成され
る。このサブクラスは、1つの既知のメソッドであるne
wrequestをオーバライドするとともに、標準的なCOR
BA OTSの実施によって実行されるべき1つの新た
なメソッドをオーバライドする。CORBA OTSWSTransacti
onのnewrequestメソッドは、そのトランザクションが新
たなリクエストに関わるものであるという事実を記録す
るとともに、適切なトランザクションコンテキスト構造
を返すためにオーバライドされる。該オーバライドされ
たメソッドは、(以下に述べる)暗黙的な登録(Implic
it Registration)が行われるということを示すため
に、前記トランザクションコンテキスト構造の実施毎の
データ要素を変更する。また、RegisterImplicitという
新たなメソッドが、基底クラスにおいて実施され、オー
バライドされる。このメソッドは、遠隔メソッド呼出し
からの回答により受け取られる暗黙的な登録に従事する
ためのリクエストを満足させる。
ORBA OTSのOTSClientTransactionから継承する
ものである。OTSClientTransactionのように、前記OTSW
STransactionオブジェクトの唯一のインスタンスが、各
トランザクション毎に明示的にまたは暗黙的に作成され
る。このサブクラスは、1つの既知のメソッドであるne
wrequestをオーバライドするとともに、標準的なCOR
BA OTSの実施によって実行されるべき1つの新た
なメソッドをオーバライドする。CORBA OTSWSTransacti
onのnewrequestメソッドは、そのトランザクションが新
たなリクエストに関わるものであるという事実を記録す
るとともに、適切なトランザクションコンテキスト構造
を返すためにオーバライドされる。該オーバライドされ
たメソッドは、(以下に述べる)暗黙的な登録(Implic
it Registration)が行われるということを示すため
に、前記トランザクションコンテキスト構造の実施毎の
データ要素を変更する。また、RegisterImplicitという
新たなメソッドが、基底クラスにおいて実施され、オー
バライドされる。このメソッドは、遠隔メソッド呼出し
からの回答により受け取られる暗黙的な登録に従事する
ためのリクエストを満足させる。
【0041】ステップ405において、WOTSが新た
なトランザクションを開始する。新たなトランザクショ
ンの作成は、ステップ406において、ターミネータオ
ブジェクト、コーディネータオブジェクトおよび回復コ
ーディネータオブジェクトを暗黙的に作成する。これら
のオブジェクトについては上述されている(これらのオ
ブジェクトは別々のオブジェクトであってよく、また
は、代案として、前記WOTSは、ターミネータインタ
ーフェイス、コーディネータインターフェイスおよび回
復コーディネータインターフェイスから小計する単一の
オブジェクトであってもよい)。ステップ410におい
て、前記WTMは、そのトランザクションを前記クライ
アントのスレッドに対応づけ、前記CORBA対応クラ
イアントTMに関して上述したように、この対応を記憶
する。
なトランザクションを開始する。新たなトランザクショ
ンの作成は、ステップ406において、ターミネータオ
ブジェクト、コーディネータオブジェクトおよび回復コ
ーディネータオブジェクトを暗黙的に作成する。これら
のオブジェクトについては上述されている(これらのオ
ブジェクトは別々のオブジェクトであってよく、また
は、代案として、前記WOTSは、ターミネータインタ
ーフェイス、コーディネータインターフェイスおよび回
復コーディネータインターフェイスから小計する単一の
オブジェクトであってもよい)。ステップ410におい
て、前記WTMは、そのトランザクションを前記クライ
アントのスレッドに対応づけ、前記CORBA対応クラ
イアントTMに関して上述したように、この対応を記憶
する。
【0042】ステップ411において、前記クライアン
トは、Objectクラスのオブジェクトについてmethodメソ
ッドが実行されることをリクエストする。Objectは、そ
のトランザクション内において変化しがちなデータを含
む回復可能なオブジェクトである。Objectは、前記トラ
ンザクションの論理を実行し、OTSのTransactionObj
ectクラスからその挙動を継承するものである。Object
がトランザクショナルオブジェクトであるので(回復可
能なオブジェクトは、定義上、トランザクショナルオブ
ジェクトである)、前記クライアントのスレッドにおけ
るORBは、ステップ413において、WOTSメソッ
ドであるsending_requestを呼び出す。このメソッド
は、上記CORBAメソッドと同じである。しかし、前
記WTMは、異なる情報を含むトランザクションコンテ
キスト構造を返す(ステップ414)。ステップ414
において前記WTMによって返されたトランザクション
コンテキスト構造は、コーディネータオブジェクト参
照、ターミネータオブジェクト参照、および、実施毎の
データを含むことができる“任意”のタイプの要素にお
ける付加的な情報を含む。本発明の方法において、クラ
イアントが暗黙的な登録に参加することを願望している
ことを示すために、この要素は、ステップ416におい
てフラグ表示される。この暗黙的な登録については後述
する。
トは、Objectクラスのオブジェクトについてmethodメソ
ッドが実行されることをリクエストする。Objectは、そ
のトランザクション内において変化しがちなデータを含
む回復可能なオブジェクトである。Objectは、前記トラ
ンザクションの論理を実行し、OTSのTransactionObj
ectクラスからその挙動を継承するものである。Object
がトランザクショナルオブジェクトであるので(回復可
能なオブジェクトは、定義上、トランザクショナルオブ
ジェクトである)、前記クライアントのスレッドにおけ
るORBは、ステップ413において、WOTSメソッ
ドであるsending_requestを呼び出す。このメソッド
は、上記CORBAメソッドと同じである。しかし、前
記WTMは、異なる情報を含むトランザクションコンテ
キスト構造を返す(ステップ414)。ステップ414
において前記WTMによって返されたトランザクション
コンテキスト構造は、コーディネータオブジェクト参
照、ターミネータオブジェクト参照、および、実施毎の
データを含むことができる“任意”のタイプの要素にお
ける付加的な情報を含む。本発明の方法において、クラ
イアントが暗黙的な登録に参加することを願望している
ことを示すために、この要素は、ステップ416におい
てフラグ表示される。この暗黙的な登録については後述
する。
【0043】ステップ417において、前記ORBは、
Objectについてmethodを実行するためのリクエストを前
記サーバ処理に送る。前記サーバ処理内において、前記
ORBは、ステップ419でreceived_requestを呼び出
し、前記クライアントから受け取ったトランザクション
コンテキストに入れる。このメソッドの内部では、前記
サーバのWTMは、上述の如くそれ自身のトランザクシ
ョンを作成する。従って、前記サーバのWTMは、ステ
ップ420において、ターミネータオブジェクト、従属
コーディネータオブジェクト、回復コーディネータオブ
ジェクトおよびリソースオブジェクトを作成する。(前
記サーバWTMは、これらのクラスの各々から継承する
単一のオブジェクトを作成してもよい。)前記サーバの
WTMは、前記トランザクションコンテキストを検査
し、前記クライアントが暗黙的な登録に参加することを
願っている旨示したことを知る。ステップ422におい
て、前記サーバのWTMは、それが作成した前記ターミ
ネータオブジェクト、従属コーディネータオブジェク
ト、回復コーディネータオブジェクトおよびリソースオ
ブジェクトの各々またはこれらの組合わせを記憶し、こ
れらのオブジェクトを前記サーバの現在のスレッドに対
応づける。
Objectについてmethodを実行するためのリクエストを前
記サーバ処理に送る。前記サーバ処理内において、前記
ORBは、ステップ419でreceived_requestを呼び出
し、前記クライアントから受け取ったトランザクション
コンテキストに入れる。このメソッドの内部では、前記
サーバのWTMは、上述の如くそれ自身のトランザクシ
ョンを作成する。従って、前記サーバのWTMは、ステ
ップ420において、ターミネータオブジェクト、従属
コーディネータオブジェクト、回復コーディネータオブ
ジェクトおよびリソースオブジェクトを作成する。(前
記サーバWTMは、これらのクラスの各々から継承する
単一のオブジェクトを作成してもよい。)前記サーバの
WTMは、前記トランザクションコンテキストを検査
し、前記クライアントが暗黙的な登録に参加することを
願っている旨示したことを知る。ステップ422におい
て、前記サーバのWTMは、それが作成した前記ターミ
ネータオブジェクト、従属コーディネータオブジェク
ト、回復コーディネータオブジェクトおよびリソースオ
ブジェクトの各々またはこれらの組合わせを記憶し、こ
れらのオブジェクトを前記サーバの現在のスレッドに対
応づける。
【0044】暗黙的な登録(Implicit Registration)
は、1つ少ないネットワーク通信周遊トリップが行われ
るといことを保証する前記クライアントワークステーシ
ョントランザクションおよびサーバワークステーション
トランザクションによる約束である。前記クライアント
ワークステーショントランザクションは、トランザクシ
ョンコンテキスト構造の実施毎の要素内に暗黙的登録
(Implicit Registration)フラグを立てることによっ
てこの約束を行う。前記クライアントのWTMは、両前
記コーディネータおよび回復コーディネータのクラスか
ら継承するコーディネータオブジェクトに参照を送るこ
とによって、この約束を履行する。上述の如く、regist
erメソッドは、前記リソースオブジェクトに回復コーデ
ィネータオブジェクトを返す。前記クライアントが暗黙
的な登録に参加することを示す時、これは、回復コーデ
ィネータオブジェクトでもあるコーディネータオブジェ
クトを送ることを約束する。こうして、前記サーバは、
前記回復コーディネータオブジェクトからのトランザク
ションに関する情報を確認できる、ということが確信で
きる。前記サーバのWTMが暗黙的な登録に参加するこ
とを選択した場合、該サーバは、回答前に、前記トラン
ザクションコンテキストにそのオブジェクト参照(コー
ディネータオブジェクト、ターミネータオブジェクト、
回復コーディネータオブジェクトおよびリソースオブジ
ェクトの組合わせに関する参照)を入れなければならな
い。暗黙的な登録の全体的な処理は、図3のステップ3
18において前記サーバのWTMによって作成されたリ
ソースオブジェクトを登録するために必要なネットワー
ク周遊トリップを不要にする。
は、1つ少ないネットワーク通信周遊トリップが行われ
るといことを保証する前記クライアントワークステーシ
ョントランザクションおよびサーバワークステーション
トランザクションによる約束である。前記クライアント
ワークステーショントランザクションは、トランザクシ
ョンコンテキスト構造の実施毎の要素内に暗黙的登録
(Implicit Registration)フラグを立てることによっ
てこの約束を行う。前記クライアントのWTMは、両前
記コーディネータおよび回復コーディネータのクラスか
ら継承するコーディネータオブジェクトに参照を送るこ
とによって、この約束を履行する。上述の如く、regist
erメソッドは、前記リソースオブジェクトに回復コーデ
ィネータオブジェクトを返す。前記クライアントが暗黙
的な登録に参加することを示す時、これは、回復コーデ
ィネータオブジェクトでもあるコーディネータオブジェ
クトを送ることを約束する。こうして、前記サーバは、
前記回復コーディネータオブジェクトからのトランザク
ションに関する情報を確認できる、ということが確信で
きる。前記サーバのWTMが暗黙的な登録に参加するこ
とを選択した場合、該サーバは、回答前に、前記トラン
ザクションコンテキストにそのオブジェクト参照(コー
ディネータオブジェクト、ターミネータオブジェクト、
回復コーディネータオブジェクトおよびリソースオブジ
ェクトの組合わせに関する参照)を入れなければならな
い。暗黙的な登録の全体的な処理は、図3のステップ3
18において前記サーバのWTMによって作成されたリ
ソースオブジェクトを登録するために必要なネットワー
ク周遊トリップを不要にする。
【0045】前記サーバの処理内において、前記ORB
は、ステップ423においてObjectについてのmethodを
呼び出す。OTSプロトコルを実施するために、前記回
復可能なオブジェクトObjectの呼出しは、リソースオブ
ジェクトの作成がそのトランザクションにおけるObject
の関わり合いを追跡することを要求する。従って、meth
odは、(現在のスレッドを示す)現在のオブジェクトに
ついてget_coordinatorを呼び出すことによって実行さ
れる。この呼出しは、新たに作成された従属コーディネ
ータオブジェクトを返す。そして、Methodは、ステッ
プ424において新たなリソースオブジェクトを作成
し、該リソースオブジェクトを登録するためにステップ
426において前記従属コーディネータオブジェクトに
ついてregisterメソッドを呼び出す。Methodの呼出し
は、ステップ427において完了し、リターンする。
は、ステップ423においてObjectについてのmethodを
呼び出す。OTSプロトコルを実施するために、前記回
復可能なオブジェクトObjectの呼出しは、リソースオブ
ジェクトの作成がそのトランザクションにおけるObject
の関わり合いを追跡することを要求する。従って、meth
odは、(現在のスレッドを示す)現在のオブジェクトに
ついてget_coordinatorを呼び出すことによって実行さ
れる。この呼出しは、新たに作成された従属コーディネ
ータオブジェクトを返す。そして、Methodは、ステッ
プ424において新たなリソースオブジェクトを作成
し、該リソースオブジェクトを登録するためにステップ
426において前記従属コーディネータオブジェクトに
ついてregisterメソッドを呼び出す。Methodの呼出し
は、ステップ427において完了し、リターンする。
【0046】methodファンクションからリターンする
と、前記ORBは、ステップ429において、前記サー
バのWTMにおけるsending_replyメソッドを呼び出
す。該サーバのWTMは、新たなリソースオブジェクト
がこのトランザクションの一部として登録されたことを
認識する。従って、前記サーバのWTMは、前記サーバ
のトランザクションオブジェクト(ステップ406にお
いて作成されたコーディネータオブジェクト、ターミネ
ータオブジェクト、回復コーディネータオブジェクトお
よびリソースオブジェクトの組合わせ)を登録する必要
がある。この登録は、ステップ430において、該コー
ディネータオブジェクト、ターミネータオブジェクト、
回復コーディネータオブジェクトおよびリソースオブジ
ェクトに対するオブジェクト参照を前記トランザクショ
ンコンテキスト構造のコーディネータ要素に入れること
によって実行され、これは、自動的に、その回答と共に
前記クライアントに返される。ステップ432におい
て、前記サーバのWTMは、前記サーバが暗黙的な登録
に参加することを願望していることを示すために、前記
トランザクションコンテキスト構造の実施毎の要素をフ
ラグ表示する。
と、前記ORBは、ステップ429において、前記サー
バのWTMにおけるsending_replyメソッドを呼び出
す。該サーバのWTMは、新たなリソースオブジェクト
がこのトランザクションの一部として登録されたことを
認識する。従って、前記サーバのWTMは、前記サーバ
のトランザクションオブジェクト(ステップ406にお
いて作成されたコーディネータオブジェクト、ターミネ
ータオブジェクト、回復コーディネータオブジェクトお
よびリソースオブジェクトの組合わせ)を登録する必要
がある。この登録は、ステップ430において、該コー
ディネータオブジェクト、ターミネータオブジェクト、
回復コーディネータオブジェクトおよびリソースオブジ
ェクトに対するオブジェクト参照を前記トランザクショ
ンコンテキスト構造のコーディネータ要素に入れること
によって実行され、これは、自動的に、その回答と共に
前記クライアントに返される。ステップ432におい
て、前記サーバのWTMは、前記サーバが暗黙的な登録
に参加することを願望していることを示すために、前記
トランザクションコンテキスト構造の実施毎の要素をフ
ラグ表示する。
【0047】ステップ433において、前記ORBは、
前記クライアントに回答を返す。クライアント側におい
て、前記ORBは、ステップ435において、前記クラ
イアントのWTMのreceived_replyを呼び出す。該rece
ived_replyファンクション内において、前記クライアン
トのWTMは、前記トランザクションコンテキストを検
査し、前記サーバが暗黙的な登録の申込みを受入れたこ
とを知る。ステップ436において、前記クライアント
のWTMは、ステップ430において前記サーバによっ
て挿入されたオブジェクト参照を抽出し、このオブジェ
クト参照をセーブする。このトランザクションにおいて
後のリクエストがなされる場合、前記クライアントは、
前記トランザクションコンテキストの一部として暗黙的
な登録を申し込まない。その代りに、第1のサーバから
受け取ったオブジェクト参照が、前記トランザクション
コンテキスト構造のコーディネータ要素として送られ
る。こうして、後の各サーバTMは、そのトランザクシ
ョンに関わる第1のサーバのコーディネータに直接登録
しなければならない。これにより、前記ワークステーシ
ョンのクライアントWTMは、このトランザクションに
おける後のリクエストのために最終的なコミットコーデ
ィネータとして機能することから解放される。これによ
り、後のサーバは、リソースオブジェクトを登録するた
めに前記ワークステーションがクライアントのリクエス
トから回答するのを待たなくてよい、という利点があ
る。むしろ、これら後のサーバにおけるリソースオブジ
ェクトが、前記第1のサーバのコーディネータオブジェ
クト、ターミネータオブジェクト、回復コーディネータ
オブジェクトおよびリソースオブジェクトと共に登録さ
れる。前記第1のサーバのフォールトトレラント性は、
トランザクションの実施およびモニタをより安定したも
のとする。
前記クライアントに回答を返す。クライアント側におい
て、前記ORBは、ステップ435において、前記クラ
イアントのWTMのreceived_replyを呼び出す。該rece
ived_replyファンクション内において、前記クライアン
トのWTMは、前記トランザクションコンテキストを検
査し、前記サーバが暗黙的な登録の申込みを受入れたこ
とを知る。ステップ436において、前記クライアント
のWTMは、ステップ430において前記サーバによっ
て挿入されたオブジェクト参照を抽出し、このオブジェ
クト参照をセーブする。このトランザクションにおいて
後のリクエストがなされる場合、前記クライアントは、
前記トランザクションコンテキストの一部として暗黙的
な登録を申し込まない。その代りに、第1のサーバから
受け取ったオブジェクト参照が、前記トランザクション
コンテキスト構造のコーディネータ要素として送られ
る。こうして、後の各サーバTMは、そのトランザクシ
ョンに関わる第1のサーバのコーディネータに直接登録
しなければならない。これにより、前記ワークステーシ
ョンのクライアントWTMは、このトランザクションに
おける後のリクエストのために最終的なコミットコーデ
ィネータとして機能することから解放される。これによ
り、後のサーバは、リソースオブジェクトを登録するた
めに前記ワークステーションがクライアントのリクエス
トから回答するのを待たなくてよい、という利点があ
る。むしろ、これら後のサーバにおけるリソースオブジ
ェクトが、前記第1のサーバのコーディネータオブジェ
クト、ターミネータオブジェクト、回復コーディネータ
オブジェクトおよびリソースオブジェクトと共に登録さ
れる。前記第1のサーバのフォールトトレラント性は、
トランザクションの実施およびモニタをより安定したも
のとする。
【0048】ステップ437において、前記クライアン
トは、現在の擬似オブジェクトについてcommitメソッド
を呼び出す。該commitメソッドの内部において、前記W
TMは、サーバが暗黙的な登録の申込みを受け入れたこ
とを知る。そして、ステップ439において、前記WT
Mは、暗黙的に登録されたリソースオブジェクトのその
サーバのcommit_one_phaseメソッドを呼び出す。前記O
RBは、ステップ440において、このリクエストを前
記サーバに送る。前記サーバのWTMのcommit_one_pha
seメソッド内部において、該サーバのWTMは、リソー
スオブジェクトが、前記第1のサーバのコーディネータ
オブジェクト、ターミネータオブジェクト、回復コーデ
ィネータオブジェクトおよびリソースオブジェクトと共
に登録されたことを知る。従って、ステップ441にお
いて、前記サーバのリソースオブジェクトについてprep
areメソッドが呼び出される。そのオブジェクトは、ス
テップ442において、該prepareメソッドから適切に
リターンする。ステップ443において、前記サーバの
WTMは、コミット記録をそのログに書き込み、その
後、前記サーバのリソースオブジェクトのcommitメソッ
ドを呼び出す。ステップ445では、前記サーバのcomm
it_one_phaseメソッドが適切にリターンする。ステップ
447では、前記クライアントのcommitメソッド適切に
リターンする。これらのメソッドの各々は適切にリター
ンするものとして説明したが、前記トランザクションに
おいて登録された各オブジェクトは、該トランザクショ
ンをロールバックさせることができる。いずれかの参加
しているオブジェクトがトランザクションをロールバッ
クさせる場合、該トランザクションは失敗する。該トラ
ンザクションからの回復を試みるために、クライアント
およびサーバの両方は、各々の回復コーディネータオブ
ジェクトを使用することができる。さらに、前記サーバ
は、オリジナルのリクエストがクライアントに送られた
時に得られたコーディネータ/回復コーディネータオブ
ジェクト参照を利用できる。
トは、現在の擬似オブジェクトについてcommitメソッド
を呼び出す。該commitメソッドの内部において、前記W
TMは、サーバが暗黙的な登録の申込みを受け入れたこ
とを知る。そして、ステップ439において、前記WT
Mは、暗黙的に登録されたリソースオブジェクトのその
サーバのcommit_one_phaseメソッドを呼び出す。前記O
RBは、ステップ440において、このリクエストを前
記サーバに送る。前記サーバのWTMのcommit_one_pha
seメソッド内部において、該サーバのWTMは、リソー
スオブジェクトが、前記第1のサーバのコーディネータ
オブジェクト、ターミネータオブジェクト、回復コーデ
ィネータオブジェクトおよびリソースオブジェクトと共
に登録されたことを知る。従って、ステップ441にお
いて、前記サーバのリソースオブジェクトについてprep
areメソッドが呼び出される。そのオブジェクトは、ス
テップ442において、該prepareメソッドから適切に
リターンする。ステップ443において、前記サーバの
WTMは、コミット記録をそのログに書き込み、その
後、前記サーバのリソースオブジェクトのcommitメソッ
ドを呼び出す。ステップ445では、前記サーバのcomm
it_one_phaseメソッドが適切にリターンする。ステップ
447では、前記クライアントのcommitメソッド適切に
リターンする。これらのメソッドの各々は適切にリター
ンするものとして説明したが、前記トランザクションに
おいて登録された各オブジェクトは、該トランザクショ
ンをロールバックさせることができる。いずれかの参加
しているオブジェクトがトランザクションをロールバッ
クさせる場合、該トランザクションは失敗する。該トラ
ンザクションからの回復を試みるために、クライアント
およびサーバの両方は、各々の回復コーディネータオブ
ジェクトを使用することができる。さらに、前記サーバ
は、オリジナルのリクエストがクライアントに送られた
時に得られたコーディネータ/回復コーディネータオブ
ジェクト参照を利用できる。
【0049】これまでCORBA OTSトランザクシ
ョンを実行するための方法およびシステムについて説明
してきたが、この発明は様々な効果を奏する。また、ワ
ークステーションコンピュータ以外のものを使用するト
ランザクションでの使用を含む様々な変更例や他の実施
の形態も、この発明の範囲内において可能である。
ョンを実行するための方法およびシステムについて説明
してきたが、この発明は様々な効果を奏する。また、ワ
ークステーションコンピュータ以外のものを使用するト
ランザクションでの使用を含む様々な変更例や他の実施
の形態も、この発明の範囲内において可能である。
【0050】
【発明の効果】以上のように、この発明は、ワークステ
ーションコンピュータを使用するトランザクションを効
率的に管理することができる。
ーションコンピュータを使用するトランザクションを効
率的に管理することができる。
【図1】この発明の方法を利用した代表的なコンピュー
タシステムを示すブロック図。
タシステムを示すブロック図。
【図2】オブジェクト・トランザクション・サービス
(OTS)を実行する典型的なCORBAシステムに係る様
々なアプリケーションおよびオブジェクトを示すブロッ
ク図。
(OTS)を実行する典型的なCORBAシステムに係る様
々なアプリケーションおよびオブジェクトを示すブロッ
ク図。
【図3A】CORBAシステムにおける挿入を使用した
トランザクションに係るステップの一部を示すフローチ
ャート。
トランザクションに係るステップの一部を示すフローチ
ャート。
【図3B】前記CORBAシステムにおける挿入を使用
したトランザクションに係る残りのステップを示すフロ
ーチャート。
したトランザクションに係る残りのステップを示すフロ
ーチャート。
【図4A】この発明の方法を利用したトランザクション
に係るステップの一部を示すフローチャート。
に係るステップの一部を示すフローチャート。
【図4B】この発明の方法を利用したトランザクション
に係る残りのステップを示すフローチャート。
に係る残りのステップを示すフローチャート。
5 コンピュータシステム 10 クライアントワークステーション 12,22 CPU 15 メモリ 20,30,40 サーバコンピュータ 24 トランザクションサーバ 25 RAM
Claims (16)
- 【請求項1】 クライアントコンピュータメモリにクラ
イアントアプリケーションおよびクライアントトランザ
クションマネージャを格納したクライアントコンピュー
タ、オブジェクトリクエストブローカ、ならびに、サー
バコンピュータメモリにサーバアプリケーションおよび
サーバトランザクションを格納したサーバコンピュータ
を使用してオブジェクト指向クライアントトランザクシ
ョンを実行するための方法であって、 前記クライアントアプリケーションにおいてクライアン
トトランザクションを開始するステップと、 前記クライアントアプリケーションに対して、回復可能
なオブジェクトについてのメソッドの呼出しをリクエス
トするステップと、 前記サーバコンピュータメモリに対して呼出しリクエス
トを送るステップと、 前記サーバアプリケーションにおいてサーバトランザク
ションを開始するステップと、 前記サーバアプリケーションにおいて前記回復可能なオ
ブジェクトについてのメソッドを呼び出すステップと、 前記回復可能なオブジェクトが前記サーバトランザクシ
ョン内において変化しがちなデータを含むことを前記サ
ーバアプリケーションに対して通知するステップと、 前記サーバアプリケーションが前記クライアントトラン
ザクション内において変化しがちなデータを含む旨のク
ライアント通知を作成するステップと、 前記クライアントアプリケーションからのリクエストに
回答するステップと、 前記回答およびクライアント通知を前記クライアントコ
ンピュータメモリに送るステップとを具備した方法。 - 【請求項2】 前記サーバトランザクションにおける各
関係者に、前記サーバトランザクションへの参加の準備
をさせるステップと、 前記サーバトランザクションにおける各関係者を該サー
バトランザクションに参加させるステップと、 前記クライアントトランザクションにおける各関係者を
該クライアントトランザクションに参加させるステップ
とをさらに具備した請求項1に記載の方法。 - 【請求項3】 前記クライアントトランザクションにお
ける少なくとも1つの関係オブジェクトを調整するため
に、前記クライアントコンピュータメモリにクライアン
トコーディネータオブジェクトを作成するステップと、 前記クライアントコーディネータオブジェクトに対する
参照、および、前記呼出しリクエストへの回答時に、第
1の関係オブジェクトが前記クライアントコーディネー
タオブジェクトに前記クライアントトランザクションへ
の参加を通知するよう要求するリクエストを含むトラン
ザクションコンテキストデータ構造を作成するステップ
と、 前記トランザクションコンテキストデータ構造を前記呼
出しリクエストと共に前記サーバコンピュータメモリに
送るステップと、 前記サーバトランザクションにおける少なくとも1つの
関係オブジェクトを調整するために、前記サーバコンピ
ュータメモリに従属コーディネータオブジェクトを作成
するステップとを具備した請求項1に記載の方法。 - 【請求項4】 前記回復可能なオブジェクトが前記サー
バトランザクション内において変化しがちなデータを含
むことを前記前記サーバアプリケーションに対して通知
するステップが、 前記回復可能なオブジェクトが前記サーバトランザクシ
ョン内において変化しがちなデータを含むことを前記従
属コーディネータオブジェクトに通知するためのサーバ
リソースオブジェクトを作成するステップと、 前記サーバリソースオブジェクトを前記従属コーディネ
ータオブジェクトと共に登録するステップとを含む請求
項3に記載の方法。 - 【請求項5】 前記サーバアプリケーションが前記クラ
イアントトランザクション内において変化しがちなデー
タを含む旨のクライアント通知を作成するステップが、 前記サーバアプリケーションが前記クライアントトラン
ザクション内において変化しがちなデータを含むことを
前記クライアントコーディネータオブジェクトに通知す
るためのサーバトランザクションマネージャ・リソース
オブジェクトを作成するステップと、 前記サーバコーディネータオブジェクトに対する参照お
よび前記サーバトランザクションマネージャ・リソース
オブジェクトに対する参照を含むよう、前記トランザク
ションコンテキストデータ構造を変更するステップとを
含む請求項4に記載の方法。 - 【請求項6】 前記回答およびクライアント通知を前記
クライアントコンピュータメモリに送るステップが、前
記回答および前記トランザクションコンテキストデータ
構造を前記クライアントコンピュータメモリに送るステ
ップを含む請求項5に記載の方法。 - 【請求項7】 前記クライアントアプリケーションが第
2のサーバコンピュータメモリ内の第2の回復可能なオ
ブジェクトについて第2のメソッド呼出しをリクエスト
する場合、 前記従属コーディネータオブジェクトに対する参照を含
むよう前記トランザクションコンテキストを変更するス
テップと、 前記第2の呼出しリクエストおよび変更された前記トラ
ンザクションコンテキストを前記第2のサーバコンピュ
ータメモリに送るステップとを含む請求項6に記載の方
法。 - 【請求項8】 前記サーバリソースオブジェクトを準備
し、前記リソースオブジェクトが前記サーバトランザク
ションに参加すべきか否かを判定するステップと、 前記サーバリソースオブジェクトを前記サーバトランザ
クションに参加させるステップと、 前記サーバトランザクションマネージャ・リソースオブ
ジェクトを前記クライアントトランザクションに参加さ
せるステップとを含む請求項7に記載の方法。 - 【請求項9】 クライアントコンピュータメモリにクラ
イアントアプリケーションおよびクライアントトランザ
クションマネージャを格納したクライアントコンピュー
タ、オブジェクトリクエストブローカ、ならびに、サー
バコンピュータメモリにサーバアプリケーションおよび
サーバトランザクションを格納したサーバコンピュータ
を使用してオブジェクト指向クライアントトランザクシ
ョンを実行するための方法であって、 前記クライアントアプリケーションにおいてクライアン
トトランザクションを開始するステップと、 前記クライアントトランザクションにおける少なくとも
1つの関係オブジェクトを調整するために、前記クライ
アントコンピュータメモリにクライアントコーディネー
タオブジェクトを作成するステップと、 前記クライアントアプリケーションに対して、回復可能
なオブジェクトについてのメソッドの呼出しをリクエス
トするステップと、 前記クライアントコーディネータオブジェクトに対する
参照、および、前記呼出しリクエストへの回答時に、第
1の関係オブジェクトが前記クライアントコーディネー
タオブジェクトに前記クライアントトランザクションへ
の参加を通知するよう要求するリクエストを含むトラン
ザクションコンテキストデータ構造を作成するステップ
と、 前記サーバコンピュータメモリに対して前記呼出しリク
エストおよびトランザクションコンテキストデータ構造
を送るステップと、 サーバトランザクションを開始するステップと、 前記回復可能なオブジェクトが前記トランザクション内
において変化しがちなデータを含むことを前記従属コー
ディネータオブジェクトに通知するためのサーバリソー
スオブジェクトを作成するステップと、 前記サーバリソースオブジェクトを前記従属コーディネ
ータオブジェクトと共に登録するステップと、 前記クライアントアプリケーションからのリクエストに
回答するステップと、 前記サーバコーディネータオブジェクトに対する参照お
よび前記サーバトランザクションマネージャ・リソース
オブジェクトに対する参照を含むよう、前記トランザク
ションコンテキストデータ構造を変更するステップと、 前記回答および変更された前記トランザクションコンテ
キストデータ構造を前記クライアントコンピュータメモ
リに送るステップと、 前記クライアントコーディネータオブジェクトと共に前
記サーバトランザクションマネージャ・リソースオブジ
ェクトを登録するステップとを具備した方法。 - 【請求項10】 前記クライアントアプリケーションが
第2のサーバコンピュータメモリ内の第2の回復可能な
オブジェクトについて第2のメソッド呼出しをリクエス
トする場合、 前記従属コーディネータオブジェクトに対する参照を含
むよう前記トランザクションコンテキストを変更するス
テップと、 前記第2の呼出しリクエストおよび変更された前記トラ
ンザクションコンテキストを前記第2のサーバコンピュ
ータメモリに送るステップとを含む請求項9に記載のシ
ステム。 - 【請求項11】 クライアントコンピュータメモリにク
ライアントアプリケーションおよびクライアントトラン
ザクションマネージャを格納したクライアントコンピュ
ータ、オブジェクトリクエストブローカ、ならびに、サ
ーバコンピュータメモリにサーバアプリケーションおよ
びサーバトランザクションを格納したサーバコンピュー
タを含むクライアントトランザクションを実行するため
のシステムであって、 前記クライアントアプリケーションにおいてクライアン
トトランザクションを開始する手段と、 前記クライアントアプリケーションに対して、回復可能
なオブジェクトについてのメソッドの呼出しをリクエス
トする手段と、 前記サーバコンピュータメモリに対して呼出しリクエス
トを送る手段と、 前記サーバアプリケーションにおいてサーバトランザク
ションを開始する手段と、 前記サーバアプリケーションにおいて前記回復可能なオ
ブジェクトについてのメソッドを呼び出す手段と、 前記回復可能なオブジェクトが前記サーバトランザクシ
ョン内において変化しがちなデータを含むことを前記サ
ーバアプリケーションに対して通知する手段と、 前記サーバアプリケーションが前記クライアントトラン
ザクション内において変化しがちなデータを含む旨のク
ライアント通知を作成する手段と、 前記クライアントアプリケーションからのリクエストに
回答する手段と、 前記回答およびクライアント通知を前記クライアントコ
ンピュータメモリに送る手段とを具備したシステム。 - 【請求項12】 前記サーバトランザクションにおける
各関係者に、前記サーバトランザクションへの参加の準
備をさせる手段と、 前記サーバトランザクションにおける各関係者を該サー
バトランザクションに参加させる手段と、 前記クライアントトランザクションにおける各関係者を
該クライアントトランザクションに参加させる手段とを
さらに具備した請求項11に記載のシステム。 - 【請求項13】 前記クライアントトランザクションに
おける少なくとも1つの関係オブジェクトを調整するた
めに、前記クライアントコンピュータメモリにクライア
ントコーディネータオブジェクトを作成する手段と、 前記クライアントコーディネータオブジェクトに対する
参照、および、前記呼出しリクエストへの回答時に、第
1の関係オブジェクトが前記クライアントコーディネー
タオブジェクトに前記クライアントトランザクションへ
の参加を通知するよう要求するリクエストを含むトラン
ザクションコンテキストデータ構造を作成する手段と、 前記トランザクションコンテキストデータ構造を前記呼
出しリクエストと共に前記サーバコンピュータメモリに
送る手段と、 前記サーバトランザクションにおける少なくとも1つの
関係オブジェクトを調整するために、前記サーバコンピ
ュータメモリに従属コーディネータオブジェクトを作成
する手段とを具備した請求項12に記載のシステム。 - 【請求項14】 前記回復可能なオブジェクトが前記サ
ーバトランザクション内において変化しがちなデータを
含むことを前記前記サーバアプリケーションに対して通
知する手段が、 前記回復可能なオブジェクトが前記サーバトランザクシ
ョン内において変化しがちなデータを含むことを前記従
属コーディネータオブジェクトに通知するためのサーバ
リソースオブジェクトを作成する手段と、 前記サーバリソースオブジェクトを前記従属コーディネ
ータオブジェクトと共に登録する手段とを含む請求項1
3に記載のシステム。 - 【請求項15】 前記サーバアプリケーションが前記ク
ライアントトランザクション内において変化しがちなデ
ータを含む旨のクライアント通知を作成する手段が、 前記サーバアプリケーションが前記クライアントトラン
ザクション内において変化しがちなデータを含むことを
前記クライアントコーディネータオブジェクトに通知す
るためのサーバトランザクションマネージャ・リソース
オブジェクトを作成する手段と、 前記サーバコーディネータオブジェクトに対する参照お
よび前記サーバトランザクションマネージャ・リソース
オブジェクトに対する参照を含むよう、前記トランザク
ションコンテキストデータ構造を変更する手段とを含む
請求項14に記載のシステム。 - 【請求項16】 クライアントコンピュータメモリにク
ライアントアプリケーションおよびクライアントトラン
ザクションマネージャを格納したクライアントコンピュ
ータ、オブジェクトリクエストブローカ、ならびに、サ
ーバコンピュータメモリにサーバアプリケーションおよ
びサーバトランザクションを格納した第1のサーバコン
ピュータを使用してオブジェクト指向クライアントトラ
ンザクションを実施させるプログラムコードを格納した
マシーンによって読取り可能な媒体であって、 前記クライアントアプリケーションにおいてクライアン
トトランザクションを開始するプログラムコードメカニ
ズムと、 前記クライアントアプリケーションに対して、回復可能
なオブジェクトについてのメソッドの呼出しをリクエス
トするプログラムコードメカニズムと、 前記サーバコンピュータメモリに対して呼出しリクエス
トを送るプログラムコードメカニズムと、 前記サーバアプリケーションにおいてサーバトランザク
ションを開始するプログラムコードメカニズムと、 前記サーバアプリケーションにおいて前記回復可能なオ
ブジェクトについてのメソッドを呼び出すプログラムコ
ードメカニズムと、 前記回復可能なオブジェクトが前記サーバトランザクシ
ョン内において変化しがちなデータを含むことを前記サ
ーバアプリケーションに対して通知するプログラムコー
ドメカニズムと、 前記サーバアプリケーションが前記クライアントトラン
ザクション内において変化しがちなデータを含む旨のク
ライアント通知を作成するプログラムコードメカニズム
と、 前記クライアントアプリケーションからのリクエストに
回答するプログラムコードメカニズムと、 前記回答およびクライアント通知を前記クライアントコ
ンピュータメモリに送るプログラムコードメカニズムと
を具備した媒体。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US69760596A | 1996-08-26 | 1996-08-26 | |
| US08/697,605 | 1996-08-26 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH10149286A true JPH10149286A (ja) | 1998-06-02 |
Family
ID=24801785
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP9246217A Pending JPH10149286A (ja) | 1996-08-26 | 1997-08-26 | 効率的な共通オブジェクトリクエストブローカアーキテクチャトランザクションを実行するための方法および装置 |
Country Status (3)
| Country | Link |
|---|---|
| EP (1) | EP0834807A1 (ja) |
| JP (1) | JPH10149286A (ja) |
| CA (1) | CA2213213A1 (ja) |
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR100487120B1 (ko) * | 2002-03-13 | 2005-05-03 | 삼성전자주식회사 | 코바 기반의 클라이언트와 서버간 통신시 호 연결의 자동복구 시스템 및 방법 |
| JP2010015586A (ja) * | 1998-07-14 | 2010-01-21 | Matsushita Electric Corp Of America | 安価でスケーラブルなオープンアーキテクチャメディアサーバ |
| JP2021501399A (ja) * | 2017-10-31 | 2021-01-14 | アビニシオ テクノロジー エルエルシー | 永続性レベル表示器を使用してコンピュータクラスタを管理すること |
Families Citing this family (11)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| GB2334353B (en) * | 1998-02-12 | 2002-08-07 | Ibm | An apparatus,method and computer program product for client/server computing with the ability to select which servers are capable of creating transaction stat |
| GB2335518A (en) * | 1998-03-18 | 1999-09-22 | Ibm | Triggering event causes creation of Coordinator transaction state object |
| JP2003524809A (ja) * | 1998-06-01 | 2003-08-19 | モトローラ・インコーポレイテッド | 分散オブジェクト・アーキテクチャを有する通信システム |
| GB2346983B (en) | 1999-02-18 | 2003-04-16 | Ibm | Client/server computing for transaction processing with superior coordinator o ptimization |
| DE19910345A1 (de) * | 1999-03-09 | 2000-09-21 | Siemens Ag | Verfahren zur Nachrichtenübertragung zwischen einer einem ersten Prozeß zugewiesenen Clientinstanz und wenigstens einer mindestens einem weiteren Prozeß zugewiesenen Serverinstanz innerhalb eines verteilten Systems |
| AU2004202423B2 (en) * | 1999-06-25 | 2004-09-16 | Jacobs Rimell Limited | Automated provisioning system |
| GB2368692B (en) * | 1999-06-25 | 2003-02-12 | Jacobs Rimell Ltd | Automated provisioning system |
| KR100317129B1 (ko) * | 1999-12-27 | 2001-12-24 | 오길록 | 인터넷 웹 환경에서 웹 서버와 데이터베이스 서버 연동 방법 |
| US7337441B2 (en) | 2001-07-17 | 2008-02-26 | Bea Systems, Inc. | System and method for prepreparing a transaction process involving a chain of servers in a circular flow |
| US7080119B2 (en) * | 2001-07-17 | 2006-07-18 | Bea Systems, Inc. | System and method for transaction processing with delegated commit feature |
| GB2378270B (en) | 2001-07-30 | 2005-04-20 | Ibm | Method and apparatus for data transfer across a network |
Family Cites Families (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| EP0613083B1 (en) * | 1993-02-25 | 2002-01-23 | Sun Microsystems, Inc. | Transaction management in object oriented systems |
-
1997
- 1997-08-15 CA CA 2213213 patent/CA2213213A1/en not_active Abandoned
- 1997-08-22 EP EP97114553A patent/EP0834807A1/en not_active Withdrawn
- 1997-08-26 JP JP9246217A patent/JPH10149286A/ja active Pending
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2010015586A (ja) * | 1998-07-14 | 2010-01-21 | Matsushita Electric Corp Of America | 安価でスケーラブルなオープンアーキテクチャメディアサーバ |
| KR100487120B1 (ko) * | 2002-03-13 | 2005-05-03 | 삼성전자주식회사 | 코바 기반의 클라이언트와 서버간 통신시 호 연결의 자동복구 시스템 및 방법 |
| JP2021501399A (ja) * | 2017-10-31 | 2021-01-14 | アビニシオ テクノロジー エルエルシー | 永続性レベル表示器を使用してコンピュータクラスタを管理すること |
Also Published As
| Publication number | Publication date |
|---|---|
| EP0834807A1 (en) | 1998-04-08 |
| CA2213213A1 (en) | 1998-02-26 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US6470342B1 (en) | Process of maintaining a distributed map of transaction identifiers and using hashing to access these maps | |
| US6295548B1 (en) | Detection of an imported transaction for finding the global transaction identifier | |
| US6101527A (en) | System for managing and processing distributed object transactions and process implemented by said system | |
| US6832238B1 (en) | Local transaction management | |
| US6728958B1 (en) | Volatile resource manager with pre-prepare notification | |
| US8185665B2 (en) | Distributed computing system architecture | |
| US6496825B1 (en) | Systems and methods for the detection of a loop-back of a transaction | |
| US5768587A (en) | Operating a transaction manager with a non-compliant resource manager | |
| JP4550411B2 (ja) | 同期されたコールバック処理特徴をもったトランザクション処理システム及び方法 | |
| JP4464525B2 (ja) | 作業負荷によって管理されるクライアント/サーバ・データ処理システムにおける集中アフィニティ維持装置および方法 | |
| US7743083B2 (en) | Common transaction manager interface for local and global transactions | |
| US6266698B1 (en) | Logging of transaction branch information for implementing presumed nothing and other protocols | |
| US6785722B2 (en) | Apparatus, methods, and computer program products for transactional support of network management operations | |
| US20060037030A1 (en) | Deploy service implementation | |
| US7610305B2 (en) | Simultaneous global transaction and local transaction management in an application server | |
| JP2001522086A (ja) | 宣言型パラダイムをサポートするステートレスなウェブ環境におけるトランザクションを実行するための方法および装置 | |
| JP2003058517A (ja) | 非トランザクションリソースを使用して所望の機能サービスをトランザクションとして実行するシステム | |
| JPH10149286A (ja) | 効率的な共通オブジェクトリクエストブローカアーキテクチャトランザクションを実行するための方法および装置 | |
| CN113297329A (zh) | 事务处理方法、装置、设备、存储介质及程序产品 | |
| JP3409308B2 (ja) | クライアント/サーバ・コンピューティング・システム及びサーバ処理方法 | |
| US20040215894A1 (en) | Specifying transaction manager type at various application levels | |
| US6542922B1 (en) | Client/server transaction data processing system with automatic distributed coordinator set up into a linear chain for use of linear commit optimization | |
| US7600002B2 (en) | System and method for exposing a J2EE application server as a web service transaction participant | |
| JPH0922356A (ja) | トランザクション相互運用システム及び方法 | |
| JP3548030B2 (ja) | サーバ処理装置及びサーバ処理方法 |