(57)【要約】  実施形態によれば、不完全なトランザクションから修復するための機構および方法が提供される。これらの機構および方法は、サーバクラッシュまたは他の破局的なイベントから修復する場合に、実施形態が不完全なトランザクションを検出することを可能にすることができる。一部の実施形態は、不完全なトランザクションが検出されると、切断された接続を自動的に再確立することができる。不完全なトランザクションを検出する実施形態の機能は、サーバ再始動およびアダプタの再展開時に、実質的に直ちに修復を開始することを可能にする。
2009535740.tif 000002
【特許請求の範囲】
【請求項１】
不完全なトランザクションからリカバリーするための方法であって、
ダミーリソースを作成し、サーバクラッシュ前よりリソースアダプタの前回の使用によって用いられていた名前を用いて、前記ダミーリソースをトランザクションマネジャに登録するステップと、
前記トランザクションマネジャが前記名前を照合して、前記名前が未解決のトランザクションにおいて必要とされたかどうかを判断するステップと、
前記トランザクションマネジャが前記名前は未解決のトランザクションにおいて必要とされたと判断した場合に、リカバリーを開始するために前記ダミーリソースを呼び出すステップとを備え、これにより、前記トランザクションマネジャがリカバリーが必要とされていると判断できるようにする通知メカニズムを提供する、方法。
【請求項２】
前記トランザクションマネジャが、前記リソースアダプタを介した実際の接続を作成し、前記リソースアダプタに関連付けられるリソースマネジャにリカバリー要求を供給するステップをさらに含む、請求項１に記載の方法。
【請求項３】
前記ダミーリソースを作成し、サーバクラッシュ前よりリソースアダプタの前回の使用によって用いられていた名前を用いて、前記ダミーリソースをトランザクションマネジャに登録するステップは、
存在していないリソースアダプタを前記トランザクションマネジャに登録することによって、前記トランザクションマネジャにリカバリー処理を開始させるステップを含む、請求項１に記載の方法。
【請求項４】
前記トランザクションマネジャが前記名前を照合して、前記名前が未解決のトランザクションにおいて必要とされたかどうかを判断するステップは、
トランザクションログを照合して、同一の名前のリソースマネジャを必要とした任意の未解決のトランザクションがあったかどうかを判断するステップを含む、請求項１に記載の方法。
【請求項５】
前記トランザクションマネジャが前記名前は未解決のトランザクションにおいて必要とされたと判断した場合に、リカバリーを開始するために前記ダミーリソースを呼び出すステップは、
コネクタコンテナがリカバリーが必要であることを示す前記通知メカニズムを検出するステップと、
前記リソースアダプタを介した実際の接続を作成し、前記リソースアダプタに関連付けられるリソースマネジャに前記リカバリー要求を供給するステップとを含む、請求項１に記載の方法。
【請求項６】
不完全なトランザクションからリカバリーするための１つ以上の命令のシーケンスを担持する機械読み出し可能媒体であって、前記命令は、１つ以上のプロセッサにより実行される場合に、前記１つ以上のプロセッサに、
ダミーリソースを作成し、サーバクラッシュ前よりリソースアダプタの前回の使用によって用いられていた名前を用いて、前記ダミーリソースをトランザクションマネジャに登録するステップと、
前記トランザクションマネジャが前記名前を照合して、前記名前が未解決のトランザクションにおいて必要とされたかどうかを判断するステップと、
前記トランザクションマネジャが前記名前は未解決のトランザクションにおいて必要とされたと判断した場合に、リカバリーを開始するために前記ダミーリソースを呼び出すステップとを実行させ、これにより、前記トランザクションマネジャがリカバリーが必要と
されていると判断できるようにする通知メカニズムを提供する、機械読み出し可能媒体。
【請求項７】
前記トランザクションマネジャが、前記リソースアダプタを介した実際の接続を作成し、前記リソースアダプタに関連付けられるリソースマネジャにリカバリー要求を供給するステップを実行するための命令をさらに含む、請求項６に記載の機械読み出し可能媒体。
【請求項８】
前記ダミーリソースを作成し、サーバクラッシュ前よりリソースアダプタの前回の使用によって用いられていた名前を用いて、前記ダミーリソースをトランザクションマネジャに登録するステップを実行するための命令は、
存在していないリソースアダプタを前記トランザクションマネジャに登録することによって、前記トランザクションマネジャにリカバリー処理を開始させるステップを実行するための命令を含む、請求項６に記載の機械読み出し可能媒体。
【請求項９】
前記トランザクションマネジャが前記名前を照合して、前記名前が未解決のトランザクションにおいて必要とされたかどうかを判断するステップを実行するための命令は、
トランザクションログを照合して、同一の名前のリソースマネジャを必要とした任意の未解決のトランザクションがあったかどうかを判断するステップを実行するための命令を含む、請求項６に記載の機械読み出し可能媒体。
【請求項１０】
前記トランザクションマネジャが前記名前は未解決のトランザクションにおいて必要とされたと判断した場合に、リカバリーを開始するために前記ダミーリソースを呼び出すステップを実行するための命令は、
コネクタコンテナがリカバリーが必要であることを示す前記通知メカニズムを検出するステップと、
前記リソースアダプタを介した実際の接続を作成し、前記リソースアダプタに関連付けられるリソースマネジャに前記リカバリー要求を供給するステップとを実行するための命令を含む、請求項６に記載の機械読み出し可能媒体。
【請求項１１】
不完全なトランザクションからリカバリーするための装置であって、
プロセッサと、
１つ以上の格納された命令のシーケンスとを備え、前記１つ以上の格納された命令のシーケンスは、前記プロセッサにより実行される場合に、前記プロセッサに、
ダミーリソースを作成し、サーバクラッシュ前よりリソースアダプタの前回の使用によって用いられていた名前を用いて、前記ダミーリソースをトランザクションマネジャに登録するステップと、
前記トランザクションマネジャが前記名前を照合して、前記名前が未解決のトランザクションにおいて必要とされたかどうかを判断するステップと、
前記トランザクションマネジャが前記名前は未解決のトランザクションにおいて必要とされたと判断した場合に、リカバリーを開始するために前記ダミーリソースを呼び出すステップとを実行させ、これにより、前記トランザクションマネジャがリカバリーが必要とされていると判断できるようにする通知メカニズムを提供する、装置。
【発明の詳細な説明】
【技術分野】
【０００１】
＜優先権の主張＞
２００６年５月３日出願のBrian Christopher Chesebroらによる「RECOVERY MECHANISM
FOR TRANSACTIONS」という名称の米国特許出願第１１／４１６，９０６号（代理人整理番号  ＢＥＡＳ−０１７８６ＵＳ０）。
【０００２】
＜著作権表示＞
本特許文書の開示の一部は、著作権保護の対象である要素を含む。米国特許商標庁の特許ファイルまたはレコードに記載されているように、著作権所有者は、本文書または本開示の誰による複製にも異存はなく、それ以外は、全ての著作権をいかなるものについても保有する。
【０００３】
＜発明の分野＞
本発明は一般的には、１つまたは複数のアプリケーションサーバと１つまたは複数の企業情報システムとの間の相互接続性を提供するための技術に関し、さらに詳細には、不完全なトランザクションからリカバリーするためのメカニズムに関する。
【背景技術】
【０００４】
＜背景＞
１９９５年に登場以来、Ｊａｖａ（登録商標）プログラミング言語は、ますます人気を集めている（Ｊａｖａ（登録商標）は、Ｓｕｎ  Ｍｉｃｒｏｓｙｓｔｅｍｓ，  Ｉｎｃ．の商標である。）。Ｊａｖａ（登録商標）は、インタープリタ型言語であり、種々のプラットフォームで実行できるアプリケーションの作成を可能にする。種々の異なるクライアントプラットフォームにわたって機能するこの機能、すなわちプラットフォーム独立性、およびＪａｖａ（登録商標）によるネットワークアプリケーションの比較的容易な実装は、個人のウェブページといった基本的なものから大きな企業間のシステムといった複雑なものまで、プラットフォーム独立性を提供する他のプログラミング言語とともに、Ｊａｖａ（登録商標）を使用しようとする試みがなされている。
【０００５】
しかし、アプリケーションのほか、アプリケーションが接続するエンタープライズ情報システム（ＥＩＳ：Enterprise Information System）は、多くの異なるベンダによって提供される可能性があるため、これらの異種の計算エンティティ（entity）同士が通信することを可能にするメカニズムが必要とされた。Ｊａｖａ（登録商標）２プラットフォームエンタープライズエディション（Ｊ２ＥＥ：Java（登録商標） 2 Platform Enterprise
Edition）は、そのような必要性に対処する仕様である。
【０００６】
Ｊ２ＥＥコネクタアーキテクチャ（Connector Architecture）は、企業情報システム（enterprise information systems）とＪ２ＥＥ準拠アプリケーションサーバとを統合するメカニズムを提供する。Ｊ２ＥＥコネクタアーキテクチャは、ＥＩＳアクセス用のコモンクラインアントインターフェイス（ＣＣＩ：Common Client Interface）を定義する。ＣＣＩは、クライアントが異種企業情報システムと対話することを可能にするクライアントＡＰＩを定義する。アプリケーションサーバ、すなわち、アプリケーションが展開され得るサーバおよびエンタープライズ情報システムは、互いに相互接続するために、Ｊ２ＥＥコネクタアーキテクチャ仕様に従う必要があるだけである。
【０００７】
残念なことに、Ｊ２ＥＥ仕様は、全ての相互接続問題を解決するわけではない。たとえば、１つの関心領域は、サーバクラッシュまたは他の不測の障害の場合に生じ得る不完全
なトランザクションを検出して修正することである。トランザクションのアプリケーションは、トランザクションに関する処理を調整しようと試みる種々の手法を採用することが多い。しかし、そのような従来の手法は、ある期間の間に不完全なトランザクションの存在を検出し損なう可能性がある。さらに、そのような従来の手法は、不完全なトランザクションの照合処理中に不必要な接続を作成する可能性がある。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
必要とされているものは、不完全なトランザクションからリカバリーするための改善されたメカニズムである。
【発明を実施するための最良の形態】
【０００９】
＜詳細な説明＞
本発明は、一例として示され、添付図面の図において限定するためではない。また、図面において、類似の参照符号は、類似の要素を指す。この開示において実施形態に対する参照は、必ずしも同一の実施形態に対する必要はなく、そのような参照は、少なくとも１つであることを意味する。特定の実装について記載されているが、これは説明のために過ぎないことは理解されよう。当業者は、本発明の範囲および精神を逸脱することなく他の構成要素および構造を用いてもよいことは認識されよう。
【００１０】
以下の説明において、多数の特定の詳細は、本発明の完全な説明を提供するために記載される。しかし、本発明がこれらの特定の詳細がなくても実現され得ることは、当業者には明白であろう。他の場合において、公知の特徴は、本発明を曖昧にしないために、詳細に記載されていない。
【００１１】
図は、論理的に個別であるようにコンポーネントを示し得るが、そのような表示は、単に説明のために過ぎない。表現されたコンポーネントを個別のソフトウェアコンポーネント、ファームウェアコンポーネントおよび／またはハードウェアコンポーネントに結合するか、または分離することは当業者には、明白であろう。たとえば、本願明細書に記載される実施形態のうちの１つまたは複数は、ルータなどのネットワークアクセス可能デバイス／機器において実装できる。さらに、そのようなコンポーネントは、結合されるか、または分離されるかに関係なく、同一の計算デバイスで実行されることができるか、または１つまたは複数のネットワークまたは他の適切な通信手段によって接続される、異なる計算デバイスの中で分散されることができることも、当業者には、明白であろう。
【００１２】
実施形態によれば、不完全なトランザクションからリカバリーするためのメカニズム（mechanism）および方法が提供される。これらのメカニズムおよび方法は、サーバクラッシュまたは他の破局的なイベントからリカバリーする場合に、実施形態が不完全なトランザクションを検出することを可能にすることができる。そのような実施形態は、不完全なトランザクションが検出されると、切断された接続を自動的に再確立することができる。不完全なトランザクションを検出する実施形態の機能は、サーバ再始動およびアダプタの再展開時に、実質的に直ちにリカバリーを開始することを可能にする。リカバリーのために必要ではない実際のアダプタ接続の作成を回避することができる。
【００１３】
実施形態において、不完全なトランザクションからリカバリーするための方法が、提供される。１つの方法の実施形態は、ダミーリソースを作成し、サーバクラッシュ前よりリソースアダプタの前回の使用によって用いられていた名前を用いて、ダミーリソースをトランザクションマネジャに登録することを含む。トランザクションマネジャは、その名前が未解決のトランザクションにおいて必要とされたかどうかを判断するために、名前を照合する。その名前が未解決のトランザクションにおいて必要とされたとトランザクション
マネジャが判断した場合には、トランザクションマネジャは、リカバリーを開始するためにダミーリソースを呼び出す。この処理は、実施形態が通知メカニズムを提供することを可能にし、これによって、トランザクションマネジャは、リカバリーが必要とされることを判断することができる。実施形態において、方法は、トランザクションマネジャによってリソースアダプタを介した実際の接続を作成することをも含み得る。リカバリー要求は、リソースアダプタに関連付けられるリソースマネジャに供給される。
【００１４】
Ｘ／Ｏｐｅｎ  ＤＴＰグループによって定義された２段階コミットプロトコルであるＸＡプロトコルを採用する実施形態が、本発明によって提供される技術の説明に役立つ実施例を提供するために記載される。ＸＡは、多くのデータベース（Ｏｒａｃｌｅ（商標）など）およびトランザクションモニタ（Ｔｕｘｅｄｏ（商標）など）によって本来的に（natively）サポートされている。ＸＡプロトコルに関するさらなる詳細については、「Distributed Transactional Processing: The XA Specification」, The Open Group (1992)（（http://www.opengroup.org/public/pubs/catalog/c193.htm  最終アクセス２００６年３月２８日、にて入手可能である）を参照されたい。これは、ＸＡトランザクションにおいて必要とされるトランザクションマネジャおよびリソースマネジャの両方に関する要件を定義している。本発明は、切断された接続からのリカバリーのための技術がＸＡプロトコルに準拠して実装される実施形態を参照して、記載しているが、本発明は、ＸＡプロトコルに限定されるわけではない。実施形態は、クレームされた実施形態の範囲を逸脱することなく、他の相互接続仕様またはプログラミング言語、すなわちＪＳＰなどを用いて実行されてもよい。（Ｊａｖａ（登録商標）は、Ｓｕｎ  Ｍｉｃｒｏｓｙｓｔｅｍｓ，  Ｉｎｃ．の商標である。）
【００１５】
図１は、実施形態における不完全なトランザクションからリカバリーするための技術が実装され得るコネクタアーキテクチャを実現する実施例の計算環境の機能ブロック図である。図１に示されているように、コネクタアーキテクチャ実現例１００は、アプリケーションサーバ１１０、リソースアダプタ１２０ａ、１２０ｂ、リソース１３０ａおよび１３０ｂおよびアプリケーションコンポーネント１４０を含む。本願明細書で用いられるとき、「アプリケーションサーバ」なる語は、一定のソフトウェアアプリケーションを実行することに専用化されたコンピュータネットワークにおけるサーバコンピュータとして広く定義される。アプリケーションサーバ１１０は、ウェブサーバ（簡単にするため、図１には示さず）に関連して存在してもよく、またはウェブサーバと企業情報システム（簡単にするため、図１には示さず）との間に存在して、企業に対してミドルウェア機能を提供する。本願明細書で用いられるとき、「リソースアダプタ」なる語は、リソースを表すコードの任意の部分を含むように広く定義される。リソースは、アプリケーション、サービス、データベースウェブサイトおよび他のコンピュータに基づくリソースを含むことができる。本願明細書で用いられるとき、「アプリケーションコンポーネント」なる語は、任意のデータエントリ、更新、照会またはユーザのためにデータを処理するプログラムとして広く定義される。ユーザは、人間のエンティティであってもよく、プロキシなどのコンピュータのエンティティであってもよい。リクエスタは、ユーザエンティティ、プロキシエンティティまたは自動化されたエンティティであってもよい。本願明細書で用いられるとき、「環境」なる語は、無制限にオペレーティングシステム、中央演算処理装置（ＣＰＵ）モデル、データ通信システム、データベースシステム、プログラミング言語および任意の適用可能な規約などのハードウェア特性およびソフトウェア特性をはじめとするコンピュータ構成の一連の任意の特性を含むように広く解釈することを意図する。本願明細書で用いられるとき、「常駐する」なる語は、アクティブメモリにロードされ、ストレージ装置において保持され、プロセッサによって実行されるアプリケーションおよびコンピュータ業界において周知のアプリケーションと周知の環境との間の関連付けを含むものと広く解釈されることを意図している。実施形態は、アプリケーションコンポーネント１４０とリソース１３０ａ，１３０ｂとの間で、１つまたは複数の接続が確立されることを可能に
するコネクタアーキテクチャ１００を実現する。
【００１６】
一実施形態において、コネクタアーキテクチャ実現例１００は、Ｊａｖａ（登録商標）２エンタープライズエディション（Ｊ２ＥＥ）コネクタアーキテクチャと互換性がある。このアーキテクチャは、ＥＩＳベンダが提供するリソースアダプタと、リソースアダプタに対してインターフェイスをとるアプリケーションサーバを備える。Ｊ２ＥＥコネクタアーキテクチャは、リソースアダプタおよびアプリケーションサーバの両方同士が通信するために必要なトランザクション、セキュリティおよび接続管理などの一連規約を定義する。コネクタアーキテクチャ１００は、アプリケーションサーバおよびリソースアダプタにおいて実現されてもよい。
【００１７】
アプリケーションサーバ１１０の実施形態は、種々のハードウェア製品およびソフトウェア製品で構成できる。アプリケーションサーバ１１０は、Ｊａｖａ（登録商標）または他のプログラミング言語環境を実行してもよく、サーバ内部のリソースのほか、アプリケーションサーバ１１０によって到達可能なリソースへのアクセスを提供するように構成されてもよい。リソース１３０ａ，１３０ｂは、アプリケーション、サービス、データベースウェブサイトおよび他のコンピュータに基づくリソースを含むことができる。これらのリソースは、エンタープライズ情報システム（ＥＩＳ：Enterprise Information System）の一部、またはネットワークもしくは他の通信メカニズムによって到達可能な独立なリソースであってもよい。一実施形態において、アプリケーションサーバ１１０は、カリフォルニア州サンホゼ（Ｓａｎ  Ｊｏｓｅ、Ｃａｌｉｆｏｒｎｉａ）のＢＥＡ  ｓｙｓｔｅｍｓによるＷｅｂＬｏｇｉｃ（登録商標）サーバを利用する。
【００１８】
図１によってさらに示されているように、アプリケーションサーバ１１０は、アプリケーションコンポーネント１４０によって起動されるトランザクションを管理するための、アプリケーションサーバトランザクションマネジャ１１２を含む。トランザクションマネジャの実施形態は、不完全なトランザクションからリカバリーするための技術を含む。実施形態において、不完全なトランザクションからリカバリーすることは、ダミーリソースを作成すること、およびサーバクラッシュまたは他の不測の事象の前に、リソースアダプタ１２０の前回の使用によって用いられていた名前を用いて、ダミーリソースをトランザクションマネジャ１１２に登録することを含み得る。トランザクションマネジャ１１２は、その名前が未解決のトランザクションにおいて必要とされたかどうかを判断するために、ダミーリソースの名前を照合する。その名前が未解決のトランザクションにおいて必要とされたとトランザクションマネジャ１１２が判断した場合には、ダミーリソースが、リカバリーを開始するために呼び出される。実施形態は、通知メカニズムを提供することができ、これによって、トランザクションマネジャ１１２は、リカバリーが必要とされることを判断することができる。不完全なトランザクションからリカバリーするための処理は、図２〜図３を参照して以下にさらに詳細に記載される。
【００１９】
リソースアダプタ１２０ａ，１２０ｂは、リソース１３０ａ，１３０ｂをそれぞれ接続するために、アプリケーションサーバ１１０によって用いられるシステムレベルソフトウェアドライバを備える。実施形態において、リソースアダプタ１２０ａ，１２０ｂは、Ｊａｖａ（登録商標）コードおよびアプリケーションサーバ１１０とリソース１３０ａ，１３０ｂとの間の相互接続を容易にするために必要な任意のネイティブコンポーネントを備える。一実施形態において、コネクタアーキテクチャ１００は、ベンダおよびサードパーティ・アプリケーション開発者によって開発されたリソースアダプタをサポートし、Ｊ２ＥＥプラットフォーム仕様に基づいて任意のアプリケーションサーバにおいて展開されることができる。
【００２０】
さらに図１によって示されているように、リソースアダプタ１２０ａ，１２０ｂは、そ
れぞれ、リソースマネジャ１２２ａおよび１２２ｂを含む。リソースマネジャ１２２ａ，１２２ｂは、それぞれのリソースをトランザクションマネジャ１１２に登録する。
【００２１】
アプリケーションコンポーネント１４０は、トランザクションを起動するアプリケーションの少なくとも部分集合であってもよい。アプリケーションコンポーネントは、たとえば、無制限にエンタープライズｊａｖａ（登録商標）ビーン（ＥＪＢ：enterprise java（登録商標） bean）、Ｊａｖａ（登録商標）サーバページ（ＪＳＰ：Java（登録商標） Server Page）、サーブレット、またはそれらの任意の組み合わせを用いて実現されてもよく、アプリケーションサーバ１１０において展開、管理または実行される。
【００２２】
図１のコネクタアーキテクチャ１００はさらに、システムレベル規約（簡単にするため、図１には示さず）を含む。システムレベル規約は、リソースアダプタ１２０とアプリケーションサーバ１１０との間のデータの遣り取りを支配する。コントラクトは、コネクタアーキテクチャの接続管理または他の態様に関連してもよい。接続管理コントラクトは、アプリケーションサーバに、アプリケーションコンポーネントが種々のリソース１３０ａ，１３０ｂに接続することを可能にする接続のプールを提供する機能を有効にする。本発明の一実施形態において、接続管理は、接続プール構成、接続プール管理および接続管理に関する。
【００２３】
実施形態に対して利用可能な特徴および利点のいくつかを示すために、トランザクションの終了中にサーバ故障が生じた場合であっても、トランザクションの不分割性（atomicity）が保証されるＸＡプロトコルリカバリー処理を採用する実施例が次に記載される。ＸＡリカバリー処理は、２段階（two-phase）のトランザクションに関連している。２段階のトランザクションは、２つ以上のリソースマネジャがトランザクションにおいて必要とされる場合に有用である。一実施形態において、トランザクションマネジャ１１２は、１つのみのリソースマネジャが必要とされる場合には、２段階コミットプロトコルではなく、１段階コミットプロトコルに切り替えることによって、最適化を行う。２段階コミットトランザクションを行うための処理について、次に図２を参照して記載される。
【００２４】
図２は、トランザクションをコミットするための２段階コミット処理の概略を示す。図２に示されているように、コミット処理は、トランザクションを開始するアプリケーションを用いて始まる（ブロック２０１）。トランザクションマネジャは、リソースマネジャ１をトランザクションに登録して参加する（ブロック２０２）。トランザクションマネジャは、リソースマネジャ２をトランザクションに登録して参加する（ブロック２０３）。アプリケーションは、リソースマネジャ１およびリソースマネジャ２を用いて持続されることを意図する変更を呼び出す操作を行う（ブロック２０４）。アプリケーションは、トランザクションをコミットする（ブロック２０５）。トランザクションマネジャは、リソースマネジャ１におけるプリペアをコールする。リソースマネジャ１は、成功または失敗を示す状態コードを返す（ブロック２０６）。トランザクションマネジャは、リソースマネジャ２におけるプリペアをコールする。リソースマネジャ２は、成功または失敗を示す状態コードを返す（ブロック２０７）。いずれのリソースマネジャもプリペアコール中に失敗を返す場合には、トランザクションマネジャは、両方のリソースマネジャに関してトランザクションをロールバック（roll back）する（ブロック２０８〜２０９）。そうでない場合には、両方のリソースマネジャがコミットされる。すなわち、両方のリソースマネジャがプリペアの成功を返した場合には、トランザクションマネジャは、リソースマネジャ１をコミットし（ブロック２１０）、両方のリソースマネジャがプリペアの成功を返した場合には、トランザクションマネジャは、リソースマネジャ２をコミットする（ブロック２１１）。
【００２５】
このように、１つのリソースに対する変更が行われる場合には、対応する変化がトラン
ザクションにおける他のリソースの全てに対して行われることを保証するように、不分割性が維持される。しかし、この処理が、たとえば、図２によって上記で示されたブロック２１０とブロック２１１との間の処理の時点で、サーバクラッシュによって中断される場合には、リカバリーメカニズムが必要である。そのような故障が生じると、変更の１つの設定が、リソースマネジャ１を介してコミットされるが、対応する変更がリソースマネジャ２によっては行われないものとする。
【００２６】
アプリケーションサーバトランザクションマネジャ１１２は、トランザクションログと呼ばれるファイルにおいて、トランザクションの状態を持続的に保持する。サーバクラッシュおよび再起動後、トランザクションログは、トランザクションが完全に終了しなかったという情報を含む。しかし、要求を送信した後であるが、リソースマネジャからの応答を受信する前にクラッシュした可能性があるため、いずれのリソースマネジャが完全にコミットされたか、またはコミットされなかったかについては知ることはできない。いずれかの変更が処理中であるが、まだコミットされていない状態であることを示すことが、リソースマネジャの責務である。リカバリー処理が、トランザクションマネジャによって起動される場合には処理がなされたがまだコミットされていないトランザクションＩＤのリストに関して尋ねる要求をリソースマネジャに送信する。リソースマネジャは、この状態における変更のリストを返し、トランザクションマネジャは次に、残るリソースをコミットすることによってトランザクションを終了することができる。
【００２７】
従来の２段階コミット処理に関する問題点の１つは、アプリケーションサーバトランザクションマネジャ１１２が不完全なトランザクションに関するリカバリー処理を起動する処理である。トランザクションマネジャは、ＲＭが登録されるまで（図２によって示されるブロック２０２および２０３において行われるように）リカバリーされる必要があるものを照合しない。ＲＭが所与の名前で登録されると、トランザクションマネジャは次に、同じ名前のリソースマネジャを必要とした任意の未解決のトランザクションが存在したかどうかを確認するためにトランザクションログを照合する。存在した場合には、トランザクションマネジャは、新たに登録されたリソースマネジャにおいてリカバリー方法を呼び出す。これは、リソースアダプタに関する任意のリソースがリカバリーを必要とするかどうかに関する情報をコネクタコンテナが持たず、トランザクションマネジャは、そのようなリソースの登録があるまでリカバリーを呼び出さないことから、問題である。
【００２８】
リソースアダプタが長期間用いられない場合には、登録は、このときまで行われない可能性がある。１つの解決策は、コネクタコンテナに関して、リソースアダプタを介してバックエンドへの接続を常に作成し、トランザクションマネジャとの接続を登録して、任意の必要なリカバリーを開始することができるようにすることである。これは、うまく機能するが、リカバリーが必要でない場合には、接続を不必要に作成する原因となる。
【００２９】
図３は、実施形態における不完全なトランザクションからリカバリーするための技術の高いレベルの概略を示す動作流れ図である。図３に示される不完全なトランザクションからリカバリーするための技術は、アプリケーションサーバ、アプリケーションコンポーネントおよびリソースアダプタ、たとえば、図１のアプリケーションサーバ１１０、アプリケーションコンポーネント１４０およびリソースアダプタ１２０などによって動作可能である。図３に示されているように、ダミーリソースが作成され、サーバクラッシュ前に、リソースアダプタの前回の使用によって用いられた名前を用いて、トランザクションマネジャに登録される（ブロック３０２）。トランザクションマネジャは、名前を照合して、その名前が未解決のトランザクションにおいて必要とされたかどうかを判断する（ブロック３０４）。トランザクションマネジャが、その名前は未解決のトランザクションにおいて必要とされたと判断した場合には、ダミーリソースがリカバリーを開始するように呼び出されることができる（ブロック３０６）。したがって、ダミーリソースは次に、リカバ
リーが必要とされるかを判断することができる通知メカニズムとして用いることができる。実施形態において、実際の接続は、リソースアダプタによって作成され、リカバリー要求は、リソースアダプタに関して実際の下にあるリソースマネジャに供給される。ブロック３０２〜３０６の処理により、実施形態は、サーバ再始動およびアダプタの再展開時に、リカバリーを直ちに開始することを可能にするために、実際のアダプタ接続を不必要に作成しなくてもよい。
【００３０】
他の態様において、本発明は、一部の実施形態において、上記の方法を実行するように構成されるコンピュータ装置、計算システムおよび機械読出し可能な媒体を包含する。特別に設計された集積回路または他の電子機器からなる実施形態に加えて、本発明は、コンピュータ業界の当業者には明白であるように、本開示の教示によってプログラムされた従来の汎用または専用のディジタルコンピュータまたはマイクロプロセッサを用いて好都合に実現されてもよい。
【００３１】
適切なソフトウェアコーディングは、ソフトウェア業界の当業者には明白であるように、本開示の教示に基づき、熟練したプログラマによって容易に準備されることができる。本発明はまた、当業者には明白であるように、特定用途向け集積回路の作製または従来のコンポーネント回路の適切なネットワークの相互接続によって、実現されてもよい。
【００３２】
本発明は、本発明の処理のいずれかを行うようにコンピュータをプログラムするために用いることができる、その上／中に格納された命令を有する記憶媒体（媒体）であるコンピュータプログラム製品を含む。記憶媒体は、フロッピー（登録商標）ディスク、光ディスク、ＤＶＤ、ＣＤ−ＲＯＭ、マイクロドライブおよび光磁気ディスクをはじめとする任意のタイプの回転媒体並びに磁気カードもしくは光カード、ナノシステム（分子メモリＩＣを含む）または命令および／またはデータを格納するのに適した任意のタイプの媒体もしくはデバイスなどが挙げられるがこれらに限定されるわけではない。
【００３３】
本発明は、機械読み出し可能媒体（媒体）のうちのいずれか１つに格納され、汎用／専用コンピュータまたはマイクロプロセッサの両方のハードウェアを制御し、コンピュータまたはマイクロプロセッサに本発明の結果を利用する人間のユーザまたは他のメカニズムと対話することを可能にするためのソフトウェアを含む。そのようなソフトウェアとしては、デバイスドライブ、オペレーティングシステムおよびユーザアプリケーションが挙げられるがこれらに限定されるわけではない。
【００３４】
汎用／専用コンピュータまたはマイクロプロセッサのプログラミング（ソフトウェア）に含まれるのは、本発明の教示を実現するためのソフトウェアモジュールであり、本願明細書において説明されるように不完全なトランザクションからリカバリーするためのメカニズムおよび方法を提供することが挙げられるがこれらに限定されるわけではない。
【００３５】
図４は、例示の処理システム４００を示しており、図１の要素のうちの１つまたは複数を含むことができる。ここで、図４に目を向けると、例示の計算システムは、図１のコンポーネントのうちの１つまたは複数を備え得ることが示される。他の代替物を利用してもよいが、明確にするため、特に明記しない限り、図１のシステムのコンポーネントは、それと一致する１つまたは複数の計算システムによるハードウェア、ソフトウェアまたはいくつかの組み合わせにおいて実現されると仮定される。
【００３６】
計算システム４００は、Ｐｅｎｔｉｕｍ（登録商標）、Ｃｅｎｔｒｉｎｏ（登録商標）、Ｐｏｗｅｒ  ＰＣ（登録商標）、ディジタル信号プロセッサ（「ＤＳＰ」）など、１つまたは複数の汎用または専用プロセッサ４０２をはじめとする１つまたは複数の通信チャネル（たとえば、バス４０１）を介して連結されるコンポーネントを含む。システム４０
０コンポーネントは、特定の用途によれば、１つまたは複数の入力デバイス４０３（マウス、キーボード、マイクロホン、ペンなど）および適切なディスプレイ、スピーカ、アクチュエータなどの１つまたは複数の出力デバイス４０４を含む。（入力デバイスまたは出力デバイスもまた同様に、精神的または肉体的な障害者が用いるのに適したさらに特殊なデバイスまたはハードウェア／ソフトウェアデバイスの強化を含むことができることは十分に認識されよう。）
システム４００はまた、格納／メモリデバイスまたはハードまたは除去可能な格納／メモリ媒体などの機械読出し可能な記憶媒体４０６に連結される機械読出し可能な記憶媒体リーダ４０５を含む。そのようなデバイスまたは媒体はさらに、ストレージ装置４０８およびメモリ４０９として個別に示されており、特定のアプリケーションの要件に応じて、ハードディスクの各版、フロッピー（登録商標）／コンパクトディスクの各版、ディジタル多用途ディスク（「ＤＶＤ」の各版、スマートカード、読み出し専用メモリ、ランダムアクセスメモリ、キャッシュメモリなどを含んでもよい。１つまたは複数の適切な通信インターフェイス４０７もまた、モデム、ＤＳＬ、赤外線、ＲＦまたは他の適切なトランシーバなどを含んでもよく、デバイス間の通信を直接的に、または１つまたは複数の適切なプライベートネットワークもしくはパブリックネットワークまたは既に記載されたが、それらに限定されるわけではない他のコンポーネントを介して、提供する。
【００３７】
作業メモリ４１０はさらに、オペレーティングシステム（「ＯＳ」）４１１要素と、使用中にその中に格納され得るか、またはロードされ得るシステム４００コンポーネントを実現するために、アプリケーションプログラム、モバイルコード、データなどのうちの１つまたは複数などの他のプログラム４１２、と、を含む。特定のＯＳまたは複数のＯＳは、特定のアプリケーション（たとえば、Ｗｉｎｄｏｗｓ（登録商標）、Ｗｉｎｄｏｗｓ（登録商標）ＣＥ、Ｍａｃ（商標）、Ｌｉｎｕｘ、Ｕｎｉｘ（登録商標）またはＰａｌｍ（商標）ＯＳの各版、携帯電話ＯＳ、独自仕様のＯＳ、Ｓｙｍｂｉａｎ（商標）など）に基づく特定のデバイス、特徴または他の態様に応じて可変であってもよい。特定のアプリケーションの要件に応じて、Ｃの各版（たとえば、Ｃ＋＋，Ｃ＃）、Ｊａｖａ（登録商標）２プラットフォームエンタープライズエディション（「Ｊ２ＥＥ」）または他のプログラミング言語と互換性があるものなど、種々のプログラミング言語または他のツールもまた利用することができる。他のプログラム４１２としては、これらに限定されないが、本願明細書の他の場所で説明されたものをはじめとするたとえば、能動システム、教育マネジャ、教育インテグレータもしくはインターフェイス、セキュリティ、他の同期、他のブラウザまたはグループウェアコードのうち１つまたは複数などが挙げられる。
【００３８】
ソフトウェア（たとえば、全体または部分において、アプリケーションプログラム、オブジェクト、エージエント、ダウンロード可能なもの、サーブレットなど）に実現されると、学習統合システムまたは他のコンポーネントは、実行のために、暫定的にまたはさらに持続的に、ローカルストレージ装置またはリモートストレージ装置からメモリ（ＳＲＡＭ、キャッシュメモリなど）に通信されてもよく、または、別の適切なメカニズムを利用することができ、コンポーネントは、コンパイルまたはインタプリタ形式で実現されてもよい。特定のアプリケーションに応じて、入力データ、中間データもしくは最終データまたは機能要素はさらに、記憶媒体、キャッシュもしくは他の揮発性メモリまたは不揮発性メモリ（たとえば、記憶デバイス４０８またはメモリ４０９）に、さらに暫定的にまたはさらに持続的に常駐してもよい。
【００３９】
図面および特許請求の範囲を検討すれば、本発明の他の特徴、態様および目的を得ることができる。本発明の他の実施形態は、発展させることができ、本発明および特許請求の範囲の精神および範囲内に収まることを理解すべきである。本発明の好ましい実施形態の上記の説明は、説明および詳細のために提供されている。本発明を網羅することを意図しているわけではなく、開示された正確な形態に本発明を限定することを意図しているわけ
でもない。当業者には、多くの改変および変形は、明白であろう。本発明の原理およびその実際的な用途を最もよく説明するために、実施形態は選択されて記載され、それにより、当業者が、種々の実施形態に関して、本発明を理解することを可能にし、特定の用途に適している種々の変更を考えることが可能となる。本発明の範囲は、特許請求の範囲およびその等価物によって定義されることを意図している。
【図面の簡単な説明】
【００４０】
【図１】実施形態における不完全なトランザクションからリカバリーするための技術が実現され得る実施例の計算環境の機能ブロック図である。
【図２】トランザクションをコミットするための２段階コミット処理の概略を示す。
【図３】実施形態における不完全なトランザクションからリカバリーするための技術の高次概略を示す動作流れ図である。
【図４】実施形態における１つまたは複数のコンポーネントを具現するために用いられ得る実施例のコンピュータシステムのハードウェアブロック図である。
【図１】
2009535740.tif 000003
【図２】
2009535740.tif 000004
【図３】
2009535740.tif 000005
【図４】
2009535740.tif 000006
【国際調査報告】
2009535740.tif 000007