(57)【特許請求の範囲】
【請求項１】
トランザクションを処理するクライアント／サーバ計算システムにおいて使用するためのサーバ処理装置であって、
クライアントからトランザクション・コマンドを受信するための手段を備え、
前記トランザクション・コマンドは、トランザクションが前記クライアントによって開始されたが当該トランザクションを表すトランザクション・オブジェクトがまだ作成されていないことを指示するための、特定のトランザクション・コンテキストを含んでおり、
更に、前記特定のトランザクション・コンテキストを認識するとともに、前記特定のトランザクション・コンテキストを認識したことに応答して前記トランザクション・オブジェクトをローカルに作成するための手段と、
前記トランザクションに関係するローカルの資源を前記ローカルに作成されたトランザクション・オブジェクトに登録するための手段とを備えていることを特徴とする、サーバ処理装置。
【請求項２】
トランザクションを処理するクライアント／サーバ計算システムにおいて使用するためのサーバ処理方法であって、
クライアントからトランザクション・コマンドを受信するステップを含み、
前記トランザクション・コマンドは、トランザクションが前記クライアントによって開始されたが当該トランザクションを表すトランザクション・オブジェクトがまだ作成されていないことを指示するための、特定のトランザクション・コンテキストを含んでおり、
更に、前記特定のトランザクション・コンテキストを認識するとともに、前記特定のトランザクション・コンテキストを認識したことに応答して前記トランザクション・オブジェクトをローカルに作成するステップと、
前記トランザクションに関係するローカルの資源を前記ローカルに作成されたトランザクション・オブジェクトに登録するステップとを含んでいることを特徴とする、サーバ処理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、クライアント・コンピュータ（以下「クライアント」と表記）がサーバ・コンピュータ（以下「サーバ」と表記）に対しクライアントの作業の一部を実行することを要求するようにしたクライアント／サーバ（分散式とも呼ばれる）計算の分野に係る。クライアント及びサーバは、両者ともに同一の物理的計算機上に設けることができる。
【０００２】
【従来の技術】
クライアント／サーバ計算は、情報技術の分野において過去数年にわたって次第に重要となってきた。このタイプの分散式計算は、１台の計算機がその作業の一部を他の計算機に委譲して、これを一層良好な態様で実行することを可能にする。例えば、サーバは、膨大なデータの記憶を管理するためのデータベース・プログラムを実行する高性能のコンピュータとすることができるのに対し、クライアントは、そのローカル・プログラムの１つで使用するためにデータベースからの情報を要求するデスクトップ型のパーソナル・コンピュータ（ＰＣ）とすることができる。
【０００３】
クライアント／サーバ計算の利点は、クライアント及びサーバを互いに異なる（異種）「プラットフォーム」上に設けることを可能にする処の、オブジェクト指向プログラミング（ＯＯＰ）と呼ばれる周知のコンピュータ・プログラミング技法の使用によって強調されてきた。プラットフォームとは、計算機がその作業を行うために使用する処の、特定のハードウェア／ソフトウェア／オペレーティング・システム／通信プロトコルの組み合わせである。ＯＯＰを使用すると、クライアントのアプリケーション・プログラム（以下「クライアント・アプリケーション」と表記）及びサーバのアプリケーション・プログラム（以下「サーバ・アプリケーション」と表記）は、クライアント・アプリケーションの作業要求がサーバ・アプリケーションにどのように通信され且つそこでどのように受け入れられるかということを考慮することなく、それぞれのプラットフォーム上で動作することができる。同様に、サーバ・アプリケーションは、ＯＯＰシステムがサーバ・アプリケーションの処理結果をどのように受信し、変換し、これを要求元のクライアント・アプリケーションにどのように戻すかということを考慮する必要がない。
【０００４】
米国特許第  ５，４４０，７４４  号及び公開された欧州特許出願  ＥＰ  ０  ６７７，９４３  Ａ２  には、ＯＯＰ技法を異種のクライアント／サーバ・システムと統合化する方法が開示されている。しかしながら、本発明の環境を理解する一助として、その基本アーキテクチャの例を以下で説明する。
【０００５】
図１に示されているように、クライアント１０（例えば、ＩＢＭ社が提供するＯＳ／２を搭載したパーソナル・コンピュータ）は、そのオペレーティング・システム上で実行されるクライアント・アプリケーション４０を有する（「ＩＢＭ」及び「ＯＳ／２」は、本出願人の商標である）。クライアント・アプリケーション４０は、サーバ２０上で作業を定期的に実行することを必要とするとともに、クライアント・アプリケーション４０が後で使用するのに備えてサーバ２０からデータを定期的に戻すことを必要とする。サーバ２０は、例えば、ＩＢＭ社が提供するＭＶＳオペレーティング・システムを搭載した高性能のメインフレーム・コンピュータとすることができる（「ＭＶＳ」は、本出願人の商標である）。本発明については、サーバ２０によって行うべき通信サービス用の要求がクライアント・アプリケーション４０とのユーザの対話によって開始されるのか、又はクライアント・アプリケーション４０がユーザの対話と独立に動作してその実行中に自動的に要求を行うのかということは、全く関係がない。
【０００６】
クライアント１０がサーバ２０のサービスについての要求を行うことを望んでいる場合、クライアント・アプリケーション４０は、必要とするサービスを第１の論理手段５０に通知する。こうするには、例えば、遠隔手順の名前とともに、入力及び出力パラメータのリストを第１の論理手段５０に通知すればよい。かくて、第１の論理手段５０は、記憶装置６０内に格納されている利用可能な通信サービスの定義を参照して、サーバ２０との必要な通信を確立するというタスクを行う。可能な全てのサービスは、オブジェクト・クラスの結合（ｃｏｈｅｓｉｖｅ）フレームワーク７０として定義されている。なお、これらのクラスは、単オブジェクト・クラスから導出されるものである。それぞれのサービスをこのように定義すると、性能及び再使用性の面で多数の利点を得ることができる。
【０００７】
サーバ２０との必要な通信を確立するために、第１の論理手段５０は、フレームワーク７０内のどのオブジェクト・クラスを使用する必要があるかを決定した後、サーバ２０においてこのオブジェクトのインスタンスを作成する。このオブジェクトには、そのメソッドのうち１つを呼び出すために、メッセージが送信されるようになっている。かくして、接続手段８０を介してサーバ２０との接続が確立されるので、これに続いて、第２の論理手段９０に対し要求を送信することができる。
【０００８】
次に、第２の論理手段９０は、この要求をサーバ２０上で実行中のサーバ・アプリケーション１００に引き渡すので、サーバ・アプリケーション１００は、この要求に相当する特定のタスク（例えば、データ検索手順）を実行することができる。かかるタスクが完了すると、サーバ・アプリケーション１００は、その結果をクライアント１０に戻さなければならないことがある。このため、サーバ・アプリケーション１００は、要求されたタスクの実行中及びその結果をクライアント１０に返送すべき時点で、第２の論理手段９０と対話する。第２の論理手段９０は、オブジェクトのインスタンスを作成するとともに、これらのオブジェクトの適当なメソッドを呼び出す。なお、これらのオブジェクト・インスタンスは、サーバ・アプリケーション１００によって必要とされるときに、記憶装置１１０内に格納されているオブジェクト・クラスの結合フレームワーク１２０から作成されるものである。
【０００９】
前述の技法を使用すると、クライアント１０上のクライアント・アプリケーション４０は、通信アーキテクチャに対し露出されないことになる。また、サーバ・アプリケーション１００は、その環境用の標準的な機構によって呼び出されるので、これが遠隔的に呼び出されている場合には、そのことを認識しないことになる。
【００１０】
オブジェクト・マネジメント・グループ（ＯＭＧ）は、図１に示されているような分散オブジェクトを持つ異種のプラットフォーム上で行われるクライアント／サーバ計算の種々の側面の標準化及び普及を図るための国際的な非営利団体である。ＯＭＧは、クライアント（例えば、１０）が（ＯＯＰ形式で）サーバ（例えば、２０）と通信するための標準仕様を記述した文書を公開している。これらの標準仕様の一部として定められたオブジェクト・リクエスト・ブローカ（ＣＯＲＢＡ−共通オブジェクト・リクエスト・ブローカ・アーキテクチャとも呼ばれる）は、クライアントとサーバとの間のオブジェクト指向ブリッジを提供する。ＯＲＢは、クライアント・アプリケーション４０及びサーバ・アプリケーション１００をオブジェクト指向の実現細目から分離するとともに、第１の論理手段５０及び第２の論理手段９０並びに通信手段８０の作業のうち少なくとも一部を実行する。
【００１１】
ＣＯＲＢＡソフトウェア構造の一部として、ＯＭＧは、ＯＴＳ（オブジェクト・トランザクション・サービス）と呼ばれる処の、「トランザクション」に関係する標準仕様を定めている。その詳細については、”ＣＯＲＢＡ  Ｏｂｊｅｃｔ  Ｔｒａｎｓａｃｔｉｏｎ  Ｓｅｒｖｉｃｅ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  １．０，  ＯＭＧ  Ｄｏｃｕｍｅｎｔ  ９４．８．４”  を参照されたい。コンピュータを使用して実現されたトランザクション処理システムは、多くの産業において重要なビジネス・タスクに有用である。トランザクションは、完全に完了されるか又はアクションを伴うことなく完全に除去されねばならない処の、単作業単位を定義する。例えば、顧客が現金を引き出すための銀行用自動端末装置の場合には、現金を発行し、当該端末内に置かれている現金の残高を減少させるとともに、顧客の預金口座の残高を減少させるという全てのアクションを完全に行わなければならないか、又はその何れも全く行ってはならないのである。これらの従属アクションの１つでも失敗すると、記録内容と実際の事象との間に不一致が生ずることになろう。
【００１２】
分散式トランザクション処理は、複数の物理的又は論理的ロケーションにおける資源に影響するようなトランザクションを含んでいる。前述の例では、或るトランザクションは、ローカルの銀行用自動端末装置で管理されている資源に影響するだけでなく、その銀行のメイン・コンピュータによって管理されている預金口座の残高にも影響する。これらのトランザクションは、特定のサーバ（例えば、２０）によって処理される一連の顧客要求について、このサーバと通信する特定のクライアント（例えば、１０）を含んでいる。ＯＭＧのＯＴＳは、これらの分散式トランザクションを調整するように策定されたものである。
【００１３】
一般に、クライアント・プロセス上で実行中のアプリケーションが開始するトランザクションは、互いに異なる複数のサーバを呼び出すことがある。この場合、各サーバは、このトランザクションに含まれる命令に従って、そのローカル・データベースの内容を変更するためのサーバ・プロセスを開始する。このトランザクションが終了するのは、このトランザクションをコミットする（従って、全てのサーバがそれぞれのローカル・データベースに対する変更を終了する）か、又はこのトランザクションを打ち切る（従って、全てのサーバがそれぞれのローカル・データベースに対する変更を「ロールバック」若しくは無視する）場合だけである。このトランザクションの間にこれらのサーバと通信するためには（即ち、これらのサーバに対し、このトランザクションにおけるそれぞれの部分をコミットするか又は打ち切るように命令するためには）、関係するプロセスのうち１つが、このトランザクション用の状態データを維持しなければならない。こうするために一般に採用されている方法は、特定のプロセスを使用して一連のトランザクション・オブジェクトを設定するとともに、そのうちの１つを種々のサーバに関するトランザクションを調整するための調整オブジェクトとするというものである。
【００１４】
図２には、ＩＢＭ社が開発し且つ１９９７年５月に発表した製品である「Ｃｏｍｐｏｎｅｎｔ  Ｂｒｏｋｅｒ  Ｓｅｒｉｅｓ」（本出願人の商標）の一部として含まれている処の、ＯＴＳの実現例が示されている。トランザクション（例えば、預金口座からの現金の引き出し）を開始することを望んでいるクライアント・プロセス２１は、このトランザクションの状態を維持するためのトランザクション・オブジェクトを作成及び維持可能なプロセスを見つけなければならない。シン・クライアント（即ち、最小限の機能だけを有するクライアント）を作成するという最近の傾向に従って、クライアント・プロセス２１は、かかるトランザクション・オブジェクトをローカルに維持することができないのが普通であるから、この目的のためにサーバ・プロセスを捜さなければならない。
【００１５】
この従来技術のアプローチによれば、ＯＴＳ（又はＣＯＲＢＡライフサイクル・サービスのような他のサービス）は、（調整、制御及び終了オブジェクトを含む）トランザクション・オブジェクト２２１を作成すべきサーバ・プロセスを捜索する。この従来技術では、同サーバ・プロセス（即ち、図２のサーバＡプロセス２２）が常に選ばれるようになっている。サーバＡプロセス２２を見つけると、クライアント・プロセス２１は、サーバＡプロセス２２にメッセージを送信して（丸数字１を参照）、トランザクション・オブジェクト２２１を作成するように命令する。次に、サーバＡプロセス２２は、トランザクション・オブジェクト２２１を作成するとともに、トランザクション・コンテキストを保持する応答をクライアント・プロセス２１に送信する（丸数字２を参照）。次に、クライアント・プロセス２１は、サーバＢプロセス２３に預金口座借方記入コマンドを送信する（丸数字３を参照）。サーバＢプロセス２３は、クライアント・プロセス２１が現金の引き出しを望んでいる預金口座オブジェクト２３１を含んでいる。また、預金口座借方記入コマンドは、サーバＡプロセス２２からクライアント・プロセス２１に供給されたトランザクション・コンテキストを保持している。このように、サーバＢプロセス２３内の預金口座オブジェクト２３１は、それ自体をサーバＡプロセス２２内のトランザクション・オブジェクト２２１に登録することができるので（丸数字４を参照）、トランザクション・オブジェクト２２１は、預金口座オブジェクト２３１に対し、当該トランザクションの終わりにコミット又はロールバックを行うように指令することができる（丸数字５を参照）。
【００１６】
【発明が解決しようとする課題】
しかしながら、この従来技術の実現形態は、少なくとも２つの点で非効率的である。第１に、トランザクション・オブジェクトを作成及び維持するためにクライアント・プロセスが遠隔プロセスを捜している場合には、常に同サーバ・プロセスが使用されるようになっているから、このサーバ・プロセスは、直ぐに過負荷となって、それ自体のタスク（例えば、ローカル資源の更新）を効率的に行うことが困難となる。第２に、各トランザクションに関係する種々のプロセス間に、多数のプロセス間フローが存在する。仮に、ランダムに選ばれたサーバ上でトランザクション・オブジェクトを作成及び維持するようにしたとしても、依然として多数のプロセス間コールが存在するという問題がある。
【００１７】
【課題を解決するための手段】
第１の側面に従って、本発明は、トランザクションを処理するクライアント／サーバ計算システムにおいて使用するためのサーバ処理装置を提供する。このサーバ処理装置は、クライアントからトランザクション・コマンドを受信するための手段を備えている。このトランザクション・コマンドは、トランザクションが前記クライアントによって開始されたが当該トランザクションを表すトランザクション・オブジェクトがまだ作成されていないことを指示するための、特定のトランザクション・コンテキストを含んでいる。更に、このサーバ処理装置は、前記特定のトランザクション・コンテキストを認識するとともに、前記特定のトランザクション・コンテキストを認識したことに応答して前記トランザクション・オブジェクトをローカルに作成するための手段と、前記トランザクションに関係するローカルの資源を前記ローカルに作成されたトランザクション・オブジェクトに登録するための手段とを備えている。
【００１９】
第３の側面に従って、本発明は、前記第１の側面に関連して記述したクライアントの機能を実行するための方法を提供する。
【００２０】
第２の側面に従って、本発明は、前記第１の側面に関連して記述したサーバの機能を実行するための方法を提供する。
【００２３】
【発明の実施の形態】
共通オブジェクト・リクエスト・ブローカ・アーキテクチャ（ＣＯＲＢＡ）のオブジェクト・トランザクション・サービス（ＯＴＳ）は、「現行」と呼ばれるインタフェース・オブジェクトを提供する。かかる現行インタフェース・オブジェクトは、トランザクションの開始を下部のソフトウェア層に通知するためにクライアント・アプリケーション（ソース・コード）が使用する処の、「開始」メソッドを有している。本発明の推奨実施例によれば、クライアント・アプリケーションが特定のクライアント・アーキテクチャ上で構築又は実行されており且つ「開始」メソッドを含んでいる場合には、その下部にあるソフトウェアは、当該トランザクションに実質的に関係するサーバ（例えば、当該トランザクションに関係するサーバ資源を有するようなサーバ）においてトランザクション状態オブジェクトを設定することにより、当該トランザクションを作成するように適当な動作を行う。
【００２４】
本発明の推奨実施例では、クライアント・プロセス３１（図３を参照）内で実行中のアプリケーションは、通常のように、現行インタフェース・オブジェクト上の「開始」メソッドを呼び出すことにより、トランザクションを開始する。次に、クライアント・プロセス３１は、例えば最小セットのオブジェクトをローカルに作成することにより、クライアント・プロセス３１がこのコマンドを発行したという事実を記録する。前記アクションは、図４の流れ図のステップ４１に例示されている。この例では、処理中のトランザクションが、クライアントとして銀行用自動端末装置を使用して行われる処の、預金口座からの現金の引き出しであると仮定する。かかるトランザクションは、世界中のどこでも日常的に行われている。
【００２５】
前記従来技術にあっては、この段階において、遠隔プロセス２２を捜した後、この遠隔プロセス２２内でトランザクション・オブジェクト２２１を作成していた。これに対し、本発明は、その後の時点までこれらのトランザクション・オブジェクトの作成を遅れさせるようにしている（後述）。
【００２６】
次に、クライアント・プロセス３１内で実行中のアプリケーションは、引き出しトランザクションの最初の実質的部分として、サーバＢプロセス３３内の預金口座オブジェクト３３１に対し、借方記入コマンドを発行する。この例では、かかる借方記入コマンドは、「開始」コマンドを発行した後にクライアント・プロセス３１が当該トランザクションにおいて形成する処の、最初の遠隔フローである。このコマンドを形成するに当たり、クライアント・プロセス３１は、このコマンド内に或るトランザクション・コンテキストを含めることにより、預金口座オブジェクト３３１において、このコマンドが特定のトランザクションの一部であることを認識し且つそのトランザクションを識別することができるようにしなければならない。
【００２７】
前記従来技術の場合、クライアント・プロセス２１は、遠隔プロセス２２内で設定したトランザクション・オブジェクト２２１からトランザクション・コンテキストを受信していた。これに対し、本発明の推奨実施例では、トランザクション・オブジェクトはまだ作成されていないので、この段階において、クライアント・プロセス３１に対し、トランザクション・コンテキストを提供することができない。かくて、本発明の推奨実施例では、クライアント・プロセス３１が遠隔プロセス３３内の預金口座オブジェクト３３１に対し借方記入コマンドを送信する場合、特定のトランザクション・コンテキスト（例えば、ＮＵＬＬ  トランザクション・コンテキスト）がこのコマンド内に含められることになる（図３の丸数字１を参照）。  ＮＵＬＬ  トランザクション・コンテキストとは、その全てのフィールドがゼロにセットされていることを意味する。この特定のトランザクション・コンテキストは、トランザクションが開始されたが、そのトランザクション・オブジェクトがまだ作成されていないことを通知する。この動作は、図４の流れ図のステップ４２に例示されている通りである。
【００２８】
サーバＢプロセス３３がこの特定のトランザクション・コンテキスト（例えば、ＮＵＬＬ  トランザクション・コンテキスト）を認識する場合、サーバＢプロセス３３は、トランザクションが開始されたが、そのトランザクション・オブジェクトがまだ作成されていないことを通知される。そうすると、サーバＢプロセス３３は、トランザクション・オブジェクト３３２をローカルに作成する（ステップ４３）。この時点で、トランザクション・オブジェクト３３２が作成されているので、当該トランザクションは、有効なトランザクション・コンテキストを有することになり、そして有効なトランザクション・コンテキストが当該トランザクションに割り当てられる。次に、サーバＢプロセス３３は、クライアント・プロセス３１に応答を送信して（丸数字２を参照）、クライアント・プロセス３１に対し有効なトランザクション・コンテキストを通知する（ステップ４４）。この時点で、クライアント・プロセス３１は、作成済みのトランザクションについて十分な情報を有することになる。
【００２９】
この段階で、預金口座オブジェクト３３１は、トランザクション・オブジェクト３３２と通常の態様で通信する（ステップ４５）。但し、このような全ての通信は、同プロセス内で行われるために、これらの通信については如何なるプロセス間フローも必要とされない。説明中の例では、かかる通信は、預金口座オブジェクト３３１をトランザクション・オブジェクト３３２に登録することを含み、そして当該トランザクションが終了した場合、トランザクション・オブジェクト３３２は、預金口座オブジェクト３３１に対しコミット又はロールバック・コマンドを送信する。
【００３０】
代替的な実施例において、サーバＢプロセス３３は、ＮＵＬＬ  トランザクション・コンテキストを受信した時点で直ちにトランザクション・オブジェクトを作成するのではなく、その後の時点で、例えば、資源登録の間に、トランザクション・オブジェクトを作成することができる。
【００３１】
前述の実施例では、（全てのフィールドをゼロにセットした）ＮＵＬＬ  トランザクション・コンテキストが使用されているが、他の特定の値を有するトランザクション・コンテキストも使用可能であることは勿論である。例えば、かかるトランザクション・コンテキストの個別データ・フィールドを特定の値にそれぞれセットすることができる。
【００３２】
【発明の効果】
以上のように、本発明によれば、トランザクションの処理に実質的に関係するサーバ・プロセス（例えば、当該トランザクションに関係する資源を有するようなサーバ・プロセス）に対し、クライアント・プロセスが実質的なトランザクション・コマンドを送信するまで、トランザクション・オブジェクトは作成されないのであり、これにより、多数のプロセス間フローを減少させることができる。このことは、図２（従来技術）と図３（本発明の推奨実施例）を簡単に比較するだけでも、十分に理解することができる。図２には、５つのプロセス間コールが示されているのに対し、図３には、２つのプロセス間コールが示されているに過ぎないからである。
【００３３】
また、図２の従来技術では、クライアント・プロセスがトランザクションの作成を専用的な態様で指令していたが（図２の丸数字１を参照）、本発明のクライアント・プロセスは、かかる専用的な態様に伴うオーバヘッドを負っていないという点で有利である。即ち、クライアントに関する限り、本発明におけるトランザクションの作成は、クライアントの実質的なトランザクション・コマンド（例えば、預金口座の借方記入）と組み合わされているからである。かくして、本発明のクライアントは、遠隔のサーバ・プロセスを見つけることを免除されるだけでなく、この見つけられたプロセス上でメソッドを作成することからも免除されるのである。
【図面の簡単な説明】
【図１】オブジェクト指向技術を使用した周知の異種クライアント／サーバ・アーキテクチャのブロック図である。
【図２】従来技術に従ったＯＴＳの実現例を示すブロック図である。
【図３】本発明の推奨実施例に従ったＯＴＳの実現例を示すブロック図である。
【図４】図３に示されているＯＴＳの実現例に従って、クライアントが開始コマンドを発行する場合に行われる各ステップを示す流れ図である。
【符号の説明】
３１・・・・クライアント・プロセス
３３・・・・サーバＢプロセス
３３１・・・預金口座オブジェクト
３３２・・・トランザクション・オブジェクト
【図１】
0003548030.tif 000002
【図２】
0003548030.tif 000003
【図３】
0003548030.tif 000004
【図４】
0003548030.tif 000005