(57)【要約】【課題】アプリケーションプログラムが動作中にＥＪＢ（登録商標）コンテナが異常終了した場合に、仕掛かり中トランザクションの決着処理を短時間に行うこと。【解決手段】複数のＥＪＢ（登録商標）コンテナと、各ＥＪＢ（登録商標）コンテナに接続されたトランザクション集中管理部と、各ＥＪＢ（登録商標）コンテナに接続されたリソースと、を備えた分散トランザクションシステムであって、一のＥＪＢ（登録商標）コンテナがアクセス対象としているリソースの情報を一のＥＪＢ（登録商標）コンテナからトランザクション集中管理部に通知し、トランザクション集中管理部が一のＥＪＢ（登録商標）コンテナによるトランザクション実行中の異常終了を検知した場合に、トランザクション集中管理部を経由して通知されたリソースの情報を使用して他のＥＪＢ（登録商標）コンテナが仕掛かり中のアクセスの決着処理をリソースに対して要求すること。【選択図】        図１
2004234203.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションプログラム、トランザクションマネージャ、リソースマネージャ、他のＥＪＢ（登録商標）コンテナ情報保持部、を有する複数のＥＪＢ（登録商標）コンテナと、各ＥＪＢ（登録商標）コンテナの前記トランザクションマネージャに接続されたトランザクション集中管理部と、各ＥＪＢ（登録商標）コンテナのリソースマネージャに接続されたリソースと、を備えた分散トランザクションシステムにおける障害復旧方法であって、
一のＥＪＢ（登録商標）コンテナ上で動作するアプリケーションプログラムがアクセス対象としているリソースの情報を前記一のＥＪＢ（登録商標）コンテナから前記トランザクション集中管理部に通知するステップと、
前記トランザクション集中管理部が前記一のＥＪＢ（登録商標）コンテナによるトランザクション実行中の異常終了を検知するステップと、
前記異常終了の検知ステップの場合に、前記トランザクション集中管理部を経由して通知された前記リソースの情報を使用して他のＥＪＢ（登録商標）コンテナが仕掛かり中のアクセスの決着処理を前記リソースに対して要求するステップと、から構成される
ことを特徴とする障害復旧方法。
【請求項２】
請求項１において、
前記トランザクション集中管理部が前記リソースの情報を他のＥＪＢ（登録商標）コンテナ情報部に通知するのは、常時又は一定期間毎、若しくは異常終了検知時であることを特徴とする障害復旧方法。
【請求項３】
アプリケーションプログラム、トランザクションマネージャ、リソースマネージャ、他のＥＪＢ（登録商標）コンテナ情報保持部、を有する複数のＥＪＢ（登録商標）コンテナと、各ＥＪＢ（登録商標）コンテナの前記トランザクションマネージャに接続されたトランザクション集中管理部と、各ＥＪＢ（登録商標）コンテナのリソースマネージャに接続されたリソースと、を備えた分散トランザクションシステムの障害復旧システムであって、
一のＥＪＢ（登録商標）コンテナ上で動作するアプリケーションプログラムがアクセス対象としているリソースの情報を前記一のＥＪＢ（登録商標）コンテナのトランザクションマネージャから前記トランザクション集中管理部に通知し、
前記トランザクション集中管理部が前記一のＥＪＢ（登録商標）コンテナによるトランザクション実行中の異常終了を検知した場合、前記トランザクション集中管理部を経由して通知された前記リソースの情報を使用して、他のＥＪＢ（登録商標）コンテナが仕掛かり中のアクセスの決着処理を前記リソースに対して要求する
ことを特徴とする障害復旧システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はコンピュータシステムの分散トランザクションシステムに係り、特に、ＥＪＢ（登録商標）コンテナ異常終了時に仕掛かり中トランザクションを短時間で決着するシステムに関する。
【０００２】
【従来の技術】
従来技術における、Ｊａｖａ（登録商標）の技術を使用した分散トランザクションシステムにおいて、アプリケーションプログラムが動作中（トランザクション処理中）にＥＪＢ（登録商標）コンテナ（Ｅｎｔｅｒｐｒｉｓｅ  Ｊａｖａ（登録商標）Ｂｅａｎｓ（ＴＭ）  ｃｏｎｔａｉｎｅｒ）が異常終了した場合、当該ＥＪＢ（登録商標）コンテナを再起動し、当該ＥＪＢ（登録商標）コンテナが取得していた履歴情報から、当該アプリケーションプログラムがアクセスしていた可能性があるリソースマネージャーに対して、仕掛かり中のアクセスを決着（コミット（ｃｏｍｍｉｔ）／ロールバック（ｒｏｌｌ  ｂａｃｋ））する指示を行うことが一般的であった。
【０００３】
また、トランザクション処理において、決着処理時間を短縮する方法としてアプリケーションプログラム自体で処理する方式が提案されている（特許文献１参照）。この特許文献１によると、トランザクションマネージャの出力するトランザクションマネージャ履歴情報に含まれるグローバルトランザクションＩＤをキーにしてリソースマネージャの出力するリソースマネージャ履歴情報を検索し、一致するトランザクションについてトランザクションの決着を示す情報同士が一致するか否かを照合して回復処理させている。
【０００４】
【特許文献１】
特開平８−２３５０３９号公報
【０００５】
【発明が解決しようとする課題】
上述した従来技術では、仕掛かり中のアクセスが決着（コミット／ロールバック）されるまでの間、当該アプリケーションプログラムがアクセス中であったリソースは、他のトランザクションからも使用できない状態となるため、仕掛かり中のアクセスをできるだけ短時間に決着することが求められていた。
【０００６】
また、上記特許文献１では、ＥＪＢ（登録商標）コンテナを採用しておらず、アプリケーションプログラムがアクセス対象のリソース情報を固定的に保持しているので、種々のリソースに対する汎用性と云う観点で配慮に欠ける。
【０００７】
本発明の目的は、Ｊａｖａ（登録商標）（プログラミング言語の一種）の技術を使用した分散トランザクションシステムにおいて、アプリケーションプログラムが動作中（トランザクション処理中）にＥＪＢ（登録商標）コンテナが異常終了した場合に、仕掛かり中トランザクションの決着処理を短時間に行う技術を提供することにある。
【０００８】
【課題を解決するための手段】
前記課題を解決するために、本発明は主として次のような構成を採用する。
アプリケーションプログラム、トランザクションマネージャ、リソースマネージャ、他のＥＪＢ（登録商標）コンテナ情報保持部、を有する複数のＥＪＢ（登録商標）コンテナと、各ＥＪＢ（登録商標）コンテナの前記トランザクションマネージャに接続されたトランザクション集中管理部と、各ＥＪＢ（登録商標）コンテナのリソースマネージャに接続されたリソースと、を備えた分散トランザクションシステムであって、
一のＥＪＢ（登録商標）コンテナ上で動作するアプリケーションプログラムがアクセス対象としているリソースの情報を前記一のＥＪＢ（登録商標）コンテナから前記トランザクション集中管理部に通知し、
前記トランザクション集中管理部が前記一のＥＪＢ（登録商標）コンテナによるトランザクション実行中の異常終了を検知した場合に、前記トランザクション集中管理部を経由して通知された前記リソースの情報を使用して他のＥＪＢ（登録商標）コンテナが仕掛かり中のアクセスの決着処理を前記リソースに対して要求する構成とする。
【０００９】
本発明は、この構成を採用することにより、ＥＪＢ（登録商標）コンテナがトランザクション実行中に異常終了した場合に、他の起動済ＥＪＢ（登録商標）コンテナが、仕掛かり中のアクセスの決着処理をリソースに対して要求するので、ＥＪＢ（登録商標）コンテナ起動処理に要する時間分だけ回復時間を短縮することができる。
【００１０】
【発明の実施の形態】
本発明の実施形態に係る分散トランザクションシステムについて、図面を参照しながら以下説明する。図１は、本発明の実施形態に係るコンピュータシステムの分散トランザクションシステムにおける全体構成を示す図である。
【００１１】
図１において、分散トランザクションシステムは、ＥＪＢ（登録商標）コンテナ（Ｅｎｔｅｒｐｒｉｓｅ  Ｊａｖａ（登録商標）Ｂｅａｎｓ（ＴＭ）ｃｏｎｔａｉｎｅｒ）１０１，１１１と、ＤＢＭＳ（Ｄａｔａ  Ｂａｓｅ  Ｍａｎａｇｅｍｅｎｔ  Ｓｙｓｔｅｍ）１２０と、トランザクション集中管理１３０と、から構成されており、ＥＪＢ（登録商標）コンテナ１０１上には、アプリケーションプログラム１０２、トランザクションマネージャ１０３、リソースマネージャ１０４、他ＥＪＢ（登録商標）コンテナ情報１０５が存在する。ここで、他ＥＪＢ（登録商標）コンテナ情報１０５は、トランザクションマネージャ１０３が他のＥＪＢ（登録商標）コンテナ１１１がアクセス対象としているリソースを記憶するためのものである。同様の構成のＥＪＢ（登録商標）コンテナは、他にも複数個存在し、その一つがＥＪＢ（登録商標）コンテナ１１１である。
【００１２】
トランザクション集中管理１３０は、各ＥＪＢ（登録商標）コンテナ上に存在するトランザクションマネージャ１０３，１１３を制御するためのものであり、ＥＪＢ（登録商標）コンテナとは別のプロセスで動作している。また、ＤＢＭＳ１２０は、アプリケーションプログラム１０２，１１２から、リソースマネージャ１０４，１１４経由で参照・更新要求を受ける。なお、本発明の実施形態では、リソースの一例としてＤＢＭＳを使って説明を行う。
【００１３】
図１に示す構成例は、二つのＥＪＢ（登録商標）コンテナが、お互いの情報を持ち合う形になっているが、一つ又は複数個のＥＪＢ（登録商標）コンテナが、複数個のＥＪＢ（登録商標）コンテナの情報を全て記憶する形でもよい。また、他ＥＪＢ（登録商標）コンテナの情報を記憶するＥＪＢ（登録商標）コンテナ情報１０５，１１５は、アプリケーションプログラムを実行させずに決着処理専用として用意しても良い。
【００１４】
図２は、本発明の実施形態に係る分散トランザクションシステムにおいて、ＥＪＢ（登録商標）コンテナ１０１，１１１上でアプリケーションプログラム１０２，１１２を動作させる際に、トランザクションマネージャ１０３，１１３が行う処理を示すフローである。この処理は、当該ＥＪＢ（登録商標）コンテナ上でアプリケーションプログラムを起動する際に動作する。
【００１５】
ステップ２０１にて、アプリケーションプログラムをデプロイ（配備）し、ステップ２０２で、当該アプリケーションプログラムがアクセス対象としているリソースの情報をトランザクション集中管理１３０に連絡する。ステップ２０３でイベントの発生を待ち、ステップ２０４で発生したイベントの内容を判定して、アプリケーションプログラムのアンデプロイ要求（アンロード要求）であった場合はステップ２０７へ遷移する。また、イベントがアプリケーションプログラムの起動要求であった場合、ステップ２０５でアプリケーションプログラムを起動し、アプリケーションプログラムを実行するとともに、ステップ２０３に戻って、新たなイベントの発生を待つ。即ち、図２のフローでは、アプリケーションプログラムを起動２０５すると、終了待ちをせずにすぐに次のイベント発生待ち２０３に戻ることにより、複数のアプリケーションプログラムを同時並行に実行できる。
【００１６】
ステップ２０４で判定したイベントが、アプリケーションプログラムのアンデプロイ要求であった場合、ステップ２０７にて、アクセス対象ではなくなったリソースをトランザクション集中管理１３０に連絡する。
【００１７】
以上のような処理により、当該ＥＪＢ（登録商標）コンテナ上で動作するアプリケーションプログラムがアクセス対象としているリソースの情報を、他のＥＪＢ（登録商標）コンテナに連絡することが可能となる。
【００１８】
図３は、トランザクションマネージャ１０３又は１１３が、他のトランザクションマネージャ１１３又は１０３からの情報をトランザクション集中管理１３０経由で受け取る処理のフローである。図３において、トランザクション集中管理１３０から連絡された、他ＥＪＢ（登録商標）コンテナの情報（アクセス対象としているリソースの情報）を、ステップ３０１にて他ＥＪＢ（登録商標）コンテナ情報１０５，１１５に記憶する。ここで、トランザクション集中管理１３０から他ＥＪＢ（登録商標）コンテナ情報１０５又は１１５に記憶するタイミングは、常時又は一定期間毎でも良く、また、トランザクション集中管理１３０による異常終了検知時でも良い。
【００１９】
図４は、トランザクションマネージャが、他のトランザクションマネージャからリソースがアクセス対象ではなくなったことを、トランザクション集中管理１３０経由で受け取る処理のフローである。図４において、トランザクション集中管理１３０から連絡を受けた場合、ステップ４０１にて、記憶している他ＥＪＢ（登録商標）コンテナ情報１０５，１１５上の情報を消去する。
【００２０】
図５は、他ＥＪＢ（登録商標）コンテナ１０１又は１１１が異常終了した際にトランザクション集中管理１３０が行う決着処理を示すフローである。図５において、トランザクション集中管理１３０より、他ＥＪＢ（登録商標）コンテナ１０１又は１１１の異常終了が連絡された場合、ステップ５０１にて、異常終了したＥＪＢ（登録商標）コンテナがアクセス対象としていた資源（リソース）について、他ＥＪＢ（登録商標）コンテナ情報１０５又は１１５より読み出し、ステップ５０２にて、当該資源を管理するＤＢＭＳに決着処理を要求する。
【００２１】
図６は、本発明の実施形態に関するトランザクション集中管理１３０が保持する情報を示す図である。図６において、トランザクション集中管理１３０は、アプリケーションプログラム１０２が開始した仕掛かり中のトランザクションを示すトランザクション識別子６０１，６０２と、当該アプリケーションプログラムが動作しているＥＪＢ（登録商標）コンテナの識別子６１１の組を結びつけて管理する。
【００２２】
次に、トランザクション識別子とＥＪＢ（登録商標）コンテナの生成とその利用態様について説明する。アプリケーションプログラム１０２がトランザクションを開始しようとすると、ＥＪＢ（登録商標）コンテナ１０１のトランザクションマネージャ１０３は当該アプリケーションプログラムに代わってトランザクション開始指示をトランザクション集中管理１３０に送る。トランザクション集中管理１３０は当該開始指示を受け取ると、新しいトランザクション識別子６０１を生成して、当該開始指示を発行したＥＪＢ（登録商標）コンテナ１０１を示すＥＪＢ（登録商標）コンテナ識別子６１１と組にして記憶する。
【００２３】
更に、トランザクション集中管理１３０は生成されたトランザクション識別子６０１をＥＪＢ（登録商標）コンテナ１０１のトランザクションマネージャ１０３に伝達する。ＥＪＢ（登録商標）コンテナ１０１はリソースマネージャ１０４を介してリソース管理システムであるＤＢＭＳ１２０に当該トランザクション識別子６０１を伝達し、ＤＢＭＳ１２０にアプリケーションプログラム１０２がアクセスするＤＢＭＳ１２０内のリソースと当該トランザクション識別子とを関連付けさせる。なお、前記トランザクション識別子６０１をトランザクション集中管理１３０が生成する代わりに、ＥＪＢ（登録商標）コンテナ１０１に含まれるトランザクションマネージャ１０３が直接生成してトランザクション集中管理１３０に伝達するようにしてもよい。
【００２４】
アプリケーションプログラム１０２がトランザクションを決着させようとするときは、ＥＪＢ（登録商標）コンテナ１０１のトランザクションマネージャ１０４は、トランザクション識別子６０１を決着するように、アプリケーションプログラム１０２に代わってトランザクション集中管理１３０に指示する。トランザクション集中管理１３０は、トランザクション識別子６０１と結びつけられたＥＪＢ（登録商標）コンテナ識別子６１１が示すＥＪＢ（登録商標）コンテナ１０１のトランザクションマネージャ１０３及びリソースマネージャ１０４を介してＤＢＭＳ１２０に対して２相コミットプロトコルに基づいた決着指示を行う。
【００２５】
次に、トランザクション集中管理１３０がＥＪＢ（登録商標）コンテナ１０１，１１１のダウンを検知する方法について説明する。トランザクション集中管理１３０は、ＥＪＢ（登録商標）コンテナ１０１，１１１のプロセス識別子を記憶する。プロセス識別子はＥＪＢ（登録商標）コンテナ１０１が自分でトランザクション集中管理１３０に通知しても良いし、トランザクション集中管理１３０がＥＪＢ（登録商標）コンテナ１０１，１１１のプロセスを開始しそのプロセス識別子を記憶してもよい。
【００２６】
トランザクション集中管理１３０は一定間隔毎にＥＪＢ（登録商標）コンテナ１０１，１１１のプロセス識別子に対して、当該プロセス識別子の表すプロセスがまだ存在しているかを調べる。仮に、或る時点でＥＪＢ（登録商標）コンテナ１０１のプロセス識別子の表すプロセスが存在しなくなったことが分かったら、トランザクション集中管理１３０はＥＪＢ（登録商標）コンテナ１０１が異常終了したと判断する。
【００２７】
ここで、ＥＪＢ（登録商標）コンテナ１０１，１１１の示すプロセス識別子を記憶し、一定間隔毎にそれらの存在を調べる専用の監視プロセス（不図示）を別に用意してもよい。この場合には、監視プロセスはＥＪＢ（登録商標）コンテナ１０１が異常終了したことを検知したら、その情報をトランザクション集中管理１３０に通知する。
【００２８】
上述の説明では、ＥＪＢ（登録商標）コンテナプロセス識別子をＥＪＢ（登録商標）コンテナ識別子６１１と区別した識別子として取り扱っている。この場合には、トランザクション集中管理（上述の監視プロセスの機能を内蔵したもの）１３０又は専用の監視プロセスは、ＥＪＢ（登録商標）コンテナプロセス識別子とＥＪＢ（登録商標）コンテナ識別子６１１との対応も記憶している。
【００２９】
次に、ＥＪＢ（登録商標）コンテナ１０１が異常終了したとき、トランザクション処理をＥＪＢ（登録商標）コンテナ１１１が引き継ぐ際のトランザクション集中管理１３０の動作態様について説明する。ＥＪＢ（登録商標）コンテナ１０１の異常終了を検知したトランザクション集中管理１３０は、ＥＪＢ（登録商標）コンテナ１１１に対してＥＪＢ（登録商標）コンテナ１０１の異常終了を通知する。ＥＪＢ（登録商標）コンテナ１１１は、他ＥＪＢ（登録商標）コンテナ情報１１５に記憶されていた、ＥＪＢ（登録商標）コンテナ１０１がＤＢＭＳ１２０に接続するための定義情報を使用して、ＤＢＭＳ１２０への接続を確立する。
【００３０】
トランザクション集中管理１３０は、ＥＪＢ（登録商標）コンテナ識別子６１１に結びつけられたトランザクション識別子６０１，６０２等の決着処理をＥＪＢ（登録商標）コンテナ１０１の代わりにＥＪＢ（登録商標）コンテナ１１１のトランザクションマネージャ１１３、リソースマネージャ１１４に指示することにより、ＤＢＭＳ１２０へ２相コミットプロトコルに基づいた決着指示を行う。なお、トランザクション集中管理１３０は、ＥＪＢ（登録商標）コンテナ１０１の異常終了をＥＪＢ（登録商標）コンテナ１１１に通知するときに、同時にＥＪＢ（登録商標）コンテナ１０１の保持するＤＢＭＳへの定義情報をＥＪＢ（登録商標）コンテナ１１１に通知するようにしてもよい。
【００３１】
ここで、他ＥＪＢ（登録商標）コンテナ情報１０５，１１５の中身は、各ＥＪＢ（登録商標）コンテナがリソース管理システムであるＤＢＭＳ１２０へ接続を確立するために使用する接続定義情報である。接続定義情報はＥＪＢ（登録商標）コンテナへＤＢＭＳを接続するとき、又はアプリケーションプログラムをＥＪＢ（登録商標）コンテナへデプロイするとき、のいずれかで決定される。
【００３２】
以上説明したように、本発明の基本的な特徴は、ＥＪＢ（登録商標）コンテナ上で動作するアプリケーションプログラムがアクセスするリソースの情報を、障害が発生する前に他のＥＪＢ（登録商標）コンテナに連絡しておき、当該ＥＪＢ（登録商標）コンテナがトランザクション実行中に異常終了した場合に、予めリソースの情報を連絡されていた他のＥＪＢ（登録商標）コンテナが回復処理を行うことで、障害が発生したＥＪＢ（登録商標）コンテナが再起動されるのを待たずに、仕掛かり中のアクセスを決着（コミット／ロールバック）することを可能とするものである。
【００３３】
【発明の効果】
以上説明したように、本発明によれば、ＥＪＢ（登録商標）コンテナがトランザクション実行中に異常終了した場合に、他の起動済ＥＪＢ（登録商標）コンテナが、仕掛かり中のアクセスの決着処理をリソースに対して要求するので、ＥＪＢ（登録商標）コンテナ起動処理に要する時間分だけ回復時間を短縮することができる。
【図面の簡単な説明】
【図１】本発明の実施形態に係るコンピュータシステムの分散トランザクションシステムにおける全体構成を示す図である。
【図２】本発明の実施形態に係る分散トランザクションシステムにおいて、ＥＪＢ（登録商標）コンテナ上でアプリケーションプログラムを動作させる際にトランザクションマネージャが行う処理のフローを示す図である。
【図３】本発明の実施形態に係る分散トランザクションシステムにおいて、他のトランザクションマネージャからの情報を受け取る処理のフローを示す図である。
【図４】本発明の実施形態に係る分散トランザクションシステムにおいて、他のトランザクションマネージャからアプリケーションプログラム処理の終了連絡を受け取る処理のフローを示す図である。
【図５】本発明の実施形態に係る分散トランザクションシステムにおいて、他ＥＪＢ（登録商標）コンテナが異常終了した際にトランザクション集中管理が行う決着処理のフローを示す図である。
【図６】本発明の実施形態に関するトランザクション集中管理が保持する情報を示す図である。
【符号の説明】
１０１  ＥＪＢ（登録商標）コンテナ
１０２  アプリケーションプログラム
１０３  トランザクションマネージャ
１０４  リソースマネージャ
１０５  他ＥＪＢ（登録商標）コンテナ情報
１１１  ＥＪＢ（登録商標）コンテナ
１１２  アプリケーションプログラム
１１３  トランザクションマネージャ
１１４  リソースマネージャ
１１５  他ＥＪＢ（登録商標）コンテナ情報
１２０  ＤＢＭＳ
１３０  トランザクション集中管理
６０１，６０２  トランザクション識別子
６１１  ＥＪＢ（登録商標）コンテナ識別子
【図１】
2004234203.tif 000003
【図２】
2004234203.tif 000004
【図３】
2004234203.tif 000005
【図４】
2004234203.tif 000006
【図５】
2004234203.tif 000007
【図６】
2004234203.tif 000008