(57)【特許請求の範囲】
【請求項１】
トランザクションシステムにおいてトランザクション処理をサポートするための方法であって、前記トランザクションシステムは、
複数のトランザクショングループを含み、前記複数のトランザクショングループは、
複数のトランザクションアプリケーションサーバと、
前記複数のトランザクションアプリケーションサーバ上のグローバルトランザクションの処理を管理することに関与する複数のトランザクションマネージャとを含み、同じトランザクショングループの複数のトランザクションアプリケーションサーバは１つのトランザクションブランチを共有し、前記トランザクションシステムはさらに、
データベースに接続する複数のリソースマネージャインスタンスを含み、前記方法は、
コーディネータトランザクションマネージャを構成する第１のトランザクショングループのパーティシパントトランザクションマネージャが、共通のトランザクション識別子およびリソースマネージャインスタンスについての情報を、１つ以上の他のトランザクショングループに含まれる１つ以上の他のパーティシパントトランザクションマネージャに対して伝播させるステップと、
前記リソースマネージャインスタンスを前記コーディネータトランザクションマネージャと共有している前記他のパーティシパントトランザクションマネージャのうち１つ以上が、前記共通のトランザクション識別子を用いることを可能にするステップと、
前記コーディネータトランザクションマネージャの１つのトランザクションブランチを用いて、かつ前記リソースマネージャインスタンスを前記コーディネータトランザクションマネージャと共有している前記他のパーティシパントトランザクションマネージャの前記トランザクションブランチを無視して、前記コーディネータトランザクションマネージャおよび前記共有されているリソースマネージャインスタンスによって、前記グローバルトランザクションを処理するステップとを含む、方法。
【請求項２】
前記コーディネータトランザクションマネージャに関連付けられたトランザクション識別子を前記共通のトランザクション識別子として用いるステップをさらに含む、請求項１に記載の方法。
【請求項３】
前記リソースマネージャインスタンスをクラスタ化されたデータベースに関連付けることを可能にするステップをさらに含む、請求項１または２に記載の方法。
【請求項４】
前記他のパーティシパントトランザクションマネージャのうち前記１つ以上のために前記コーディネータトランザクションマネージャが前記グローバルトランザクションをコミットまたはロールバックするステップをさらに含む、請求項１〜３のいずれか１項に記載の方法。
【請求項５】
前記リソースマネージャインスタンスを共有しない別のパーティシパントトランザクションマネージャのために、別のトランザクションブランチを用いて前記グローバルトランザクションを処理するステップをさらに含む、請求項１〜４のいずれか１項に記載の方法。
【請求項６】
前記グローバルトランザクションに含まれるすべてのパーティシパントが前記リソースマネージャインスタンスを共有する場合、前記リソースマネージャインスタンス上に、直接、１相コミット動作を呼出すステップをさらに含む、請求項１〜５のいずれか１項に記載の方法。
【請求項７】
リモートトランザクションリソースを解放するためにリモートノード上のパーティシパントに対して削除要求を送信するステップをさらに含む、請求項１〜６のいずれか１項に記載の方法。
【請求項８】
さまざまなドメインにおける複数のパーティシパントが前記グローバルトランザクションに含まれることを可能にするステップをさらに含む、請求項１〜７のいずれか１項に記載の方法。
【請求項９】
前記共通のトランザクション識別子および前記リソースマネージャインスタンスについての前記情報を、リモートドメインへのゲートウェイを介して受信するステップをさらに含む、請求項１〜８のいずれか１項に記載の方法。
【請求項１０】
トランザクション環境におけるトランザクション処理をサポートするためのシステムであって、
複数のトランザクショングループを含み、前記複数のトランザクショングループは、
各々が１つ以上のマイクロプロセッサを含む複数のトランザクションアプリケーションサーバと、
前記１つ以上のマイクロプロセッサ上で実行される複数のトランザクションマネージャとを含み、前記複数のトランザクションマネージャは前記複数のトランザクションアプリケーションサーバ上のグローバルトランザクションの処理を管理することに関与し、同じトランザクショングループの複数のトランザクションアプリケーションサーバは１つのトランザクションブランチを共有し、前記システムはさらに、
データベースに接続する複数のリソースマネージャインスタンスを含み、前記複数のリソースマネージャインスタンスは前記１つ以上のマイクロプロセッサ上で実行され、
コーディネータトランザクションマネージャを構成する第１のトランザクショングループのパーティシパントトランザクションマネージャは、
共通のトランザクション識別子およびリソースマネージャインスタンスについての情報を、１つ以上の他のトランザクショングループに含まれる１つ以上の他のパーティシパントトランザクションマネージャに伝播させるステップと、
前記リソースマネージャインスタンスを前記コーディネータトランザクションマネージャと共有している前記他のパーティシパントトランザクションマネージャのうちの１つ以上が、前記共通のトランザクション識別子を用いることを可能にするステップと、
前記コーディネータトランザクションマネージャの１つのトランザクションブランチを用いて、かつ前記リソースマネージャインスタンスを前記コーディネータトランザクションマネージャと共有している前記他のパーティシパントトランザクションマネージャの前記トランザクションブランチを無視して、前記コーディネータトランザクションマネージャおよび前記共有されているリソースマネージャインスタンスによって、前記グローバルトランザクションを処理するステップとを、実行するように動作する、システム。
【請求項１１】
プログラム命令を含むコンピュータプログラムであって、前記プログラム命令は、システムによって実行されると、請求項１〜９のいずれか１項に記載の方法を前記システムに実行させる、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
著作権表示：
この特許文献の開示の一部は、著作権保護の対象となる題材を含んでいる。著作権の所有者は、特許商標庁の包袋または記録に掲載されるように特許文献または特許情報開示を誰でも複製できることに対して異議はないが、その他の点ではすべての如何なる著作権をも保有する。
【０００２】
発明の分野：
本発明は、一般的に、コンピュータシステムおよびソフトウェアに関し、特に、トランザクションシステムに関する。
【背景技術】
【０００３】
背景：
トランザクションミドルウェアシステムまたはトランザクション指向型ミドルウェアは、組織内のさまざまなトランザクションを処理することができるエンタープライズアプリケーションサーバを含む。高性能ネットワークおよびマルチプロセッサコンピュータなどの新技術の開発によって、トランザクションミドルウェアの性能をさらに改善する必要がある。これらは、本発明の実施形態が対処しようとする一般的領域である。
【発明の概要】
【課題を解決するための手段】
【０００４】
概要：
トランザクション環境においてトランザクション処理をサポートすることができるシステムおよび方法がこの明細書中に記載される。グローバルトランザクションのためのコーディネータは、トランザクション環境におけるグローバルトランザクションの１つ以上のパーティシパントに、リソースマネージャインスタンスについての共通のトランザクション識別子および情報を伝播（propagate）させるように動作する。コーディネータは、リソースマネージャインスタンスをコーディネータと共有している上記１つ以上のパーティシパントが共通のトランザクション識別子を用いることを可能にする。さらに、コーディネータは、１つのトランザクションブランチを用いて、リソースマネージャインスタンスを共有する上記１つ以上のパーティシパントのためにグローバルトランザクションを処理することができる。
【０００５】
トランザクション環境においてトランザクション処理をサポートすることができるシステムおよび方法がこの明細書中に記載される。トランザクションシステムは、リソースマネージャ（resource manager：ＲＭ）インスタンスに接続されているトランザクションサーバに要求をルーティングするように動作する。さらに、トランザクションシステムは、トランザクションサーバが関連付けられているＲＭインスタンスを示しているアフィニティコンテキスト（affinity context）をトランザクションサーバに割当てることができる。さらに、トランザクションシステムは、アフィニティコンテキストに基づいて、要求に関連する１つ以上の後続の要求をトランザクションサーバにルーティングすることができる。
【０００６】
トランザクション環境においてトランザクション処理をサポートすることができるシステムおよび方法がこの明細書中に記載される。トランザクションサーバは、１つ以上のＲＭインスタンスに関連付けられているデータソースからリソースマネージャ（ＲＭ）インスタンス情報を受信するように動作する。この場合、受信されたインスタンス情報は、トランザクションサーバが現在接続されているのがどのＲＭインスタンスであるかを当該トランザクションサーバが検知することを可能にする。さらに、トランザクションサーバは、受信されたインスタンス情報を、トランザクションサーバに関連付けられた１つ以上のテーブルに保存するように動作する。次いで、トランザクションサーバは、１つ以上のテーブルに保存されたインスタンス情報に基づいてグローバルトランザクションを処理することができる。
【図面の簡単な説明】
【０００７】
【図１】本発明の一実施形態に従った、トランザクション環境においてリソースマネージャ（ＲＭ）インスタンス検知をサポートする例を示す図である。
【図２】本発明の一実施形態に従った、トランザクション環境においてさまざまな状態テーブルを維持する例を示す図である。
【図３】本発明の一実施形態に従った、トランザクション環境においてサーバテーブル（server table：ＳＴ）をサポートする例を示す図である。
【図４】本発明の一実施形態に従った、トランザクション環境においてインスタンス情報を更新する例を示す図である。
【図５】本発明の一実施形態に従った、トランザクション環境においてさまざまなチェックポイントを用いてトランザクションプロセスをサポートする例を示す図である。
【図６】本発明の一実施形態に従った、トランザクション環境においてリソースマネージャ（ＲＭ）インスタンス検知をサポートするための例示的なフローチャートである。
【図７】本発明の一実施形態に従った、トランザクション環境におけるインスタンス検知に基づいてトランザクションアフィニティをサポートする例を示す図である。
【図８】本発明の一実施形態に従った、トランザクション環境におけるトランザクションアフィニティルーティングをサポートする例を示す図である。
【図９】本発明の一実施形態に従った、トランザクション環境においてアフィニティコンテキストを含むメッセージを送信する例を示す図である。
【図１０】本発明の一実施形態に従った、トランザクション環境においてアフィニティコンテキストを含むメッセージを受信する例を示す図である。
【図１１】本発明の一実施形態に従った、トランザクション環境においてクライアントコンテキスト内におけるアフィニティルーティングをサポートする例を示す図である。
【図１２】本発明の一実施形態に従った、トランザクション環境においてさまざまなドメインにわたってアフィニティコンテキストを伝播させる例を示す図である。
【図１３】本発明の一実施形態に従った、トランザクション環境においてアプリケーションサーバにアフィニティコンテキストを伝播させる例を示す図である。
【図１４】本発明の一実施形態に従った、トランザクション環境においてインスタンス検知に基づいてトランザクションアフィニティをサポートするための例示的なフローチャートである。
【図１５】本発明の一実施形態に従った、さまざまなトランザクション識別子（transaction identifier：ＸＩＤ）を用いて、トランザクション環境においてグローバルトランザクションを処理する例を示す図である。
【図１６】本発明の一実施形態に従った、共通のトランザクション識別子（ＸＩＤ）を用いてトランザクション環境においてグローバルトランザクションを処理する例を示す図である。
【図１７】本発明の一実施形態に従った、トランザクション環境においてデータベースインスタンス検知に基づいて１相コミット（one-phase commit：１ＰＣ）処理モデルをサポートする例を示す図である。
【図１８】本発明の一実施形態に従った、トランザクション環境においてデータベースインスタンス検知に基づいてグローバルトランザクションを処理する例を示す図である。
【図１９】本発明の一実施形態に従った、共通のＸＩＤを用いてトランザクション環境における複数のドメインにわたってグローバルトランザクションを処理する例を示す図である。
【図２０】本発明の一実施形態に従った、共通のＸＩＤを用いてトランザクション環境においてグローバルトランザクションを処理するための例示的なフローチャートである。
【発明を実施するための形態】
【０００８】
詳細な説明：
本発明は、同様の参照符号で同様の要素を示している添付の図面において、限定によってではなく例示によって説明されている。この開示における「ある」または「１つの」または「いくつかの」実施形態への言及は、必ずしも同じ実施形態に対するものではなく、そのような言及は「少なくとも１つ」という意味である。
【０００９】
以下の本発明の説明は、トランザクションミドルウェアマシン環境についての一例としてＴｕｘｅｄｏ環境を用いている。他のタイプのトランザクションミドルウェアマシン環境が限定なしに使用可能であることが当業者にとって明らかになるだろう。
【００１０】
トランザクションミドルウェアマシン環境などのトランザクション環境においてトランザクション処理をサポートすることができるシステムおよび方法がこの明細書中に記載される。
【００１１】
トランザクションミドルウェアマシン環境
本発明の一実施形態によれば、迅速に用意することができ且つオンデマンドで拡張することができる大規模並列処理インメモリグリッドを含むＪａｖａ（登録商標）ＥＥアプリケーションサーバ複合体を提供するために、当該システムは、６４ビットプロセッサ技術などの高性能ハードウェア、高性能大容量のメモリ、冗長インフィニバンド（InfiniBand）およびイーサネット（登録商標）ネットワーク、ならびにＷｅｂＬｏｇｉｃ（登録商標）スイートなどのアプリケーションサーバまたはミドルウェア環境の組合せを含む。一実施形態によれば、当該システムは、アプリケーションサーバグリッド、ストレージエリアネットワーク、およびインフィニバンド（ＩＢ）ネットワークを提供するフルラック、ハーフラックまたはクォーターラックもしくは他の構成として展開可能である。ミドルウェアマシンソフトウェアは、アプリケーションサーバ、ミドルウェアおよび他の機能、たとえば、ＷｅｂＬｏｇｉｃ  Ｓｅｒｖｅｒ、ＪＲｏｃｋｉｔもしくはＨｏｔｓｐｏｔ  ＪＶＭ、Ｏｒａｃｌｅ  Ｌｉｎｕｘ（登録商標）もしくはＳｏｌａｒｉｓ、およびＯｒａｃｌｅ（登録商標）  ＶＭなどを提供することができる。一実施形態によれば、当該システムは、ＩＢネットワークを介して互いに通信する複数の計算ノード、ＩＢスイッチゲートウェイ、およびストレージノードまたはストレージユニットを含むことができる。ラック構成として実装される場合、ラックの未使用部分は、空のままにしてもよく、充填物で充填されてもよい。
【００１２】
本発明の一実施形態によれば、当該システムは、ＯｒａｃｌｅミドルウェアＳＷスイートまたはＷｅｂＬｏｇｉｃなどのミドルウェアまたはアプリケーションサーバソフトウェアをホストするために、展開容易な解決案を提供する。本明細書に説明されるように、一実施形態に従ったシステムは、ミドルウェアアプリケーションをホストするために必要とされる１つ以上のサーバ、ストレージユニット、ストレージネットワーク用のＩＢファブリック、およびすべての他の要素を含む「グリッド・イン・ア・ボックス」（grid in a box）である。たとえば、リアルアプリケーションクラスタおよびＥｘａｌｏｇｉｃオープンストレージなどを使用する大規模並列グリッドアーキテクチャを活用することによって、すべての種類のミドルウェアアプリケーションに高い性能を提供することができる。このシステムは、線形Ｉ／Ｏ拡張性によって改善した性能を提供し、使用および管理が簡単であり、ミッションクリティカルな可用性および信頼性を提供する。
【００１３】
本発明の一実施形態に従うと、Ｏｒａｃｌｅ  Ｔｕｘｅｄｏシステムなどのトランザクションミドルウェアシステムは、Ｏｒａｃｌｅ  Ｅｘａｌｏｇｉｃミドルウェアマシンなど複数のプロセッサや、ＩＢネットワークなどの高性能ネットワーク接続を備えた高速マシンを利用することができる。付加的には、Ｏｒａｃｌｅ  Ｔｕｘｅｄｏシステム（単に「Ｔｕｘｅｄｏ」とも称する）は、キャッシュアーキテクチャが共有されているクラスタ化されたデータベースであるＯｒａｃｌｅのリアルアプリケーションクラスタ（Real Application Clusters：ＲＡＣ）エンタープライズデータベースなどのクラスタ化されたデータベースを利用することができ、かつ、クラウドアーキテクチャのコンポーネントにもなり得る。Ｏｒａｃｌｅ  ＲＡＣは、従来のシェアド・ナッシング・アプローチおよびシェアド・ディスク・アプローチの制限事項を克服して、ビジネス用途で使用できるように高度に拡張可能かつ利用可能なデータベースソリューションを提供することができる。
【００１４】
本発明の一実施形態によれば、Ｏｒａｃｌｅ  Ｔｕｘｅｄｏシステムは、高性能分散型ビジネスアプリケーションの構築、実行および管理を可能にするソフトウェアモジュールのセットであり、トランザクションミドルウェアとして多くの複層アプリケーション開発ツールに使用されてきた。Ｔｕｘｅｄｏは、分散コンピューティング環境において分散トランザクション処理を管理するために使用することができるミドルウェアプラットフォームである。Ｔｕｘｅｄｏは、無制限の拡張性および標準ベースの相互運用性を提供しながら、エンタープライズレガシーアプリケーションのロックを解除し、エンタープライズレガシーアプリケーションをサービス指向アーキテクチャに拡張するための有効なプラットフォームである。
【００１５】
付加的には、Ｏｒａｃｌｅ  Ｔｕｘｅｄｏシステムは、言語国際化のための、２相コミット（two-phase commit：２ＰＣ）処理のためのＸＡ基準と、Ｘ／Ｏｐｅｎ  ＡＴＭＩ  ＡＰＩと、Ｘ／Ｏｐｅｎ  Ｐｏｒｔａｂｉｌｉｔｙ  Ｇｕｉｄｅ（ＸＰＧ）基準とについてのサポートを含む、オープングループのＸ／Ｏｐｅｎ基準に準拠し得る。トランザクションアプリケーションサーバは、ＸＡ基準を用いる場合にはＸＡサーバと称されてもよい。たとえば、Ｔｕｘｅｄｏグループに属する各々のＴｕｘｅｄｏアプリケーションサーバは、ＯＰＥＮＩＮＦＯ特性を用いて構成することができる。ＴｕｘｅｄｏグループにおけるＸＡサーバはすべて、ＯＰＥＮＩＮＦＯ特性を用いてリソースマネージャ（resource manager：ＲＭ）への接続を確立することができる。
【００１６】
インスタンス検知（Instance Awareness）
図１は、本発明の一実施形態に従った、トランザクション環境においてリソースマネージャ（ＲＭ）インスタンス検知をサポートする例を示す。図１に示されるように、トランザクション環境１００におけるトランザクションシステム１０１は、データベースなどのデータソース１０２に関連付けられた１つ以上のリソースマネージャ（ＲＭ）インスタンスを用いて、トランザクション処理をサポートすることができる。
【００１７】
本発明の一実施形態に従うと、トランザクションシステム１０１は、データソース１０２におけるＲＭインスタンス情報１０４を検知することができる。たとえば、トランザクションシステム１０１におけるトランザクションサーバ１０３は、ユーザコールバック１１０を利用することによってデータソース１０２からＲＭインスタンス情報１０４を取得することができる。トランザクションシステム１０１は、ユーザコールバック１１０を登録するためのさまざまなメカニズム、たとえば静的登録メカニズムおよび動的登録メカニズム、を用いることができる。
【００１８】
静的登録メカニズムは、ＸＡサーバをサポートする場合に用いることができる。ＸＡサーバは、一様なＸＡインターフェイスを用いてトランザクションを制御するサーバである。たとえば、Ｔｕｘｅｄｏにおいては、静的な登録は、ｘａ＿ｏｐｅｎ（）関数が呼出された後に、ｔｐｏｐｅｎ（）関数で呼出すことができる。登録が成功すると、トランザクションサーバ１０３がデータベース（たとえばＯｒａｃｌｅデータベース）への接続を確立したとき、ユーザコールバック１１０が呼出し可能となる。付加的には、ユーザコールバック１１０は、ｘａ＿ｃｌｏｓｅ（）関数が呼出される前に、ｔｐｃｌｏｓｅ（）関数で登録解除することができる。
【００１９】
代替的には、トランザクションサーバ１０３は、たとえば、データソース１０２に関連付けられた共有ライブラリ１０５に基づいてユーザコールバック１１０を動的に登録することができる。たとえば、Ｔｕｘｅｄｏは、ユーザが非ＸＡサーバを用いて（たとえばＯＣＩまたはＰｒｏ＊ｃ／ｃ＋＋によって）Ｏｒａｃｌｅデータベースに接続したときに、動的にコールバックを登録することができる。Ｔｕｘｅｄｏは、最初に、Ｏｒａｃｌｅ  ＯＣＩライブラリＯＣＩ  ＡＰＩを動的にロードして、関連するＯＣＩ環境ハンドルを取得することができる。次いで、Ｔｕｘｅｄｏは、ＯＣＩＳｅｓｓｉｏｎＢｅｇｉｎ関数で、ＯＣＩＵｓｅｒＣａｌｌｂａｃｋＲｅｇｉｓｔｅｒによってユーザコールバックを登録することができる。
【００２０】
図１に示されるように、システムは、トランザクションサーバ１０３に関連付けられた関連するコンテキスト１０６に、取得したインスタンス情報１０４を保存することができる。加えて、トランザクションサーバ１０３は、インスタンス情報１０４を共有メモリ１０７におけるさまざまな状態テーブル１０８（たとえば、Ｔｕｘｅｄｏにおけるグローバルな掲示板（bulletin board：ＢＢ）に記憶することができる。これらのテーブル１０８は、さまざまなノードに同期させることができ、複数のトランザクションサーバ（たとえば、サーバ１１１−１１２）および／またはネイティブ（native）クライアントによってアクセス可能である。
【００２１】
図２は、本発明の一実施形態に従った、トランザクション環境においてさまざまな状態テーブルを維持する例を示す。図２に示されるように、トランザクションシステム２００はインスタンス情報２２０を共有メモリ２０１におけるさまざまな状態テーブルに記憶することができる。
【００２２】
これらの状態テーブルは、固有のＲＭ／データベース名を記憶するリソースマネージャテーブル２１１、ＲＭ／データベースインスタンス名を記憶するインスタンステーブル２１２、およびＲＭ／データベースサービス名を記憶するサービステーブル２１３を含み得る。このような情報により、他のサーバが特定のサーバに関連付けられたインスタンス情報を検知するのが容易になり得る。
【００２３】
加えて、トランザクションシステム２００は共有メモリ２０１におけるサーバテーブル（ＳＴ）２１４を維持することができる。ＳＴ２１４は、１つ以上のサーバテーブルエントリ（server table entry：ＳＴＥ）を含んでいてもよく、その各々はインスタンステーブル２１２にインデックスを記憶することができる。たとえば、各々のＳＴＥは、サーバがシングルスレッドサーバである場合にインスタンス識別子（instance identifier：ＩＤ）を記憶することができる。
【００２４】
図２に示されるように、サーバテーブル２１４は、共有メモリ２０１内の他のテーブル２１１−２１３を指し示すことができる。このため、トランザクションシステム２００は、インスタンス情報（特定のサーバが現在接続されているＲＭインスタンスについての情報など）を取得するためにサーバテーブル２１４を用いることができ、トランザクションシステム２００は、さまざまな状態テーブル２１１−２１３に直接記憶されているインスタンス情報を用いない可能性もある。
【００２５】
図３は、本発明の一実施形態に従った、トランザクション環境においてサーバテーブル（ＳＴ）をサポートする例を示す。図３に示されるように、トランザクションシステム３００におけるサーバテーブル（ＳＴ）３１０は、１つ以上のサーバテーブルエントリ（ＳＴＥ）３１１−３１２を含み得る。サーバテーブルエントリ（ＳＴＥ）３１１−３１２の各々は１つ以上のインスタンス識別子（ＩＤ）を含み得る。たとえば、ＳＴＥ３１１はインスタンスＩＤ３２１−３２２を含み得る。ＳＴＥ３１２はインスタンスＩＤ３２３−３２４を含み得る。
【００２６】
本発明の一実施形態に従うと、各々のインスタンスＩＤ３２１−３２４はさまざまなインスタンス情報を含み得る。図３に示されるように、インスタンスＩＤ３２２はインスタンス名３０１、データベース名３０２およびサービス名３０３を識別することができる。
【００２７】
たとえば、インスタンスＩＤは、整数（たとえば、ビット０−１１、ビット１２−１９およびビット２０−３１という３つのセクションを含む３２ビット整数）を用いて実現することができる。第１のセクションであるビット０−１１は、ＲＭ／データベースインスタンス名３０１についてのエントリインデックスを記憶することができる。第２のセクションであるビット１２−１９は、ＲＭ／データベース名３０２についてのエントリインデックスを記憶することができる。第３のセクションであるビット２０−３１は、ＲＭ／データベースサービス名３０３についてのエントリインデックスを記憶することができる。加えて、無効なインスタンスＩＤを示すために特別の値０ｘＦＦＦＦＦＦＦＦを用いることができる。
【００２８】
本発明の一実施形態に従うと、トランザクションシステム３００は、関連するビット同士を単純に比較することによってインスタンスＩＤ３２２におけるインスタンス情報をチェックすることができる。これにより、システムは、ストリング比較動作の方がビット比較動作よりも費用がかかるせいで生じる、ストリング比較による性能の問題を回避することができる。
【００２９】
図４は、本発明の一実施形態に従った、トランザクション環境においてインスタンス情報を更新する例を示す。図４に示されるように、トランザクション環境４００におけるトランザクションシステム４０１は、たとえばデータベースにおけるリソースマネージャ（ＲＭ）４０２から、関連するインスタンス情報４０４を取得することができる。
【００３０】
ユーザコールバック４１０が呼出されると、最新のインスタンス情報４０４をＲＭ４０２から検索することができ、コンテキスト４０５に記憶することができる。加えて、トランザクションシステム４０１は、最新のインスタンス情報４０４を受信したことを示すフラグ４０９を設定することができる。
【００３１】
本発明の一実施形態に従うと、トランザクションプロセス４０３は１つ以上のチェックポイントで構成することができる。たとえば、チェックポイントは、サービス呼出しの前後、および初期化ルーチンの後にトリガすることができる。また、接続が確立されるか中断されたときにチェックポイントをトリガすることができる。
【００３２】
図４に示されるように、チェックポイント４０８において、トランザクションプロセス４０３がフラグ４０９をチェックすることができる。フラグ４０９が上がっていれば、トランザクションサーバ４０３は、検索されたインスタンス情報４０４に基づいてトランザクションコンテキスト４０７を更新し、検索されたインスタンス情報４０４を（共有メモリにおける）状態テーブル４０６に記憶することができる。
【００３３】
図５は、本発明の一実施形態に従った、トランザクション環境においてさまざまなチェックポイントを用いてトランザクションプロセスをサポートする例を示す。図５に示されるように、ステップ５０１において、トランザクションプロセスが開始される。次いで、トランザクションプロセスは、ステップ５０２において初期化プロセスに進み得る。
【００３４】
初期化プロセス５０２は、１つ以上のインスタンスチェックポイント、たとえばチェックポイント５１０、を含み得る。たとえば、Ｔｕｘｅｄｏにおいて、動的な登録が用いられる場合、チェックポイント５１０は、初期化ルーチン（たとえば、ｔｐｓｖｒｉｎｉｔ）の後にサーバのスタートアップルーチンに配置されていてもよい。また、サーバがＲＭへの接続を確立しようと試みる場合（たとえば、ｘａ＿ｏｐｅｎ（）関数呼出しが、ｔｐｏｐｅｎ（）関数呼出しでの呼出しに成功した後）、チェックポイント５１０をトリガすることができる。
【００３５】
加えて、ステップ５１２において、トランザクションプロセスは、初期化プロセス５０２中に、インスタンス検知能力を使用可能にするためにインスタンス情報を検索することができる。
【００３６】
さらに、ステップ５０３において、トランザクションプロセスは、サービス要求があるかどうかをチェックすることができる。ステップ５０５において、トランザクションプロセスはサービスディスパッチャ、たとえば、ｔｍｓｖｃｄｓｐ（）、を呼出すことができる。図５に示されるように、サービスルーチン５０７が要求メッセージを処理するために呼出される前にチェックポイント５０６をトリガすることができる。加えて、サービスルーチン５０７が完了した後、別のチェックポイント５０８をトリガすることができる。ステップ５０９において、トランザクションプロセスはサービスディスパッチャを終了させることができる。
【００３７】
それ以外の場合には、サービス要求がなくてトランザクションプロセスが遮断されるべきであれば、ステップ５０４において、トランザクションプロセスはシャットダウン処理５１１を開始することができる。シャットダウンプロセス５１１では、チェックポイント５１３をトリガしてインスタンスＩＤ情報をクリーンにすることができる。たとえば、Ｔｕｘｅｄｏにおいて、サーバがＲＭへの接続を閉鎖しようとする場合（たとえば、ｘａ＿ｃｌｏｓｅ（）関数呼出しがｔｐｃｌｏｓｅ（）関数呼出しで呼出される前）に、チェックポイント５１３をトリガすることができる。最後に、トランザクションプロセスがステップ５１４において終了する。
【００３８】
本発明の一実施形態に従うと、システムは、動的な登録ではなく静的な登録を用いる場合、チェックポイント５１２およびチェックポイント５１３におけるのとは異なるやり方で動作する可能性もある。イニシエータをチェックすることなく、直接、インスタンス情報を検索して更新することができる。たとえば、静的な登録が用いられる場合、ＸＡサーバは、ｔｐｏｐｅｎ（）／ｔｐｃｌｏｓｅ（）関数呼出しを用いて、ＲＭへの接続を確立／削除することができる。また、ｔｐｏｐｅｎ（）関数は、カスタマイズされたｔｐｓｖｒｉｎｉｔ（）関数呼出しで呼出すことができ、ｔｐｃｌｏｓｅ（）関数は、カスタマイズされたｔｐｓｖｒｄｏｎｅ（）関数で呼出すことができる。
【００３９】
図６は、本発明の一実施形態に従った、トランザクション環境においてリソースマネージャ（ＲＭ）インスタンス検知をサポートするための例示的なフローチャートを示す。図６に示されるように、ステップ６０１において、トランザクションサーバは、１つ以上のＲＭインスタンスに関連付けられたリソースソースからリソースマネージャ（ＲＭ）インスタンス情報を受信することができる。この場合、受信されたインスタンス情報により、トランザクションサーバが現在接続されているのがどのＲＭインスタンスであるかを当該トランザクションサーバが検知することが可能となる。次いで、ステップ６０２において、システムは、受信されたインスタンス情報を、トランザクションサーバに関連付けられた１つ以上のテーブルに保存することができる。さらに、ステップ６０３において、システムは、トランザクションサーバが、１つ以上のテーブルに保存されたインスタンス情報に基づいてグローバルトランザクションを処理することを可能にする。
【００４０】
トランザクションアフィニティ
図７は、本発明の一実施形態に従った、トランザクション環境におけるインスタンス検知に基づいてトランザクションアフィニティをサポートする例を示す。図７に示されるように、トランザクション環境７００は、１つ以上のリソースマネージャ（ＲＭ）（たとえばデータベース７０４に関連付けられたＲＭインスタンス７０２）を用いて、グローバルトランザクション７１０の処理をサポートすることができる。
【００４１】
トランザクションシステム７０１は、（たとえば、デフォルトのルーティングポリシーを用いて）トランザクションサーバ７０３に対してデータベース接続についての要求７１１をルーティングすることができる。加えて、システムは、トランザクションサーバ７０３にアフィニティコンテキスト７０５を割当てることができる。ＲＭインスタンス７０２を識別する情報を含むアフィニティコンテキスト７０５は、共有メモリ（たとえば、Ｔｕｘｅｄｏにおけるグローバルトランザクションテーブル（global transaction table：ＧＴＴ））に記憶可能であり、メッセージを用いて伝播させることができる。たとえば、トランザクションサーバ７０３は、上述のインスタンス検知特徴に基づいて、アフィニティコンテキスト７０５を介して、ＲＭインスタンス名、ＲＭ／データベース名およびＲＭ／データベースサービス名を取得することができる。
【００４２】
さらに、後続の要求７１２は、アフィニティコンテキスト７０５に基づいてトランザクションサーバ７０３にルーティングすることができる。加えて、他の後続の要求もまた、グローバルトランザクション７１０が完了する（かまたはクライアントコンテキストが終了する）まで、ＲＭインスタンス７０２に接続されたトランザクションサーバ７０３にルーティングすることができる。
【００４３】
本発明の一実施形態に従うと、トランザクションアフィニティにより、ＲＭインスタンス７０２に接続されている関連するデータベース要求７１１−７１２を、確実に、同じトランザクションサーバ７０３にルーティングすることができるようになる。こうして、トランザクションアフィニティはデータベースクラスタを最大限に活用することによってアプリケーション性能を向上させることができる。なぜなら、トランザクションアフィニティは、キャッシュヒットの可能性を増大させることによってデータベース性能を向上させることができるからである。
【００４４】
本発明の一実施形態に従うと、システムは、グローバルトランザクション７１０を実行するための他のルーティングポリシーと共にトランザクションアフィニティルーティングポリシーを適用することができる。たとえば、以下のルーティング優先順位は、Ｔｕｘｅｄｏでサポートすることができる。
【００４５】
１．ドメインのためのトランザクション優先順位ルーティング
２．クライアント／サーバアフィニティルーティング
３．トランザクションアフィニティルーティング
４．サービスロードに従ったロードバランシング
図８は、本発明の一実施形態に従った、トランザクション環境におけるトランザクションアフィニティルーティングをサポートする例を示す。図８に示されるように、トランザクションシステムは、トランザクションアフィニティルーティングポリシーを用いて、グローバルトランザクションの処理をサポートすることができる。
【００４６】
ステップ８０１において、システムは、データベース接続を含むトランザクション要求を受信することができる。次いで、ステップ８０２において、システムは、既存のアフィニティコンテキストがあるかどうかをチェックすることができる。
【００４７】
グローバルトランザクションにおいてアフィニティコンテキストが含まれない場合、システムは、ステップ８０９において、ロードバランシングルーティングを実行することができる。
【００４８】
グローバルトランザクションに既存のアフィニティコンテキストが含まれている場合、システムは、サーバを発見するためにトランザクションアフィニティルーティングポリシーを適用することができる。
【００４９】
ステップ８０３において、システムは、同じインスタンス名、同じデータベース（database：ＤＢ）名および同じサービス名に関連付けられたサーバを発見しようと試みてもよい。
【００５０】
システムがサーバを発見することができない場合、ステップ８０４において、システムは、同じＤＢ名および同じサービス名に関連付けられておりかつ現在のグローバルトランザクションには含まれないグループにあるサーバを発見しようと試みてもよい。
【００５１】
システムがサーバを発見することができない場合、ステップ８０５において、システムは、同じＤＢ名および同じインスタンス名に関連付けられたサーバを発見しようと試みてもよい。
【００５２】
トランザクションシステムがサーバを発見することができない場合、ステップ８０６において、システムは、同じＤＢ名に関連付けられたサーバを発見しようと試みてもよい。
【００５３】
ステップ８０７において、システムは、既存のアフィニティコンテキストに基づいてサーバを発見することができるかもしれない。他方では、ステップ８０８において、システムはサーバを発見することができないかもしれない。次いで、ステップ８０９において、システムは、ロードバランシングルーティングに従ってサーバを発見しようと試みることができる。
【００５４】
図９は、本発明の一実施形態に従った、トランザクション環境においてアフィニティコンテキストを含むメッセージを送信する例を示す。図９に示されるように、トランザクションシステム９０１はトランザクション環境９００におけるトランザクション処理をサポートすることができる。さらに、トランザクションシステム９０１におけるトランザクションサーバ９０３は、トランザクションコンテキスト９０７（たとえば、ＴｕｘｅｄｏにおけるＴＵＸＣ）に基づいてトランザクション処理をサポートすることができる。
【００５５】
図９に示されるように、トランザクションサーバ９０３は、共有メモリ９０２から関連するアフィニティコンテキスト９０４（たとえば、ＴｕｘｅｄｏにおけるＧＴＴ）を取得することができ、関連するアフィニティコンテキスト９１４を用いてトランザクションコンテキスト９０７を更新することができる。チェックポイント９０８がトリガされると、システムは、関連するアフィニティコンテキスト９１４を、トランザクションコンテキスト９０７からメッセージキュー９０５内のメッセージ９０６にコピーすることができる。
【００５６】
これにより、トランザクションシステム９０１は、サービスにメッセージに９０６を送信する前に、サービスルーティングのために、トランザクションコンテキスト９０７における関連するアフィニティコンテキスト９１４を参照することができる。
【００５７】
図１０は、本発明の一実施形態に従った、トランザクション環境においてアフィニティコンテキストを含むメッセージを受信する例を示す。図１０に示されるように、トランザクション環境１０００におけるトランザクションシステム１００１は、メッセージキュー１００５を用いて、１つ以上のメッセージ（たとえば、メッセージ１００６）を受信することができる。
【００５８】
トランザクションシステム１００１におけるトランザクションサーバ１００３は、最初のブート後に連続的に（要求を含む）メッセージをデキューすることができる。図１０に示されるように、トランザクションサーバ１００３はメッセージキュー１００５からメッセージ１００６を読出すことができ、メッセージ１００６内のサービス要求を処理する。
【００５９】
サービス要求の処理中に、システムは、アフィニティコンテキストをメッセージ１００６からトランザクションコンテキスト１００７にコピーするためのチェックポイント１００８をトリガすることができる。次いで、システムは、トランザクションコンテキスト１００７内のアフィニティコンテキスト１０１４を用いて、共有メモリ１００２内のアフィニティコンテキスト１００４を更新することができる。
【００６０】
メッセージ１００６内の要求が処理されると、トランザクションサーバ１００３は、メッセージキュー１００５からより多くのメッセージを読出すことができる。そうでない場合、トランザクションサーバ１００３は、次の要求が到達するまで、メッセージキュー１００５上で待機することができる。
【００６１】
図１１は、本発明の一実施形態に従った、トランザクション環境においてクライアントコンテキスト内におけるアフィニティルーティングをサポートする例を示す。図１１に示されるように、トランザクション環境１１００におけるトランザクションシステム１１０１は、１つ以上のリソースマネージャ（ＲＭ）（たとえばデータベース１１０４に関連付けられるＲＭインスタンス１１０２）を用いて、クライアントコンテキスト１１１０におけるトランザクション処理をサポートすることができる。たとえば、クライアントコンテキスト１１１０内では、ウェブ会話は回数ごとに接続したり遮断したりすることができる。これらの各々の接続中、会話は、ショッピングカートなどの同じ（または同様の）データに対する参照および／またはアクセスを実行してもよい。
【００６２】
本発明の一実施形態に従うと、システムは、（たとえば、デフォルトのルーティングポリシーに基づいて）トランザクションサーバ１１０３に対してデータベース接続についての要求１１１１をルーティングすることができる。加えて、システムは、ＲＭ１１０２を示すアフィニティコンテキスト１１０５をトランザクションサーバ１１０３に割当てることができる。
【００６３】
さらに、クライアントコンテキスト１１１０内の１つ以上の後続の要求（たとえば、要求１１１２）は、クライアントコンテキスト１１１０が終了するかまたは関連するトランザクションが完了するまで、アフィニティコンテキスト１１０５に基づいてトランザクションサーバ１１０３にルーティングすることができる。これにより、トランザクションシステム１１０１は、クライアントコンテキスト１１１０内のさまざまなデータベース動作を同じＲＭインスタンス１１０２に方向付けることを確実にすることができる。
【００６４】
本発明の一実施形態に従うと、トランザクションシステム１１０１は、クライアントコンテキスト１１１０内のアフィニティを暗示しているさまざまなロードバランスアドバイザリイベントをデータベースから受信することができる。たとえば、Ｔｕｘｅｄｏにおいては、データベースから受信されたロードバランシングアドバイザリイベントは、パラメータであるＡＦＦＩＮＩＴＹ  ＨＩＮＴを含み得る。これは、アフィニティが特定のインスタンスとサービスとの組合せに対してアクティブとなるかまたはイナクティブとなるかどうかを示すフラグである。ＡＦＦＩＮＩＴＹ  ＨＩＮＴパラメータは、ウェブセッションの期間中継続する一時的なアフィニティであって、サービスに対して目標を設定することによってロードバランシングアドバイザリが使用可能になると、自動的に使用可能にすることができる。加えて、同じサービスを提供するさまざまなインスタンスは、ＡＦＦＩＮＩＴＹ  ＨＩＮＴについてのさまざまな設定を有し得る。
【００６５】
本発明の一実施形態に従うと、トランザクションシステム１１０１は、関連するデータベース動作がトランザクション内にある場合には、クライアントコンテキストベースのアフィニティポリシーではなく、トランザクションアフィニティルーティングポリシーを適用してもよい。他方では、システムは、デフォルトのｔｕｘｅｄｏロードバランスルートポリシーに基づいて、クライアントコンテキストベースのアフィニティルーティングポリシーを実現することができる。
【００６６】
図１２は、本発明の一実施形態に従った、トランザクション環境におけるさまざまなドメインにわたってアフィニティコンテキストを伝播させる例を示す。図１２に示されるように、トランザクション環境１２００は、１つ以上のリソースマネージャ（ＲＭ）、たとえばデータベース１２１５に関連付けられたＲＭインスタンス１２０５、を用いてトランザクション処理をサポートすることができる。
【００６７】
本発明の一実施形態に従うと、システムは、（たとえば、デフォルトのルーティングポリシーを用いて）トランザクションサーバ１２０３に対してデータベース接続についての要求１２１１をルーティングすることができる。加えて、システムは、ＲＭインスタンス１２０２を示すアフィニティコンテキスト１２０７をトランザクションサーバ１２０３に割当てることができる。
【００６８】
さらに、トランザクション環境１２００におけるトランザクションドメインは、要求１２１１がさまざまなドメイン間で転送されるべきである場合、ドメインにわたってアフィニティコンテキスト情報を伝播させることができる。
【００６９】
図１２に示されるように、トランザクションドメイン１２０１は、アフィニティコンテキスト１２０７をアフィニティキーストリング１２０８に変換してから、このアフィニティキーストリング１２０８をリモートドメイン１２０２に送信することができる。アフィニティキーストリング１２０８を受信した後、トランザクションドメイン１２０２は、アフィニティキーストリング１２０８を、トランザクションドメイン１２０２においてトランザクションサーバ１００４が使用可能なアフィニティコンテキスト１２０６に変換することができる。
【００７０】
これにより、１つ以上の後続の要求（たとえば、要求１２１２）をアフィニティコンテキスト１２０６に基づいてＲＭインスタンス１２０２に方向付けることができる。
【００７１】
図１３は、本発明の一実施形態に従った、トランザクション環境においてアプリケーションサーバにアフィニティコンテキストを伝播させる例を示す。図１３に示されるように、トランザクション環境１３００におけるトランザクションシステム１３０１は、１つ以上のリソースマネージャ（ＲＭ）（たとえばデータベース１３１５に関連付けられたＲＭインスタンス１３０５）を用いて、トランザクション処理をサポートすることができる。
【００７２】
本発明の一実施形態に従うと、システムは、（たとえば、デフォルトのルーティングポリシーを用いて）トランザクションサーバ１３０３に対してデータベース接続についての要求１３１１をルーティングすることができる。加えて、システムは、ＲＭインスタンス１３０５を示すアフィニティコンテキスト１３０７をトランザクションサーバ１３０３に割当てることができる。
【００７３】
さらに、トランザクションシステム１３０１（たとえば、Ｔｕｘｅｄｏ  ＴＤｏｍａｉｎ）は、アフィニティキーストリング１３０８を介して、アプリケーションサーバ１３０２（たとえばＷｅｂＬｏｇｉｃアプリケーションサーバ）にアフィニティコンテキスト１３０７情報を伝播させることができる。たとえば、アフィニティコンテキスト１３０７は、コネクタ１３０４（たとえばＴｕｘｅｄｏ  ＷＴＣ）を介してトランザクションシステム１３０１とアプリケーションサーバ１３０２との間でやり取りすることができる。
【００７４】
トランザクションシステム１３０１がコネクタ１３０４に要求を送信すると、トランザクションシステム１３０１はアフィニティコンテキスト１３０７をアフィニティキーストリング１３０８に変換することができる。コネクタ１３０４がトランザクションシステム１３０１から要求を受信すると、コネクタ１３０６は、アフィニティキーストリング１３０８を、アプリケーションサーバ１３０２が使用可能なトランザクションコンテキスト１３０６に変換することができる。
【００７５】
コネクタ１３０４がトランザクションシステム１３０１に要求を送信すると、コネクタ１３０４は、アプリケーションサーバ１３０２に関連付けられたトランザクションコンテキスト１３０６からアフィニティコンテキストを取得することができる。トランザクションシステム１３０１がコネクタ１３０４から要求を受信すると、トランザクションシステム１３０１は、アフィニティキーストリング１３０８をアフィニティコンテキスト１３０７に変換することができる。
【００７６】
これにより、アプリケーションサーバ１３１２における１つ以上の後続の要求（たとえば要求１３１２）を、アフィニティコンテキスト１３０５に基づいてＲＭインスタンス１３０２に方向付けることができる。
【００７７】
図１４は、本発明の一実施形態に従った、トランザクション環境においてインスタンス検知に基づいてトランザクションアフィニティをサポートするための例示的なフローチャートを示す。図１４に示されるように、ステップ１４０１において、システムは、リソースマネージャ（ＲＭ）インスタンスに接続されているトランザクションサーバに要求をルーティングすることができる。次いで、ステップ１４０２において、システムは、トランザクションサーバが関連付けられているＲＭインスタンスを示しているアフィニティコンテキストをトランザクションサーバに割当てることができる。さらに、ステップ１４０３において、システムは、要求に関連する１つ以上の後続の要求を、アフィニティコンテキストに基づいて、トランザクションサーバにルーティングすることができる。
【００７８】
共通のトランザクション識別子（ＸＩＤ）
図１５は、本発明の一実施形態に従った、さまざまなトランザクション識別子（ＸＩＤ）を用いて、トランザクション環境においてグローバルトランザクションを処理する例を示す。図１５に示されるように、トランザクションシステム１５００は、さまざまなリソースマネージャ（ＲＭ）インスタンス（たとえば、データベース１５０６に接続するＲＭインスタンス１５０４−１５０５）を用いて、グローバルトランザクション１５１０の処理をサポートすることができる。
【００７９】
本発明の一実施形態に従うと、グローバルトランザクション１５１０はグローバルトランザクション識別子（global transaction identifier：ＧＴＲＩＤ１５２０）に関連付けることができる。グローバルトランザクション１５１０内では、同じグループ内にある関連するトランザクションサーバは１つのトランザクションブランチを共有することができ、別々のグループにおけるトランザクションサーバはそれぞれ別々のトランザクションブランチを用いてもよい。
【００８０】
図１５に示されるように、トランザクションシステム１５００は、グローバルトランザクション１５１０を処理するために複数のブランチ（たとえばブランチＡ１５１２−Ｃ１５２３）を用いてもよい。ブランチＡ１５２１−Ｃ１５２３の各々をブランチ修飾子（たとえばＢＱＵＡＬ  Ａ１５３１−Ｃ１５３３）に関連付けることもできる。
【００８１】
本発明の一実施形態に従うと、トランザクションシステム１５００は、さまざまなブランチＡ１５２１−Ｃ１５２３上でのグローバルトランザクション１５１０の処理を管理するために、さまざまなトランザクションマネージャ（transactional manager：ＴＭ）（たとえば、ＴＭ  Ａ１５０１−ＴＭ  Ｃ１５０３）を用いることができる。
【００８２】
たとえば、ＴＭ  Ａ１５０１はトランザクション識別子（ＸＩＤ）Ａ１５１１に関連付けられており、ブランチＡ１５２１上でのグローバルトランザクション１５１０の処理を管理するための役割を果たし得る。ＴＭ  Ｂ１５０２はトランザクション識別子（ＸＩＤ）Ｂ１５１２に関連付けられており、ブランチＢ１５２２上でのグローバルトランザクション１５１０の処理を管理するための役割を果たし得る。ＴＭ  Ｃ１５０３は、トランザクション識別子（ＸＩＤ）Ｃ１５１３に関連付けられており、ブランチＣ１５２３上でのグローバルトランザクション１５１０の処理を管理するための役割を果たし得る。
【００８３】
図１５に示されるように、グローバルトランザクション１５１０におけるさまざまなブランチＡ１５２１−Ｃ１５２３のためのＸＩＤ  Ａ１５１１−ＸＩＤ  Ｃ１５１３は、同じＧＴＲＩＤ１５２０（およびフォーマットＩＤ）を共有することができ、かつ、さまざまなブランチ修飾子（すなわちＢＱＵＡＬ  Ａ１５３１−ＢＱＵＡＬ  Ｃ１５３３）を有していてもよい。
【００８４】
本発明の一実施形態に従うと、システムは、トランザクションサーバの２つ以上のグループがグローバルトランザクション１５１０に含まれている場合、グローバルトランザクション１５１０上において２相コミット（２ＰＣ）プロセスを呼出すことができる。
【００８５】
図１５に示されるように、システムは、グローバルトランザクション１５１０におけるさまざまな参加トランザクショングループ（たとえば、ＴＭ  Ａ１５０１−ＴＭ  Ｂ１５０２）が、実際に同じＲＭインスタンス１５０４に関連付けられている場合であっても、グローバルトランザクション１５１０を処理するために２ＰＣモデルを用いる可能性がある。
【００８６】
本発明の一実施形態に従うと、システムは、２つ以上のグループが同じリソースマネージャインスタンス１５０４上で実行されている場合に、共通のＸＩＤを用いることによってグローバルトランザクション１５１０を処理する性能を向上させることができる。
【００８７】
図１６は、本発明の一実施形態に従った、共通のＸＩＤを用いてトランザクション環境におけるグローバルトランザクションを処理する例を示す。図１６に示されるように、トランザクションシステム１６００は、データベース１６０６に接続するリソースマネージャ（ＲＭ）インスタンス１６０４−１６０５を用いて、ＧＲＴＩＤ１６２０に関連付けられたグローバルトランザクション１６１０の処理をサポートすることができる。
【００８８】
さらに、トランザクションシステム１６００は、さまざまなトランザクショングループ（たとえば、ブランチＡ１６２１−Ｃ１６２３）におけるさまざまなトランザクションアプリケーションサーバ上でグローバルトランザクション１６１０の処理を管理するためにトランザクションマネージャ（ＴＭ）Ａ１６０１−Ｃ１６０３を用いることができる。
【００８９】
本発明の一実施形態に従うと、リソースマネージャ（ＲＭ）１６０４−１６０５の各々は、たとえばデータベース名、サーバ名およびインスタンス名に基づいて固有に識別することができる。トランザクションシステム１６００におけるトランザクションサーバは、データベースインスタンス検知能力に基づいて、それが現在接続しているのがどのＲＭインスタンスであるかを検知することができる。
【００９０】
図１６に示されるように、トランザクションシステム１６００はＴＭ  Ａ１６０１などのコーディネータを含み得る。コーディネータＴＭ  Ａ１６０１は、ＲＭインスタンス１６０４を識別するインスタンスＩＤ１６４１に関連付けられている。
【００９１】
加えて、グローバルトランザクション１６１０は、コーディネータ１６０１がリモートサーバノードにおいて配置されているかまたは配置され得るローカルサーバノード上に位置し得る１つ以上の参加サーバ（たとえば、パーティシパントＴＭ  Ｂ１６０２−ＴＭ  Ｃ１６０３）を含み得る。パーティシパントＴＭ  Ｂ１６０２−ＴＭ  Ｃ１６０３の各々はまた、それら各々が接続しているＲＭインスタンスを識別するインスタンスＩＤ（たとえば、インスタンスＩＤ１６４２−ＩＤ１６４３）に関連付けることもできる。
【００９２】
本発明の一実施形態に従うと、グローバルトランザクション１６１０を処理するために共通のＸＩＤ特徴が使用可能になると、コーディネータＴＭ  Ａ１６０１についてのＸＩＤ１６１１はグローバルトランザクション１６１０内で共有可能となる（すなわち、ＸＩＤ１６１１が共通のＸＩＤとして用いられる）。これにより、複数のグループを含み、Ｏｒａｃｌｅデータベースなどのクラスタ化されたデータベース上で実行されるトランザクションアプリケーションは、データベースインスタンス検知を利用することによってトランザクション性能を向上させることができる。
【００９３】
図１６に示されるように、グローバルトランザクション１６１０のためのコーディネータＴＭ  Ａ１６０１は、グローバルトランザクション１６１０のライフサイクル内で、ＸＩＤ１６１１およびインスタンスＩＤ１６４１などのさまざまなタイプの情報をさまざまなパーティシパントＴＭ  Ｂ１６０２−ＴＭ  Ｃ１６０３に伝播させることができる。
【００９４】
さらに、パーティシパントＴＭ  Ｂ１６０２−ＴＭ  Ｃ１６０３の各々は、受信されたインスタンスＩＤ１６４１をそれ自体のインスタンスＩＤと比較することによって、それがコーディネータＴＭ  Ａ１６０１と同じＲＭを共有しているかどうかを判断することができる。インスタンスＩＤが同じであれば、パーティシパントＴＭ  Ｂ１６０２−ＴＭ  Ｃ１６０３はそれら自体を共通のＸＩＤサーバ（またはグループ）としてマーク付けすることができる。
【００９５】
たとえば、システムは、ＴＭ  Ｂ１６０２がＴＭ  Ａ１６０１と同じＲＭインスタンス１６０４を共有しているので、ブランチＢ１６２２上に一致を発見する可能性がある。これにより、ＴＭ  Ｂ１６０２は、トランザクション処理をサポートするためにそれ自体のＸＩＤではなく共通のＸＩＤ１６１１を用いることができる。次いで、ＴＭ  Ｂ１６０２は、それが共通のＸＩＤ  １６１１を用いていることをコーディネータＴＭ  Ａ１６０１に通知することができる。このような場合、コーディネータＴＭ  Ａ１６０１がグローバルトランザクション１６１０をコミットまたはロールバックするように動作すると、システムは、（ＢＱＵＡＬ  Ａ１６３１に基づいた）共通のＸＩＤ１６１１を用いているので、ブランチＢ１６２２を無視することができる。
【００９６】
他方では、ＴＭ  Ｃ１６０３が（インスタンスＩＤ  １６４３を用いて）別のＲＭ  １６０５に関連付けられているので、システムは、（ＸＩＤ  Ｃ１６１３およびＢＱＵＡＬ  Ｃ１６３３を用いる）ブランチＣ  １６２３上で一致を発見しない可能性がある。任意には、ＴＭ  Ｃ１６０３は、それが共通のＸＩＤ１６１１用いていないことをコーディネータＴＭ  Ａ１６０１に通知することができる。次いで、システムは、２相コミット（２ＰＣ）処理モデルに従ってトランザクションブランチＣ１６２３を処理することができる。
【００９７】
本発明の一実施形態に従うと、さまざまな共通のＸＩＤグループ、すなわち、コーディネータ１６０１と同じＲＭインスタンス１６０４に関連付けられているトランザクションサーバのグループは、共通のＸＩＤ１６１１を介してＲＭインスタンス１６０４にアクセスすることができる。
【００９８】
さらに、コミット要求が呼出されると、コーディネータ１６０１はローカルの共通ＸＩＤグループに対して如何なるメッセージも送信しなくなる可能性がある。システムは、各々のローカルの共通ＸＩＤグループの状態を同時に読取り専用に変更することができる。また、リモートの共通ＸＩＤグループは、コーディネータ１６０１から準備要求を受信することができ、実際に如何なるデータベース動作も行なうことなく、その状態を読取り専用に変更してもよい。これにより、システムは、これらのグループのうちの１つ（たとえば、コーディネータのグループ）を準備／コミットするだけでよいかもしれない。
【００９９】
加えて、システムは、インスタンスＩＤが変化した場合に、共通ＸＩＤグループを非共通ＸＩＤグループに変更することができる。たとえば、ブランチＢ１６２２が別のＲＭインスタンスを用いるように変化した場合、システムは、代わりに（たとえば、ＢＱＵＡＬ  Ｂ１６３２に基づいて）２相コミット（２ＰＣ）プロセスを呼出すことができる。
【０１００】
図１７は、本発明の一実施形態に従った、トランザクション環境においてデータベースインスタンス検知に基づいて１相コミット（１ＰＣ）処理モデルをサポートする例を示す。図１７に示されるように、トランザクションシステム１７００は、データベース１７０６に接続するリソースマネージャ（ＲＭ）インスタンス１７０４を用いて、ＧＲＴＩＤ  １７２０に関連付けられたグローバルトランザクション１７１０の処理をサポートすることができる。
【０１０１】
トランザクションシステム１７０１は、複数のトランザクションマネージャ（ＴＭ）Ａ１７０１−Ｃ１７０３を含み得る。これら複数のトランザクションマネージャ（ＴＭ）Ａ１７０１−Ｃ１７０３は、さまざまなトランザクショングループ（すなわち、ブランチＡ１７２１−Ｃ１７２３）におけるグローバルトランザクション１７１０の処理を管理するために用いられる。
【０１０２】
さらに、ＴＭ  Ａ１７０１−ＴＭ  Ｃ１７０３は、単一のリソースマネージャ（ＲＭ）インスタンス１７０４に基づいてグローバルトランザクション１７１０の処理を管理することができる。ＴＭ  Ａ１７０１−ＴＭ  Ｃ１７０３の各々は、インスタンス識別子（ＩＤ）、たとえばインスタンスＩＤ１７４１−ＩＤ１７４３、を維持することができる。
【０１０３】
図１７に示されるように、トランザクションシステム１７００はコーディネータ（たとえば、ＴＭ  Ａ１７０１）を含み得る。グローバルトランザクション１７１０のためのコーディネータＴＭ  Ａ１７０１は、グローバルトランザクション１７１０のライフサイクル内において、共通のＸＩＤ１７１１およびインスタンスＩＤ１７４１などのさまざまなタイプの情報をさまざまな参加トランザクションサーバ（たとえば、ＴＭ  Ｂ１７０２−ＴＭ  Ｃ１７０３）に伝播させることができる。
【０１０４】
本発明の一実施形態に従うと、トランザクションアフィニティ性能に基づいて、システムは、グローバルトランザクション１７１０における関連するすべての要求を同じＲＭインスタンス１７０４にルーティングすることができる。さらに、インスタンス検知能力に基づいて、ＴＭ  Ａ１７０１−ＴＭ  Ｃ１７０３は、単一のＲＭインスタンス１７０４だけがグローバルトランザクション１７１０において用いられることを検知することができる。なぜなら、別々のインスタンスＩＤ１７４１−ＩＤ１７４３がすべて、同じＲＭインスタンス１７０４を識別するからである。これにより、コーディネータＴＭ  Ａ１７０１は、トランザクション環境１７００においてグローバルトランザクション１７１０を調整するために共通のＸＩＤ１７１１（たとえば、ＢＱＵＡＬ  Ａ１７３１およびＧＲＴＩＤ１７２０に基づいたそれ自体のＸＩＤ）を用いることができる。
【０１０５】
図１７に示されるように、コーディネータＴＭ  Ａ１７０１は、コミット段階において、如何なる「準備／コミット」要求も他のグループに送信しない可能性がある。なぜなら、それらはすべて共通のＸＩＤグループであるからである。さらに、システムは１相コミット（１ＰＣ）処理モデルを利用することができる。
【０１０６】
本発明の一実施形態に従うと、読取り専用の１相コミット最適化により、システム性能を著しく向上させることができる。これにより、他のすべてのグループが読取り専用に戻った場合に、保存されたグループに対して１ＰＣ処理を実行することが可能となる。グローバルトランザクションのブランチがすべて、たとえば同じインスタンスまたは同じＲＡＣで密に連結されている場合、当該性能を向上させることができる。
【０１０７】
たとえば、トランザクション環境１７００は、グローバルトランザクション１７１０を処理するためのＮ個（この場合、Ｎ＞１）の参加グループを有し得る。それらのうち、Ｍ個（この場合Ｍ＜Ｎ）の参加グループはコーディネータと同じインスタンスＩＤを有している可能性がある。
【０１０８】
データベースインスタンスが検知されていない２相コミット（２ＰＣ）処理モデルを用いる場合、システムは、（たとえば、図１５に示されるように）データベース上で、Ｎ個の準備動作および１個のコミット動作を実行してもよい。また、システムは、トランザクションログを書込む必要があるかもしれない。
【０１０９】
代替的には、（たとえば、図１６に示されるように）データベースインスタンス検知に基づいて、システムは、データベース上で、Ｎ−Ｍ個の準備動作および１個のコミット動作を実行する必要があるかもしれない（Ｍ個の準備動作が減じられている）。
【０１１０】
さらに、Ｍ＝Ｎ−１である場合、これは、グローバルトランザクションにおける他のすべての参加グループがコーディネータと同じトランザクションブランチを共有し得ることを示している。さらに、グローバルトランザクションを処理する際にブランチは１つしか存在しない。システムは、１つのコミット操作を実行するだけでよいかもしれず、この場合、Ｎ個（またはＭ＋１個）の準備動作が減じられている。また、システムはトランザクションログを書込む必要はないかもしれない。
【０１１１】
図１８は、本発明の一実施形態に従った、トランザクションミドルウェア環境においてデータベースインスタンス検知に基づいてグローバルトランザクションを処理する例を示す。図１８に示されるように、トランザクションシステム、たとえばＯｒａｃｌｅ  Ｔｕｘｅｄｏシステムは、複数のトランザクショングループ（たとえばＴｕｘｅｄｏグループＡ１８０２−Ｂ１８０３）を用いて、グローバルトランザクションの処理をサポートすることができる。
【０１１２】
さらに、ＴｕｘｅｄｏグループＡ１８０２−Ｂ１８０３の各々は、１セットのトランザクション管理サーバ（transaction manager server：ＴＭＳ）を有し得る。たとえば、グループＡ１８０２は、サーバＡ１８０４と、コーディネータとして機能することができるＴＭＳ  Ａ１８０６とを含む。加えて、グループＡ１８０２は、共有メモリ（たとえばＴｕｘｅｄｏ掲示板（ＢＢ）Ａ１８０８）を含み得る。さらに、グループＢ１８０３は、サーバＢ１８０５およびＴＭＳ  Ｂ１８０７、ならびに共有メモリ（たとえばＴｕｘｅｄｏ  ＢＢ  Ｂ１８０９）を含む。
【０１１３】
図１８に示される例においては、ステップ１８１１において、クライアント１８０１は、関数呼出しｔｐｃａｌｌ（サービスＡ）を呼出すことによってサーバＡ１８０４上のサービス（たとえば、サービスＡ）にアクセスすることができる。次いで、ステップ１８１２において、サーバＡ１８０４は、Ｔｕｘｅｄｏ  ＢＢ  Ａ１８０８において、関連するグローバルトランザクションテーブルエントリ（global transaction table entry：ＧＴＴＥ）を作成することができる。
【０１１４】
加えて、ステップ１８１３において、クライアント１８０１は、関数呼出しｔｐｃａｌｌ（サービスＢ）を呼出すことによってサーバＢ１８０５上で別のサービス（たとえばサービスＢ）にアクセスすることができる。ステップ１８１４において、サーバＡ１８０４は、グループＡ１８０２についての関連する情報をＴｕｘｅｄｏ  ＢＢ  Ｂ１８０９に追加することができる。また、ステップ１８１５において、クライアント１８０１は、グループＢ１８０３についての関連情報をＴｕｘｅｄｏ  ＢＢ  Ａ１８０８に追加することができる。
【０１１５】
さらに、ステップ１８１６において、クライアント１８０１は、関数呼出しｔｐｃｏｍｍｉｔ（）を呼出すことによってトランザクションをコミットするように要求することができる。Ｔｕｘｅｄｏは、グローバルトランザクションに含まれるすべてのグループが同じＲＭインスタンス上で実行される場合に、グローバルトランザクション上に直接１ＰＣを呼出すことができる。ステップ１８１７において、コーディネータＴＭＳ  Ａ１８０６は次にグローバルトランザクションをコミットすることができる。
【０１１６】
１ＰＣ呼出しが成功した場合、ステップ１８１８において、コーディネータＴＭＳ  Ａ１８０６は、ローカルノードにおけるＧＴＴＥを削除することができる。次いで、ステップ１８１９において、コーディネータ１８０６は、リモートの共通ＸＩＤグループであるグループＢ１８０３に対して、そのブランチを削除（forget）するように通知することができる。最後に、ステップ１８２０において、ＴＭＳ  Ｂ１８０７はＴｕｘｅｄｏ  ＢＢ  Ｂ１８０９を更新することができる。
【０１１７】
図１９は、本発明の一実施形態に従った、共通のＸＩＤを用いてトランザクション環境において複数のドメインにわたってグローバルトランザクションを処理する例を示す。図１９に示されるように、トランザクションシステム１９００は、データベース１９０６に接続するリソースマネージャ（ＲＭ）インスタンス１９０４に基づいて、複数のドメイン（たとえば、ドメインＡ１９５１−Ｂ１９５２）にわたってグローバルトランザクション１９１０の処理をサポートすることができる。
【０１１８】
加えて、さまざまなブランチＡ１９２１−Ｂ１９２３は、トランザクションシステム１９００においてＧＴＲＩＤ１９２０を共有することができる。ローカルドメインＡ１９５１におけるコーディネータＴＭ  Ａ１９０１は、インスタンスＩＤ  １９４１に基づいたトランザクション識別子（ＸＩＤ）１９１１およびインスタンス情報をリモートドメインＢ１９５２に伝播させることができる。
【０１１９】
本発明の一実施形態に従うと、ドメインＡ１９５１内において固有であるインスタンスＩＤ１９４１は、サーバ立上げシーケンスが異なっているせいで、別のドメイン（たとえば、ドメインＢ１９５２）において、異なるものになる可能性もある。
【０１２０】
図１９に示されるように、ドメインに直接クロスさせてインスタンスＩＤ１９４１を伝播させるのではなく、コーディネータＴＭ  Ａ１９０１は、インスタンスＩＤ１９４１をフォーマットされたストリング１９０８に変換してから、ドメインにわたって伝播させることができる。たとえば、フォーマットされたストリング１９０８は、データベース名、サーバ名およびインスタンス名を含み得る。
【０１２１】
加えて、ドメインゲートウェイサーバ１９０５は、ローカルドメインＡ１９５１とリモートドメインＢ１９５２との間の通信をサポートするために用いることができる。ドメインゲートウェイサーバ１９０５のアウトバウンドインターフェイスは、インスタンスＩＤ１９４１からのインスタンス情報をフォーマットされたストリング１９０８にマッピングすることができる。ドメインゲートウェイサーバ１９０５のインバウンドにより、フォーマットされたストリング１９０８からのインスタンス情報をインスタンスＩＤ１９４１にマッピングすることができる。
【０１２２】
たとえば、Ｔｕｘｅｄｏにおいて、ユーザは、ビジネス上の理由から、Ｔｕｘｅｄｏグループをさまざまなドメインに分割してもよい。ＧＷＴＤＯＭＡＩＮサーバなどのゲートウェイサーバは異なるドメイン間での通信をサポートするために用いることができる。さらに、コーディネータドメインにおけるＧＷＴＤＯＭＡＩＮサーバはプロキシとして機能することもできる。加えて、他のドメインにおけるＧＷＴＤＯＭＡＩＮサーバを介するすべての関与サーバが共通のＸＩＤを用いるように設定されている場合、ＧＷＴＤＯＭＡＩＮサーバは、共通のＸＩＤを用いるように構成することができる。
【０１２３】
本発明の一実施形態に従うと、リモートドメインＢ１９５２は、共通のＸＩＤ１９１１を、インポートされたＸＩＤ１９１３として記憶することができる。図１９に示されるように、インポートされたＸＩＤ１９１３が存在し、インポートされたＸＩＤ１９１３に関連付けられたＢＱＵＡＬ  Ａ１９３１が有効である場合、ブランチＢ１９２３（すなわち共通のＸＩＤグループ）はデータベースにアクセスするためにこのインポートされたＸＩＤ１９４３を用いることができる。
【０１２４】
本発明の一実施形態に従うと、ドメイン間トランザクションが単一のＲＭインスタンスを含む場合、システムはまた、データベースインスタンス検知に基づいて、ドメイン間トランザクションを処理する際に１相コミット（１ＰＣ）モデルを利用することもできる。
【０１２５】
図２０は、本発明の一実施形態に従った、トランザクション環境において共通のＸＩＤを用いてグローバルトランザクションを処理するための例示的なフローチャートを示す。図２０に示されるように、ステップ２００１において、グローバルトランザクションのためのコーディネータは、トランザクション環境におけるグローバルトランザクションの１つ以上のパーティシパントに対してリソースマネージャインスタンスについての共通のトランザクション識別子および情報を伝播させることができる。次いで、ステップ２００２において、システムは、リソースマネージャインスタンスをコーディネータと共有している上記１つ以上のパーティシパントが、共通のトランザクション識別子を用いることを可能にする。さらに、ステップ２００３において、コーディネータは、１つのトランザクションブランチを用いて、リソースマネージャインスタンスを共有する上記１つ以上のパーティシパントのためのグローバルトランザクションを処理することができる。
【０１２６】
本発明の一実施形態に従うと、トランザクション環境においてトランザクション処理をサポートするための方法が提供される。当該方法は、リソースマネージャ（ＲＭ）インスタンスに接続されているトランザクションサーバに要求をルーティングするステップと、トランザクションサーバが関連付けられているＲＭインスタンスを示しているアフィニティコンテキストをトランザクションサーバに割当てるステップと、アフィニティコンテキストに基づいて、要求に関連する１つ以上の後続の要求をトランザクションサーバにルーティングするステップとを含む。
【０１２７】
本発明の一実施形態に従うと、当該方法はさらに、上記ＲＭインスタンスが、クラスタ化されたデータベースにおけるインスタンスとなることを可能にするステップを含む。
【０１２８】
本発明の一実施形態に従うと、当該方法はさらに、上記要求および上記１つ以上の後続の要求をグローバルトランザクションに関連付けることを可能にするステップを含む。
【０１２９】
本発明の一実施形態に従うと、当該方法はさらに、ＲＭ名、インスタンス名およびサービス名に基づいたアフィニティルーティングポリシーを用いて、１つ以上の後続の要求をルーティングするステップを含む。
【０１３０】
本発明の一実施形態に従うと、当該方法はさらに、上記要求および上記１つ以上の後続の要求をクライアントコンテキストに関連付けることを可能にするステップを含む。
【０１３１】
本発明の一実施形態に従うと、当該方法はさらに、メッセージを送信する前に、トランザクションサーバを介してメッセージにアフィニティコンテキストを含めるステップを含む。
【０１３２】
本発明の一実施形態に従うと、当該方法はさらに、別のトランザクションサーバから受信したメッセージに基づいて、トランザクションサーバにおけるアフィニティコンテキストを更新するステップを含む。
【０１３３】
本発明の一実施形態に従うと、当該方法はさらに、アフィニティコンテキストストリングを用いて、アフィニティコンテキストをトランザクションドメインから別のトランザクションドメインに転送するステップを含む。
【０１３４】
本発明の一実施形態に従うと、当該方法はさらに、コネクタを用いて、アフィニティコンテキストをトランザクションシステムからアプリケーションサーバに転送するステップを含む。
【０１３５】
本発明の一実施形態に従うと、当該方法はさらに、コネクタを用いて、アプリケーションサーバからアフィニティコンテキストを受信するステップを含む。
【０１３６】
本発明の一実施形態に従うと、コンピュータプログラムは、システムによって実行されると当該システムに上述の方法のうちの方法を実行させる命令を含む。
【０１３７】
本発明の一実施形態に従うと、コンピュータプログラムは、システムによって実行されると当該システムに上述の方法のうちの方法を実行させる命令を含む。発明の一実施形態に従うと、トランザクションミドルウェア環境におけるグローバルトランザクションの処理をサポートするためのシステムが提供される。当該システムは、１つ以上のマイクロプロセッサと、１つ以上のマイクロプロセッサ上で実行されるトランザクションシステムとを含む。トランザクションシステムは、リソースマネージャ（ＲＭ）インスタンスに接続されたトランザクションサーバに要求をルーティングするステップと、トランザクションサーバが関連付けられているＲＭインスタンスを示すアフィニティコンテキストをトランザクションサーバに割当てるステップと、アフィニティコンテキストに基づいて、要求に関連する１つ以上の後続の要求をトランザクションサーバにルーティングするステップとを実行するように動作する。
【０１３８】
本発明の一実施形態に従うと、上述のシステムにおいては、上記ＲＭインスタンスはクラスタ化されたデータベースにおけるインスタンスである。
【０１３９】
本発明の一実施形態に従うと、上述のシステムにおいては、上記要求および上記１つ以上の後続の要求はグローバルトランザクションに関連付けられている。
【０１４０】
本発明の一実施形態に従うと、上述のシステムにおいては、トランザクションシステムは、ＲＭ名、インスタンス名およびサービス名に基づいているアフィニティルーティングポリシーを用いて１つ以上の後続の要求をルーティングするように動作する。
【０１４１】
本発明の一実施形態に従うと、上述のシステムにおいては、上記要求および上記１つ以上の後続の要求はクライアントコンテキストに関連付けられている。
【０１４２】
本発明の一実施形態に従うと、上述のシステムにおいては、トランザクションシステムは、メッセージにアフィニティコンテキストを含めてからメッセージを送信するように動作する。
【０１４３】
本発明の一実施形態に従うと、上述のシステムにおいては、トランザクションシステムは、別のトランザクションサーバから受信されたメッセージに基づいて、トランザクションサーバにおけるアフィニティコンテキストを更新するように動作する。
【０１４４】
本発明の一実施形態に従うと、上述のシステムにおいては、トランザクションシステムは、アフィニティコンテキストストリングを用いて、アフィニティコンテキストをトランザクションドメインから別のトランザクションドメインに転送するように動作する。
【０１４５】
本発明の一実施形態に従うと、上述のシステムにおいては、トランザクションシステムは、コネクタを用いて、トランザクションシステムからアプリケーションサーバへのアフィニティコンテキストの転送と、アプリケーションサーバからのアフィニティコンテキストの受信とのうち少なくとも１つを実行するように動作する。
【０１４６】
本発明の一実施形態に従うと、命令が格納された非一時的な機械読取可能な記憶媒体が提供される。当該命令は、実行されると、システムに、リソースマネージャ（ＲＭ）インスタンスに接続されたトランザクションサーバに要求をルーティングするステップと、トランザクションサーバが関連付けられているＲＭインスタンスを示すアフィニティコンテキストをトランザクションサーバに割当てるステップと、アフィニティコンテキストに基づいて、上記要求に関連する１つ以上の後続の要求をトランザクションサーバにルーティングするステップとを実行させる。
【０１４７】
本発明の一実施形態に従うと、トランザクション環境においてトランザクション処理をサポートするための方法が提供される。当該方法は、１つ以上のＲＭインスタンスに関連付けられたデータソースから、トランザクションサーバを介して、リソースマネージャ（ＲＭ）インスタンス情報を受信するステップを含み、受信されたインスタンス情報は、トランザクションサーバが現在接続されているのがどのＲＭインスタンスであるかを当該トランザクションサーバが検知することを可能にし、当該方法はさらに、受信されたインスタンス情報を、トランザクションサーバに関連付けられた１つ以上のテーブルに保存するステップと、トランザクションサーバが、１つ以上のテーブルに保存されたインスタンス情報に基づいてグローバルトランザクションを処理することを可能にするステップとを含む。
【０１４８】
本発明の一実施形態に従うと、当該方法はさらに、複数のトランザクションサーバによってアクセス可能な共有メモリに上記１つ以上のテーブルを記憶するステップを含む。
【０１４９】
本発明の一実施形態に従うと、当該方法はさらに、ＲＭにコールバック動作を登録するステップを含む。トランザクションサーバは、コールバック動作がトリガされとき、インスタンス情報をＲＭから検索するように動作する。
【０１５０】
本発明の一実施形態に従うと、当該方法はさらに、コールバック動作を静的にまたは動的に登録することを可能にするステップを含む。
【０１５１】
本発明の一実施形態に従うと、当該方法はさらに、受信されたインスタンス情報をコンテキストに記憶するステップと、インスタンス情報の受信を示すフラグを使用可能にするステップとを含む。
【０１５２】
本発明の一実施形態に従うと、当該方法はさらに、トランザクションを実行している間に１つ以上のチェックポイントにおいてフラグをチェックするステップと、インスタンス情報が更新されたときに、１つ以上のテーブルに保存されたインスタンス情報を更新するステップとを含む。
【０１５３】
本発明の一実施形態に従うと、当該方法はさらに、上記１つ以上のテーブルが、１つ以上の固有のデータベース名を記憶するＲＭテーブル、１つ以上のインスタンス名を記憶するインスタンステーブル、および、１つ以上のデータベースサービス名を記憶するサービステーブルのうち少なくとも１つを含むことを可能にするステップを含む。
【０１５４】
本発明の一実施形態に従うと、当該方法はさらに、上記１つ以上のテーブルが、１つ以上のサーバテーブルエントリを含むサーバテーブルを含むことを可能にするステップを含む。
【０１５５】
本発明の一実施形態に従うと、当該方法はさらに、各々の上記サーバテーブルエントリが、トランザクションサーバが現在接続されているＲＭインスタンスに関連付けられているインスタンス識別子（ＩＤ）を含むことを可能にするステップを含む。
【０１５６】
本発明の一実施形態に従うと、当該方法はさらに、各々の上記インスタンスＩＤが複数のセクションを含む整数となることを可能にするステップを含む。
【０１５７】
本発明の一実施形態に従うと、コンピュータプログラムは、システムによって実行されると当該システムに上述の方法のうちの方法を実行させる命令を含む。
【０１５８】
本発明の一実施形態に従うと、トランザクション環境におけるトランザクション処理をサポートするためのシステムが提供される。当該システムは、１つ以上のマイクロプロセッサと、１つ以上のマイクロプロセッサ上で実行されるトランザクションサーバとを含む。トランザクションサーバは、トランザクションサーバが現在接続されているのがどのＲＭのインスタンスであるかを当該トランザクションサーバが検知することを可能にするリソースマネージャ（ＲＭ）インスタンス情報を１つ以上のＲＭインスタンスに関連付けられたデータソースから受信するステップと、受信されたインスタンス情報を、トランザクションサーバに関連付けられた１つ以上のテーブルに保存するステップと、１つ以上のテーブルに保存されたインスタンス情報に基づいてグローバルトランザクションを処理するステップとを実行するように動作する。
【０１５９】
本発明の一実施形態に従うと、上述のシステムにおいては、トランザクションサーバは、複数のトランザクションサーバによってアクセス可能な共有メモリに上記１つ以上のテーブルを記憶するように動作する。
【０１６０】
本発明の一実施形態に従うと、上述のシステムにおいては、トランザクションサーバはＲＭにコールバック動作を登録するように動作する。トランザクションサーバは、コールバック動作がトリガされたとき、ＲＭからインスタンス情報を検索するように動作する。
【０１６１】
本発明の一実施形態に従うと、上述のシステムにおいては、コールバック動作は、静的にまたは動的に登録されるように適合される。
【０１６２】
本発明の一実施形態に従うと、上述のシステムにおいては、トランザクションサーバは、受信されたインスタンス情報をコンテキストに記憶し、インスタンス情報の受信を示すフラグを使用可能にするように動作する。
【０１６３】
本発明の一実施形態に従うと、上述のシステムにおいては、トランザクションサーバは、トランザクションを実行している間に１つ以上のチェックポイントにおいてフラグをチェックし、インスタンス情報が更新されたときに１つ以上のテーブルに保存されたインスタンス情報を更新するように動作する。
【０１６４】
本発明の一実施形態に従うと、上述のシステムにおいては、上記１つ以上のテーブルは、１つ以上の固有のデータベース名を記憶するＲＭテーブル、１つ以上のインスタンス名を記憶するインスタンステーブル、および、１つ以上のデータベースサービス名を記憶するサービステーブル、のうち少なくとも１つを含む。
【０１６５】
本発明の一実施形態に従うと、上述のシステムにおいては、上記１つ以上のテーブルは、１つ以上のサーバテーブルエントリを含むサーバテーブルを含む。
【０１６６】
本発明の一実施形態に従うと、上述のシステムにおいては、各々の上記サーバテーブルエントリは、トランザクションサーバが現在接続されているＲＭインスタンスに関連付けられているインスタンスＩＤを含み、上記インスタンスＩＤは、複数のセクションを含む整数である。
【０１６７】
本発明の一実施形態に従うと、命令が格納された非一時的な機械読取可能な記憶媒体であって、当該命令が実行されると、システムに：トランザクションサーバが現在接続されているのがどのＲＭインスタンスであるのかを当該トランザクションサーバが検知することを可能にするリソースマネージャ（ＲＭ）インスタンス情報を、トランザクションサーバを介して、１つ以上のＲＭインスタンスに関連付けられたデータソースから受信するステップと；トランザクションサーバに関連付けられた１つ以上のテーブルに、受信されたインスタンス情報を保存するステップと；トランザクションサーバが１つ以上のテーブルに保存されたインスタンス情報に基づいてグローバルトランザクションを処理することを可能にするステップと；を含むステップを実行させる。
【０１６８】
本発明の一実施形態に従うと、コンピュータプログラムは、システムによって実行されたときに当該システムに上記方法のうちの方法を実行するための方法を実行させる命令を含む。
【０１６９】
本発明の多くの特徴は、ハードウェア、ソフトウェア、ファームウェアまたはそれらの組合せにおいて、それらを用いて、またはそれらの支援により、実行可能である。従って、本発明の特徴は、（たとえば、１つ以上のプロセッサを含む）処理システムを用いて実現され得る。
【０１７０】
当業者であれば、上述の特徴が互いに適宜組合わせされ得ること、および／または、所与のいずれかの実現例の特定の環境および要件に従って添付の特許請求の範囲に規定された特徴と適宜組み合わされ得ることを検知するだろう。
【０１７１】
この発明の特徴は、ここに提示された特徴のうちのいずれかを行なうように処理システムをプログラミングするために使用可能な命令を格納した記憶媒体またはコンピュータ読取可能媒体であるコンピュータプログラム製品において、それを使用して、またはその助けを借りて実現され得る。記憶媒体は、フロッピー（登録商標）ディスク、光ディスク、ＤＶＤ、ＣＤ−ＲＯＭ、マイクロドライブ、および光磁気ディスクを含む任意のタイプのディスク、ＲＯＭ、ＲＡＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、ＤＲＡＭ、ＶＲＡＭ、フラッシュメモリ装置、磁気カードもしくは光カード、ナノシステム（分子メモリＩＣを含む）、または、命令および／もしくはデータを格納するのに好適な任意のタイプの媒体もしくは装置を含み得るものの、それらに限定されない。
【０１７２】
この発明の特徴は、機械読取可能媒体のうちのいずれかに格納された状態で、処理システムのハードウェアを制御するために、および処理システムがこの発明の結果を利用する他の機構とやり取りすることを可能にするために、ソフトウェアおよび／またはファームウェアに取込まれ得る。そのようなソフトウェアまたはファームウェアは、アプリケーションコード、装置ドライバ、オペレーティングシステム、および実行環境／コンテナを含み得るものの、それらに限定されない。
【０１７３】
この発明の特徴はまた、たとえば、特定用途向け集積回路（application specific integrated circuit：ＡＳＩＣ）などのハードウェアコンポーネントを使用して、ハードウェアにおいて実現されてもよい。ここに説明された機能を行なうようにハードウェアステートマシンを実現することは、関連技術の当業者には明らかであろう。
【０１７４】
加えて、この発明は、この開示の教示に従ってプログラミングされた１つ以上のプロセッサ、メモリおよび／またはコンピュータ読取可能記憶媒体を含む、１つ以上の従来の汎用または特殊デジタルコンピュータ、コンピューティング装置、マシン、またはマイクロプロセッサを使用して都合よく実現されてもよい。ソフトウェア技術の当業者には明らかであるように、この開示の教示に基づいて、適切なソフトウェアコーディングが、熟練したプログラマによって容易に準備され得る。
【０１７５】
この発明のさまざまな実施形態が上述されてきたが、それらは限定のためではなく例示のために提示されたことが理解されるべきである。この発明の精神および範囲から逸脱することなく、形状および詳細のさまざまな変更を行なうことができることは、関連技術の当業者には明らかであろう。
【０１７６】
この発明は、特定された機能およびそれらの関係の実行を示す機能的構築ブロックの助けを借りて上述されてきた。説明の便宜上、これらの機能的構築ブロックの境界は、この明細書中ではしばしば任意に規定されてきた。特定された機能およびそれらの関係が適切に実行される限り、代替的な境界を規定することができる。このため、そのようないかなる代替的な境界も、この発明の範囲および精神に含まれる。
【０１７７】
この発明の前述の説明は、例示および説明のために提供されてきた。それは、網羅的であるよう、またはこの発明を開示された形態そのものに限定するよう意図されてはいない。この発明の幅および範囲は、上述の例示的な実施形態のいずれによっても限定されるべきでない。多くの変更および変形が、当業者には明らかになるだろう。これらの変更および変形は、開示された特徴の関連するあらゆる組合せを含む。実施形態は、この発明の原理およびその実用的応用を最良に説明するために選択され説明されたものであり、それにより、考えられる特定の使用に適したさまざまな実施形態についての、およびさまざまな変更例を有するこの発明を、当業者が理解できるようにする。この発明の範囲は、請求項およびそれらの同等例によって定義されるよう意図されている。
【図１】
0006545709.tif 000002
【図２】
0006545709.tif 000003
【図３】
0006545709.tif 000004
【図４】
0006545709.tif 000005
【図５】
0006545709.tif 000006
【図６】
0006545709.tif 000007
【図７】
0006545709.tif 000008
【図８】
0006545709.tif 000009
【図９】
0006545709.tif 000010
【図１０】
0006545709.tif 000011
【図１１】
0006545709.tif 000012
【図１２】
0006545709.tif 000013
【図１３】
0006545709.tif 000014
【図１４】
0006545709.tif 000015
【図１５】
0006545709.tif 000016
【図１６】
0006545709.tif 000017
【図１７】
0006545709.tif 000018
【図１８】
0006545709.tif 000019
【図１９】
0006545709.tif 000020
【図２０】
0006545709.tif 000021