(57)【要約】【課題】  障害が発生した場合にリソースマネージャのロック時間を最小にし、システム全体の停止時間を最小限にすることが可能な分散トランザクション処理システムを提供する。【解決手段】  分散トランザクション処理システムは、トランザクションマネージャ（１１１−１，１１１−２）とリソースマネージャ（２２，３１）と中継装置（２１）とを含み、トランザクションマネージャの指示に基づいてリソースマネージャがトランザクションの二層コミットメント処理を行う。中継装置（２１）は、トランザクションマネージャの異常終了を検出する検出手段（２１１）と、検出手段が異常終了を検出した場合に二層コミットメント処理の第一層処理完了からの経過時間に基づいてリソースマネージャに対してトランザクションの二層コミットメント処理の第二層処理を実行する実行手段（２１５）とを有する。【選択図】      図１
2010146134.tif 000002
【特許請求の範囲】
【請求項１】
トランザクションマネージャとリソースマネージャと中継装置とを含み、トランザクションマネージャの指示に基づいてリソースマネージャがトランザクションの二層コミットメント処理を行う分散トランザクション処理システムであって、
前記中継装置は、前記トランザクションマネージャの異常終了を検出する検出手段と、前記検出手段が前記異常終了を検出した場合に前記二層コミットメント処理の第一層処理完了からの経過時間に基づいて前記リソースマネージャに対してトランザクションの前記二層コミットメント処理の第二層処理を実行する実行手段とを有することを特徴とする分散トランザクション処理システム。
【請求項２】
前記異常終了が検出された場合に前記トランザクションマネージャの復旧を待たずに前記リソースマネージャを更新することを特徴とする請求項１記載の分散トランザクション処理システム。
【請求項３】
前記中継装置は、前記中継装置が決定したトランザクションの状態を保持する記憶手段を含み、
前記記憶手段の記憶内容に基づいて、前記第一層処理が完了した状態で前記トランザクションマネージャに異常が発生したか、前記第一層処理が未完了の状態で前記トランザクションマネージャに異常が発生したか、前記第二層処理が完了した状態で前記トランザクションマネージャに異常が発生したかを判断することを特徴とする請求項１または請求項２記載の分散トランザクション処理システム。
【請求項４】
前記中継装置は、前記記憶手段の記憶内容に基づいて前記トランザクションを決定して前記リソースマネージャの更新を行うことを特徴とする請求項３記載の分散トランザクション処理システム。
【請求項５】
前記記憶手段を参照して前記リソースマネージャより前記第一層処理が完了しているトランザクション情報を入手し、前記第一層処理を完了したトランザクションを適切な状態に確定することを特徴とする請求項３または請求項４記載の分散トランザクション処理システム。
【請求項６】
前記異常終了から回復した場合に前記トランザクションマネージャと前記中継装置との間でトランザクションの整合性チェックを実施することを特徴とする請求項１から請求項５のいずれか記載の分散トランザクション処理システム。
【請求項７】
トランザクションマネージャとリソースマネージャと中継装置とを含み、トランザクションマネージャの指示に基づいてリソースマネージャがトランザクションの二層コミットメント処理を行う分散トランザクション処理システムに用いるサーバ装置であって、
前記トランザクションマネージャの異常終了を検出する検出手段と、前記検出手段が前記異常終了を検出した場合に前記二層コミットメント処理の第一層処理完了からの経過時間に基づいて前記リソースマネージャに対してトランザクションの前記二層コミットメント処理の第二層処理を実行する実行手段とを有することを特徴とするサーバ装置。
【請求項８】
前記異常終了が検出された場合に前記トランザクションマネージャの復旧を待たずに前記リソースマネージャを更新することを特徴とする請求項７記載のサーバ装置。
【請求項９】
決定したトランザクションの状態を保持する記憶手段を含み、
前記記憶手段の記憶内容に基づいて、前記第一層処理が完了した状態で前記トランザクションマネージャに異常が発生したか、前記第一層処理が未完了の状態で前記トランザクションマネージャに異常が発生したか、前記第二層処理が完了した状態で前記トランザクションマネージャに異常が発生したかを判断することを特徴とする請求項７または請求項８記載のサーバ装置。
【請求項１０】
前記記憶手段の記憶内容に基づいて前記トランザクションを決定して前記リソースマネージャの更新を行うことを特徴とする請求項９記載のサーバ装置。
【請求項１１】
前記記憶手段を参照して前記リソースマネージャより前記第一層処理が完了しているトランザクション情報を入手し、前記第一層処理を完了したトランザクションを適切な状態に確定することを特徴とする請求項９または請求項１０記載のサーバ装置。
【請求項１２】
前記異常終了から回復した場合に前記トランザクションマネージャとの間でトランザクションの整合性チェックを実施することを特徴とする請求項７から請求項１１のいずれか記載のサーバ装置。
【請求項１３】
トランザクションマネージャとリソースマネージャと中継装置とを含み、トランザクションマネージャの指示に基づいてリソースマネージャがトランザクションの二層コミットメント処理を行う分散トランザクション処理システムに用いる分散トランザクションの障害復旧方法であって、
前記中継装置が、前記トランザクションマネージャの異常終了を検出する検出処理と、前記検出処理にて前記異常終了が検出された場合に前記二層コミットメント処理の第一層処理完了からの経過時間に基づいて前記リソースマネージャに対してトランザクションの前記二層コミットメント処理の第二層処理を実行する実行処理とを実行することを特徴とする分散トランザクションの障害復旧方法。
【請求項１４】
前記異常終了が検出された場合に前記トランザクションマネージャの復旧を待たずに前記リソースマネージャを更新することを特徴とする請求項１３記載の分散トランザクションの障害復旧方法。
【請求項１５】
前記中継装置において、前記中継装置が決定したトランザクションの状態を記憶手段に保持しておき、
前記記憶手段の記憶内容に基づいて、前記第一層処理が完了した状態で前記トランザクションマネージャに異常が発生したか、前記第一層処理が未完了の状態で前記トランザクションマネージャに異常が発生したか、前記第二層処理が完了した状態で前記トランザクションマネージャに異常が発生したかを判断することを特徴とする請求項１３または請求項１４記載の分散トランザクションの障害復旧方法。
【請求項１６】
前記中継装置が、前記記憶手段の記憶内容に基づいて前記トランザクションを決定して前記リソースマネージャの更新を行うことを特徴とする請求項１５記載の分散トランザクションの障害復旧方法。
【請求項１７】
前記中継装置が、前記記憶手段を参照して前記リソースマネージャより前記第一層処理が完了しているトランザクション情報を入手し、前記第一層処理を完了したトランザクションを適切な状態に確定することを特徴とする請求項１５または請求項１６記載の分散トランザクションの障害復旧方法。
【請求項１８】
前記異常終了から回復した場合に前記トランザクションマネージャと前記中継装置との間でトランザクションの整合性チェックを実施することを特徴とする請求項１３から請求項１７のいずれか記載の分散トランザクションの障害復旧方法。
【請求項１９】
トランザクションマネージャとリソースマネージャと中継装置とを含み、トランザクションマネージャの指示に基づいてリソースマネージャがトランザクションの二層コミットメント処理を行う分散トランザクション処理システムにおいて前記中継装置内の中央処理装置が実行するプログラムであって、
前記トランザクションマネージャの異常終了を検出する検出処理と、前記検出処理にて前記異常終了が検出された場合に前記二層コミットメント処理の第一層処理完了からの経過時間に基づいて前記リソースマネージャに対してトランザクションの前記二層コミットメント処理の第二層処理を実行する実行処理とを含むことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は分散トランザクション処理システム、サーバ装置及びそれらに用いる分散トランザクションの障害復旧方法並びにそのプログラムに関し、特に障害発生時における分散トランザクションの障害復旧に関する。
【背景技術】
【０００２】
本発明に関連する分散トランザクション処理システムでは、複数のリソースマネージャを有し、それら複数のリソースマネージャのコミットメントを正しく行うために、トランザクションマネージャが二層コミットメントの手続きを実施している。
【０００３】
以下、二層コミットメント処理の概略について説明する。二層コミットメント処理は、第一層処理と第二層処理とからなっている。トランザクションの更新処理では、トランザクションマネージャが第１層処理として各リソースマネージャに対してプリペアリクエストを発行する。各リソースマネージャはコミットメントの可否をトランザクションマネージャに返答する。
【０００４】
トランザクションマネージャは、全てのリソースマネージャから返答を受け取ると、全てのリソースマネージャからコミットメント可能の返答を受け取った場合、第二層処理としてコミットメントリクエストを発行する。トランザクションマネージャは、全てのリソースマネージャから第二層処理の返答を受け取った時点で、一連のトランザクションを完了する。
【０００５】
第一層処理において、一つ以上のリソースマネージャからコミット不可の返答を受け取った場合、トランザクションマネージャは、第二層処理としてロールバックリクエストを発行し、全てのリソースマネージャから返答を受け取った時点で一連のトランザクションを完了する。
【０００６】
トランザクション処理は、トランザクション実行中にトランザクションマネージャが動作するサーバ装置が停止した場合に未完了状態となり、トランザクションに関連するリソースマネージャは、データベースの更新処理が完了するまでの間、他からの更新が行われないようにするためにロックされているので、使用不能状態となっている。トランザクション処理は、トランザクションマネージャが動作するサーバ装置が起動した際に再開される。
【０００７】
アプリケーションの信頼性を高める場合は、稼動系のサーバ装置と待機系のサーバ装置との対からなるクラスタを構成する。この構成において、トランザクションマネージャは、稼動系のサーバ装置が停止した場合、直ちに待機系のサーバ装置が起動してトランザクション処理が再開され、リソースマネージャのロックが解放される。
【０００８】
本発明に関連する他の分散トランザクションの障害復旧方式としては、同一ノード内にトランザクションをリカバリするための装置を用意する方式（例えば、特許文献１参照）、障害発生時に仕掛かり中のトランザクションの決着処理を短時間に行う方式（例えば、特許文献２参照）が提案されている。
【特許文献１】特開２００５−２５０９９８号公報
【特許文献２】特開２００４−２３４２０３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながら、近年、アプリケーションの信頼性を高めるために、図１で示すように、負荷分散装置を用いて複数のサーバ装置へ処理を振り分けている。この方式では、サーバ装置に待機系を配置しない構成をとる。
【００１０】
そのため、あるサーバ装置が停止した場合、そのサーバ装置上で動作していたトランザクションは代替装置での起動が行われない。よって、リソースマネージャの更新中の領域は、他のトランザクションから参照不可であるため、トランザクションが回復以前に他のサーバ装置からリソースマネージャへの処理が行われると、システム全体が停止してしまうという問題がある。
【００１１】
本発明に関連する分散トランザクション処理システムの問題点は、サーバ障害等が発生した場合に、トランザクションが回復するのに時間がかかるということである。
【００１２】
その理由は、上記の特許文献１の方式の場合、トランザクション復旧手段やトランザクション情報管理テーブルとトランザクション実行手段が同一サーバ上で動作するため回復ができず、上記の特許文献２の方式の場合、トランザクション復旧手段を含むサーバがダウンすると、トランザクションの回復手段がないためである。
【００１３】
そこで、本発明の目的は上記の問題点を解消し、障害が発生した場合にリソースマネージャのロック時間を最小にすることができ、システム全体の停止時間を最小限にすることができる分散トランザクション処理システム、サーバ装置及びそれらに用いる分散トランザクションの障害復旧方法並びにそのプログラムを提供することにある。
【課題を解決するための手段】
【００１４】
本発明による分散トランザクション処理システムは、トランザクションマネージャとリソースマネージャと中継装置とを含み、トランザクションマネージャの指示に基づいてリソースマネージャがトランザクションの二層コミットメント処理を行う分散トランザクション処理システムであって、
前記中継装置は、前記トランザクションマネージャの異常終了を検出する検出手段と、前記検出手段が前記異常終了を検出した場合に前記二層コミットメント処理の第一層処理完了からの経過時間に基づいて前記リソースマネージャに対してトランザクションの前記二層コミットメント処理の第二層処理を実行する実行手段とを備えている。
【００１５】
本発明によるサーバ装置は、トランザクションマネージャとリソースマネージャと中継装置とを含み、トランザクションマネージャの指示に基づいてリソースマネージャがトランザクションの二層コミットメント処理を行う分散トランザクション処理システムに用いるサーバ装置であって、
前記トランザクションマネージャの異常終了を検出する検出手段と、前記検出手段が前記異常終了を検出した場合に前記二層コミットメント処理の第一層処理完了からの経過時間に基づいて前記リソースマネージャに対してトランザクションの前記二層コミットメント処理の第二層処理を実行する実行手段とを備えている。
【００１６】
本発明による分散トランザクションの障害復旧方法は、トランザクションマネージャとリソースマネージャと中継装置とを含み、トランザクションマネージャの指示に基づいてリソースマネージャがトランザクションの二層コミットメント処理を行う分散トランザクション処理システムに用いる分散トランザクションの障害復旧方法であって、
前記中継装置が、前記トランザクションマネージャの異常終了を検出する検出処理と、前記検出処理にて前記異常終了が検出された場合に前記二層コミットメント処理の第一層処理完了からの経過時間に基づいて前記リソースマネージャに対してトランザクションの前記二層コミットメント処理の第二層処理を実行する実行処理とを実行している。
【００１７】
本発明によるプログラムは、トランザクションマネージャとリソースマネージャと中継装置とを含み、トランザクションマネージャの指示に基づいてリソースマネージャがトランザクションの二層コミットメント処理を行う分散トランザクション処理システムにおいて前記中継装置内の中央処理装置が実行するプログラムであって、
前記トランザクションマネージャの異常終了を検出する検出処理と、前記検出処理にて前記異常終了が検出された場合に前記二層コミットメント処理の第一層処理完了からの経過時間に基づいて前記リソースマネージャに対してトランザクションの前記二層コミットメント処理の第二層処理を実行する実行処理とを含むことを特徴とする。
【発明の効果】
【００１８】
本発明は、上記のような構成及び動作とすることで、障害が発生した場合にリソースマネージャのロック時間を最小にすることができ、システム全体の停止時間を最小限にすることができるという効果が得られる。
【発明を実施するための最良の形態】
【００１９】
次に、本発明の実施の形態について図面を参照して説明する。まず、本発明による分散トランザクション処理システムの概要について説明する。本発明による分散トランザクション処理システムは、端末装置とサーバ装置と負荷分散装置とをＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）で接続し、端末装置からサーバ装置に対してデータの更新を行うシステムである。
【００２０】
上記のシステムにおいて、サーバ装置は、リソースマネージャと中継装置とからなり、中継装置は切断検出部と、受信部と、送信部と、記憶部と、経過判断部とを備え、サーバ装置の障害によりトランザクションの継続が困難になった場合に、中継装置がトランザクションを決定することによって、リソースマネージャのロック時間を最小にすることができ、システム全体の停止時間を最小限にすることができる。
【００２１】
尚、本発明による分散トランザクション処理システムは、上述した背景技術のように、複数のリソースマネージャを有し、それら複数のリソースマネージャのコミットメントを正しく行うために、トランザクションマネージャが二層コミットメントの手続きを実施しているものとする。
【００２２】
本発明による分散トランザクション処理システムでは、サーバ装置の障害が発生した場合に、第一層処理からの経過時間に基づいてトランザクションの状態を決定することで、システム全体での処理を継続している。これによって、本発明による分散トランザクション処理システムでは、トランザクションマネージャが解決するトランザクションをリソースマネージャ側で決定することによって、リソースマネージャのロック時間を最小にすることができ、システム全体の停止時間を最小限にすることができる。
【００２３】
図１は本発明の第１の実施の形態による分散トランザクション処理システムの構成例を示すブロック図である。図１において、本発明の第１の実施の形態による分散トランザクション処理システムは、負荷分散装置５に接続された２台のサーバ装置１−１，１−２と、データベース等のリソースマネージャが動作するサーバ装置２及びサーバ装置３と、端末装置４−１，４−２と、これらを接続するネットワークとから構成されている。
【００２４】
サーバ装置１−１は、アプリケーションサーバ１１−１を備え、アプリケーションサーバ１１−１は、トランザクションマネージャ１１１−１と、アプリケーション１１２−１とを含んでいる。サーバ装置１−２は、アプリケーションサーバ１１−２を備え、アプリケーションサーバ１１−２は、トランザクションマネージャ１１１−２と、アプリケーション１１２−２とを含んでいる。
【００２５】
サーバ装置２は、中継装置２１と、リソースマネージャ２２とを備え、中継装置２１は、切断検出部２１１と、受信部２１２と、送信部２１３と、記憶部２１４と、経過判断部２１５とを含んでいる。サーバ装置３は、リソースマネージャ３１を備えている。
【００２６】
トランザクションマネージャ１１１−１は、サーバ装置１−１のアプリケーションサーバ１１−１上で動作を行い、リソースマネージャ２２とリソースマネージャ３１との分散トランザクションを管理する。
【００２７】
アプリケーション１１２−１は、端末装置４−１と端末装置４−２とから要求を受け、リソースマネージャ２２とリソースマネージャ３１との情報の更新を行い、トランザクションマネージャ１１１−１に対してコミットメントもしくはロールバック要求を行う。
【００２８】
切断検出部２１１は、サーバ装置２の中継装置２１上で動作し、トランザクションマネージャ１１１−１，１１１−２の動作停止を検出する。受信部２１２は、サーバ装置２の中継装置２１上で動作し、アプリケーション１１２−１，１１２−２及びトランザクションマネージャ１１１−１，１１１−２からリソースマネージャ２２への通信を受信する。
【００２９】
送信部２１３は、サーバ装置２の中継装置２１上で動作し、受信部２１２で受信した通信内容をリソースマネージャ２２に送信すると共に、リソースマネージャ２２が停止した時にリソースマネージャ２２にトランザクション完了通知を送信する。
【００３０】
記憶部２１４は、サーバ装置２の中継装置２１上で動作し、中継装置２１が決定したトランザクションの状態を保持する。
【００３１】
図２及び図３は本発明の第１の実施の形態による分散トランザクション処理システムにおけるトランザクションが正常に終了する場合の動作の流れを示すシーケンスチャートであり、図４は本発明の第１の実施の形態による分散トランザクション処理システムにおいてサーバ装置に異常が発生した場合の動作の流れを示すフローチャートである。
【００３２】
図５は本発明の第１の実施の形態による分散トランザクション処理システムにおいてサーバ装置が障害からの回復した場合の動作の流れを示すシーケンスチャートである。これら図１〜図５を参照して本発明の第１の実施の形態による分散トランザクション処理システム全体の動作について説明する。尚、図２〜図５の処理において、サーバ装置２の中継装置２１が実行する処理は、図示せぬＣＰＵ（中央処理装置）がプログラムを実行することで実現される。
【００３３】
以下の説明においては、端末装置４−１から負荷分散装置５を介してサーバ装置１−１に処理を行うものとする。また、端末装置４−１からの要求は、サーバ装置２、サーバ装置３上のリソースマネージャ２２とリソースマネージャ３１とを更新するものとする。
【００３４】
以下、
・正常に終了する場合の動作
・異常が発生した場合の動作（ケース１：第一層処理が完了した状態でサーバ装置１−１に異常が発生）
・異常が発生した場合の動作（ケース２：第一層処理が未完了の状態でサーバ装置１−１に異常が発生）
・異常が発生した場合の動作（ケース３：第二層処理が完了した状態でサーバ装置１−１に異常が発生）
・異常発生後に回復した場合の動作（サーバ装置１−１が再起動）
という各ケースの動作について説明する。
【００３５】
まず、正常に終了する場合、すなわちトランザクションマネージャ１１１−１からリソースマネージャ２２とリソースマネージャ３１への二層コミットメント処理が正常に終了した場合の処理について説明する。
【００３６】
図２及び図３を参照すると、まず、端末装置４−１が負荷分散装置５に対してトランザクション処理要求を発行する（図２のａ１）。負荷分散装置５は、接続されるサーバ装置１−１に対して、端末装置４−１から受信したトランザクション処理要求を転送する（図２のａ２）。
【００３７】
サーバ装置１−１のアプリケーションサーバ１１は、トランザクション処理要求を受信すると、トランザクションマネージャ１１１−１を用いてトランザクションを開始する。ここで開始されるトランザクションを［Ｔ１］とする（図２のａ３）。
【００３８】
アプリケーションサーバ１１上のアプリケーション１１２−１は、リソースマネージャ２２を更新するため、中継装置２１に対して更新処理を要求する（図２のａ４）。
【００３９】
中継装置２１上の受信部２１２は、アプリケーション１１２−１からの更新要求を受信すると、その更新要求を送信部２１３を用いてリソースマネージャ２２に送信する（図２のａ５）。その後、リソースマネージャ２２はデータの更新を行う。リソースマネージャ２２の更新後、中継装置２１の記憶部２１４は、現在の時刻、トランザクション情報、サーバ装置１−１の情報を記録する（図２のａ６）。
【００４０】
アプリケーションサーバ１１上のアプリケーション１１２−１は、リソースマネージャ３１を更新する（図２のａ７）。アプリケーション１１２−１の処理完了後、アプリケーションサーバ１１は、トランザクションマネージャ１１１−１を用いてトランザクション［Ｔ１］のコミットメント処理を行う（図２のａ８）。
【００４１】
トランザクションマネージャ１１１−１は、リソースマネージャ２２の第一層処理を開始し、中継装置２１に対して第一層処理の開始要求を発行する（図２のａ９）。
【００４２】
中継装置２１上の受信部２１２は、第一層処理の開始要求を受けると、送信部２１３を用いてリソースマネージャ２２に第一層処理の開始要求を送信する（図２のａ１０）。リソースマネージャ２２は、第一層処理を実行する。
【００４３】
その第一層処理の完了後、中継装置２１上の記憶部２１４は、上記のａ６の処理で記憶した時刻を現在の時刻で更新すると共に、第一層処理の完了の状態を記憶する（図３のａ１１）。
【００４４】
リソースマネージャ２２の第一層処理の完了後、トランザクションマネージャ１１１−１は、リソースマネージャ３１に第一層処理を要求する（図３のａ１２）。リソースマネージャ３１は、第一層処理を実行する。
【００４５】
リソースマネージャ２２とリソースマネージャ３１とにおいて第一層処理が完了した後、トランザクションマネージャ１１１−１は、第二層処理を開始する。上記の第一層処理と同様に、トランザクションマネージャ１１１−１は、リソースマネージャの第二層処理要求を中継装置２１に対して発行する（図３のａ１３）。
【００４６】
第二層処理の開始要求を受けた中継装置２１上の受信部２１２は、送信部２１３を用いてリソースマネージャ２２に第二層処理要求の開始を送信する（図３のａ１４）。リソースマネージャ２２は、第二層処理を実行する。
【００４７】
その第二層処理の完了後、中継装置２１上の記憶部２１４は、上記のａ６の処理とａ１１の処理とで記憶した情報の削除を行う（図３のａ１５）。
【００４８】
トランザクションマネージャ１１１−１は、リソースマネージャ３１に対し、第二層処理の開始を要求する（図３のａ１６）。リソースマネージャ３１は、第二層処理を実行する。
【００４９】
リソースマネージャ２２及びリソースマネージャ３１で第二層処理が完了することによって、トランザクション［Ｔ１］は完了する（図３のａ１７）。
続いて、異常が発生した場合（ケース１）、すなわち第一層処理の完了時にサーバ装置１−１で障害が発生した場合の処理について説明する。
【００５０】
図４を参照すると、先ず中継装置２１の切断検出部２１１がサーバ装置１−１の停止を検出すると（図４ステップＳ１）、経過判断部２１５は、記憶部２１４からトランザクションの状態を取得する（図４ステップＳ２）。
【００５１】
経過判断部２１５は、現在の時刻と記憶部２１４に記録されている時刻との差分よりトランザクションの決定を行う（図４ステップＳ３）。送信部２１３は、リソースマネージャ２２に対して第一層処理が処理済みのトランザクションの一覧を要求する（図４ステップＳ４）。リソースマネージャ２２は、第一層処理の結果を中継装置２１に返却する。
【００５２】
中継装置２１は、トランザクションの決定に基づき、記憶部２１４に登録されているトランザクションに対して第二層処理を送信する（図４ステップＳ５）。記録部２１４は、登録されているトランザクション情報を更新する（図４のステップＳ６）。
【００５３】
これらの処理によって、リソースマネージャ２２の更新処理は正常に完了する。
【００５４】
次に、異常が発生した場合（ケース２）、すなわち第一層処理が未完了時にサーバ装置１−１で障害が発生した場合の処理について説明する。
【００５５】
まず、中継装置２１の切断検出部２１１がサーバ装置１−１の停止を検出すると、経過判断部２１５は、記憶部２１４からトランザクションの状態を取得する。この場合、経過判断部２１５は、記憶部２１４にトランザクションの状態が記録されていないため、トランザクションとしてロールバックに決定する。
【００５６】
中継装置２１は、このトランザクションの決定に基づき、記憶部２１４に登録されているトランザクションに対してロールバック処理を要求する。記録部２１４は、登録されているトランザクション情報を削除する。
【００５７】
これらの処理によって、第一層処理が完了していないトランザクションはすべてロールバック処理を完了する。
【００５８】
さらに、異常が発生した場合（ケース３）、すなわち第二層処理が完了時にサーバ装置１−１で障害が発生した場合の処理について説明する。
【００５９】
まず、中継装置２１の切断検出部２１１がサーバ装置１−１の停止を検出すると、経過判断部２１５は、記憶部２１４からトランザクションの状態を取得する。この場合、経過判断部２１５は、記憶部２１４にトランザクションの状態が記録されていないため、以後の処理は実施されない。リソースマネージャ２２は、すべて処理を完了しているため、サーバ装置１−２からのトランザクション処理を妨げることはない。
【００６０】
次に、サーバ装置１−１が障害から回復した場合、すなわちトランザクションマネージャ１１１−１が処理を再開する場合について説明する。
【００６１】
トランザクションマネージャ１１１−１は、トランザクション決定時、すなわちすべてのリソースマネージャ２２，３１に対しての第一層処理が完了している場合、トランザクションのリカバリ処理を実行する。
【００６２】
図５を参照すると、サーバ装置１−１の再起動後、トランザクションマネージャ１１１−１は、リソースマネージャ２２のトランザクションの状態を確認するため、トランザクション確認要求を発行する（図５のｂ１）。
【００６３】
中継装置２１上の受信部２１２は、トランザクション状態確認要求を受信すると、記録部２１４に記録されているトランザクション状態を返却する（図５のｂ２）。
【００６４】
トランザクションマネージャ１１１−１は、トランザクション状態と整合を取ると共に、リソースマネージャ３１のトランザクションが完了していなければ、トランザクション処理を再開する（図５のｂ３）。この際、トランザクションマネージャ１１１−１と中継装置２１とから返却された状態に不一致があれば、トランザクションマネージャ１１１−１は、ログ等に状態を出力する。
【００６５】
以上の処理により仕掛かり中のトランザクションは、完了、あるいは状態不一致の状態となり、完了する。状態不一致のトランザクションについては、運用管理者が手動にて状態を一致させる。
【００６６】
このように、本実施の形態では、中継装置２１がトランザクションマネージャ１１１−１を含むサーバ装置１−１の異常終了を検出し、独自にトランザクションを決定するので、トランザクションマネージャ１１１−１の復旧を待たずに、リソースマネージャ２２，３１を更新する。
【００６７】
本実施の形態では、トランザクションマネージャ１１１−１の復旧を要求しないため、アプリケーションサーバ１１を含むサーバ装置１−１はクラスタ構成等の特別な構成をとる必要がなく、装置の再起動等が行われない状況においても、他のサーバ装置からの処理がリソースマネージャ２２，３１の更新のためのロック等により中断されることはない。
【００６８】
したがって、本実施の形態では、中継装置２１がトランザクションを決定し、リソースマネージャ２２，３１を更新するため、トランザクションマネージャ１１１−１の障害時にトランザクションマネージャ１１１−１の状態にかかわらず、短時間でリソースマネージャ２２，３１のロックを解放することができる。
【００６９】
よって、本実施の形態では、サーバ装置１−１に障害が発生した場合にリソースマネージャ２２，３１のロック時間を最小にすることができ、システム全体の停止時間を最小限にすることができる。
【００７０】
尚、上記の実施の形態では、２台のサーバ装置を用いて、データの更新を行う場合について説明したが、サーバマシンの数、端末装置の数、リソースマネージャの数に制限はない。また、リースマネージャはデータベースやメッセージキューシステム等、トランザクションマネージャと連携する機能を有しているものであり、機能的な制限はない。
【産業上の利用可能性】
【００７１】
本発明は、複数のデータベースを参照する情報更新装置や、情報更新装置をコンピュータに実現するためのプログラムといった用途に適用することができる。
【図面の簡単な説明】
【００７２】
【図１】本発明の第１の実施の形態による分散トランザクション処理システムの構成例を示すブロック図である。
【図２】本発明の第１の実施の形態による分散トランザクション処理システムにおけるトランザクションが正常に終了する場合の動作の流れを示すシーケンスチャートである。
【図３】本発明の第１の実施の形態による分散トランザクション処理システムにおけるトランザクションが正常に終了する場合の動作の流れを示すシーケンスチャートである。
【図４】本発明の第１の実施の形態による分散トランザクション処理システムにおいてサーバ装置に異常が発生した場合の動作の流れを示すフローチャートである。
【図５】本発明の第１の実施の形態による分散トランザクション処理システムにおいてサーバ装置が障害からの回復した場合の動作の流れを示すシーケンスチャートである。
【符号の説明】
【００７３】
１−１，１−２，２，３  サーバ装置
４−１，４−２  端末装置
５  負荷分散装置
１１−１，１１−２  アプリケーションサーバ
２１  中継装置
２２，３１  リソースマネージャ
１１１−１，１１１−２  トランザクションマネージャ
１１２−１，１１２−２  アプリケーション
２１１  切断検出部
２１２  受信部
２１３  送信部
２１４  記憶部
２１５  経過判断部
【図１】
2010146134.tif 000003
【図２】
2010146134.tif 000004
【図３】
2010146134.tif 000005
【図４】
2010146134.tif 000006
【図５】
2010146134.tif 000007