(57)【要約】【課題】  複数アプリケーション間の競合制御方法において、ロック開放の手順を減らすことで競合規制時間を短くする。【解決手段】  ネットワークで接続された複数の装置に分散配置された複数アプリケーション間において、各アプリケーションが持つ競合規制機能を複数アプリケーションにおいて同時に実施されるのを防止する複数アプリケーション間の競合制御方法であって、各アプリケーションが、競合規制機能を実行する前に各装置が持つロック管理部に対して、自装置に対してロック取得を行い、他装置に対してロック状態を参照し、自装置に対してロック取得成功であり、他装置がすべてロックされていないことを確認する。【選択図】        図２
2005222349.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークで接続された複数の装置に分散配置された複数アプリケーション間において、各アプリケーションが持つ競合規制機能を複数アプリケーションにおいて同時に実施されるのを防止するための複数アプリケーション間の競合制御方法であって、
各アプリケーションが、競合規制機能を実行する前に各装置が持つロック管理部に対して、自装置に対してロック取得を行い、他装置に対してロック状態を参照し、自装置に対してロック取得成功であり、他装置がすべてロックされていないことを確認することを特徴とする複数アプリケーション間の競合制御方法。
【請求項２】
前記各装置のロック管理部が、自装置上のアプリケーションの起動、停止状態を監視し、アプリケーションの停止が確認された場合に、当該アプリケーションが保有しているロックを開放することで、アプリケーションの異常停止時のロック開放漏れによる競合規制対象機能の使用不可状態から自動的に復旧することを特徴とする請求項１に記載の複数アプリケーション間の競合制御方法。
【請求項３】
アプリケーションが競合規制機能を実行した後に、自装置に対してのみロック開放要求を行い、他装置へのロック開放要求を行うことを不要とすることを特徴とする請求項１に記載の複数アプリケーション間の競合制御方法。
【請求項４】
請求項１ないし請求項３のいずれか１項に記載の複数アプリケーション間の競合制御方法をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数アプリケーション間の競合制御方法およびそのプログラムに係わり、特に、分散環境下において複数アプリケーション間の競合制御を行い、アプリケーションの異常停止時にロックを自動的に開放することでロックの不正保持を防ぐ機構をもたせた複数アプリケーション間の競合制御方法に関する。
【背景技術】
【０００２】
従来の分散環境下における複数アプリケーションにおける競合制御方法では、分散配置された各装置は競合規制対象となる操作が行われているかを表すロック状態を管理する機能を持ち、各アプリケーションはロックを取得する手段と、ロックを開放する手段を持つ。
そして、各アプリケーションが競合規制対象となる命令を実行するようなトリガーを受けた場合には、各装置のロックをすべて取得し、それが成功した場合には、競合規制対象となる命令を実行し、終了後に各装置のロックを開放し、いずれかの装置のロックの取得に失敗した場合には、競合規制対象となる命令は実行せずに、各装置のロックを開放するという手順を持たせることで、分散環境下における複数アプリケーションが同時に競合規制対象となる命令が実現されることを防止していた。
【０００３】
なお、本願発明に関連する先行技術文献としては以下のものがある。
【特許文献１】特開平１１−８５５９６号公報「分散ファイルシステムにおけるプロセス間のファイル排他の自動化方式」
【特許文献２】特開平５−２３３３３６号公報「オンラインシステムにおける排他制御方式」
【発明の開示】
【発明が解決しようとする課題】
【０００４】
従来の技術の第１の問題点は、アプリケーションが分散配置された各装置に存在する全てのロックを取得するため、競合規制対象となる命令を実行したあとに、全てのロックを開放する必要があり、競合規制時間が長くなるということである。
従来の技術の第２の問題点は、アプリケーションが分散配置された各装置に存在する全てのロックを取得した後で、競合規制対象となる命令を実行中に、アプリケーションが異常終了した場合に、分散配置された各装置に存在するロックが開放されずに残ってしまい、他のアプリケーションが競合規制対象となる命令を実行することができなくなるという問題である。
【０００５】
本発明は、前記従来技術の問題点を解決するためになされたものであり、本発明の目的は、複数アプリケーション間の競合制御方法において、ロック開放の手順を減らすことで競合規制時間を短くすることが可能となる技術を提供することにある。
また、本発明の他の目的は、複数アプリケーション間の競合制御方法において、アプリケーションが異常終了したことを検知して、競合規制対象命令に対するロックが開放される機構を持たせることで、アプリケーションの異常終了時にも他のアプリケーションで競合規制対象となる命令を実行することができなくなるのを防止する技術を提供することにある。
また、本発明の他の目的は、前述の複数アプリケーション間の競合制御方法をコンピュータに実行させるためのプログラムを提供することにある。
本発明の前記ならびにその他の目的と新規な特徴は、本明細書の記述及び添付図面によって明らかにする。
【課題を解決するための手段】
【０００６】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、下記の通りである。
即ち、本発明では、分散配置された各装置は、競合規制対象となる操作が行われているかどうかを表すロック状態を管理するロック管理部を持ち、各アプリケーションはロックを取得する手段と、ロックを開放する手段を持つ。
アプリケーションは、競合規制対象となる命令を実行するようなトリガーを受けた場合に、自身のプロセスが存在している装置のロックを取得するステップと、自身のプロセスが存在している以外の装置のロック状態を参照し、他装置がすべてロックされていないことを確認するステップと、競合規制対象となる命令を実行するステップと、自身のプロセスが存在している装置のロックを開放するステップを有することによって、競合制御対象となる命令の排他制御を行う。
これにより、全てのロックを開放する必要がなく、自身のプロセスが存在している装置のロックのみを開放すればよいようにする。
また、本発明では、各装置のロック管理部が、アプリケーションの起動・停止状態を管理し、アプリケーションの停止を検知するステップと、そのアプリケーションが保持していたロックを開放するステップを持つ。
また、本発明は、前述の複数アプリケーション間の競合制御方法をコンピュータに実行させるためのプログラムである。
【発明の効果】
【０００７】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば、下記の通りである。
（１）本発明によれば、ロック取得と競合規制対象となる命令の実行とロック開放におけるステップ数を削減することができ、競合規制時間を短くすることが可能となる。
（２）本発明によれば、アプリケーションが異常停止した場合であっても、他のアプリケーションで競合制御対象となる命令が実行できなくなるのを防止することが可能となる。
【発明を実施するための最良の形態】
【０００８】
以下、図面を参照して本発明の実施例を詳細に説明する。
なお、実施例を説明するための全図において、同一機能を有するものは同一符号を付け、その繰り返しの説明は省略する。
図１は、本発明の実施例の複数アプリケーション間の競合制御方法が実施される装置構成を示すブロック図である。
図１において、装置Ａ（１１）および装置Ｂ（２１）は、例えば、コンピュータなどの情報処理装置であり、装置Ａ（１１）は、ロック管理部１２とネットワーク通信部１３とアプリケーションＡ１（１４）とアプリケーションＡ２（１５）とを持ち、装置Ｂ（２１）とネットワーク３１を介して接続されている。
また、装置Ｂ（２１）は、ロック管理部２２とネットワーク通信部２３とアプリケーションＢ１（２４）とアプリケーションＢ２（２５）とを持つ。
装置Ａ（１１）が持つロック管理部１２、アプリケーションＡ１（１４）、アプリケーションＡ２（１５）は、ネットワーク通信部１３およびネットワーク３１およびネットワーク通信部２３を介して、装置Ｂ（２１）が持つロック管理部２２、アプリケーションＢ１（２４）、アプリケーションＢ２（２５）と相互にデータの送信および受信を行うことができる。
装置Ａ（１１）が持つロック管理部１２、および装置Ｂ（２１）が持つロック管理部２２は、キーとなる文字列または数列および各々のキーに対応する状態を保有する機能を持つ。ロック管理部１２およびロック管理部２２が持つ状態にはロック状態およびアンロック状態の２つがある。
ロック管理部１２およびロック管理部２２は、ロック状態の場合には、ロック取得要求元を識別する番号も保有する。
【０００９】
ロック管理部１２およびロック管理部２２は、ロック取得要求、ロック開放要求、ロック状態参照要求を受信する機能、ロック状態を変更する機能、およびロック取得要求、ロック開放要求、ロック状態参照要求の要求元に結果応答する機能、並びに、同一の装置、つまりおのおの装置Ａ（１１）と装置Ｂ（２１）に存在する各アプリケーションの起動、停止状態を取得する機能を持つ。
ロック管理部１２およびロック管理部２２は、ロック取得要求を受信すると、キーに対応した状態を読み込み、その状態がロック状態である場合にはロック取得失敗応答を要求元に返し、その状態がアンロック状態である場合には、保有している状態をロック状態に変更し、ロック取得成功応答を要求元に返す。
ロック管理部１２およびロック管理部２２は、ロック開放要求を受信すると、キーに対応した状態を読み込み、その状態がロック状態である場合には、保有している状態をアンロック状態に変更し、ロック開放成功応答を要求元に返し、その状態がアンロック状態である場合には、ロック開放成功応答を返す。
装置Ａ（１１）が持つアプリケーションＡ１（１４）、アプリケーションＡ２（１５）および装置Ｂ（２１）が持つアプリケーションＢ１（２４）、アプリケーションＢ２（２５）は、ロック管理部１２およびロック管理部２２に対して、ロック取得要求、ロック開放要求およびロック状態参照要求を行う機能を持つ。
【００１０】
図２は、本実施例の複数アプリケーション間の競合制御方法の処理手順の一例を示すフローチャートである。
ここでは、アプリケーションＡ１（１４）、およびアプリケーションＢ１（２４）が、近接時間内に次々に競合規制対象機能の実行要求を受けた場合（ステップＳ１、Ｓ２）に、アプリケーションＡ１（１４）のみが規制対象機能を実行して成功応答を返し、アプリケーションＢ１（２４）は規制対象機能を実行せずに中止応答を返す場合の例を示す。
特に、アプリケーションＡ１がロック管理部２２からのロック参照応答を受けた後、アプリケーションＢ１でのロック管理部１２からのロック取得、ロック管理部２２からのロック参照および要求元への結果応答を終えた後に、アプリケーションＡ１が規制対象機能を実行し、要求元へ結果応答を返すタイミングで動作する場合の例を示す。
まず、アプリケーションＡ１（１４）は、ロック管理部１２に対してロック取得要求（ステップＳ３）を行う。
次に、ロック管理部１２は、アプリケーションＡ１（１４）に対して、ロック取得結果応答（ここでは、ロック取得成功という応答）を返す（ステップＳ４）。
次に、アプリケーションＡ１（１４）は、ネットワーク通信部１３、ネットワーク３１、ネットワーク通信部２３を経由して、ロック管理部２２に対して、ロック参照要求を送信する（ステップＳ５、Ｓ６、Ｓ７、Ｓ８）。
【００１１】
これに対して、ロック管理部２２は、ネットワーク通信部２３、ネットワーク３１、ネットワーク通信部１３を経由して、アプリケーションＡ１（１４）に対してロック参照応答（ここでは、キーに対応した状態がアンロック状態であることを示す応答）を送信する（ステップＳ９、Ｓ１０、Ｓ１１、Ｓ１２）。
次に、アプリケーションＢ１が、ロック管理部２２に対して、ロック取得要求を行う（ステップＳ１３）。
次に、ロック管理部２２は、アプリケーションＢ１に対して、ロック取得結果応答（ここでは、ロック取得成功という応答）を返す。（ステップＳ１４）
次に、アプリケーションＢ１（２４）は、ネットウーク通信部２３、ネットワーク３１、ネットワーク通信部１３を経由して、ロック管理部１２に対してロック参照要求を送信する（ステップＳ１５、Ｓ１６、Ｓ１７、Ｓ１８）。
ロック管理部１２は、ネットワーク通信部１３、ネットワーク３１、ネットワーク通信部２３を経由して、アプリケーションＢ１（２４）に対してロック参照応答（ここでは、キーに対応した状態がロック状態であることを示す応答）を送信する（ステップＳ１９、Ｓ２０、Ｓ２１、Ｓ２２）。
【００１２】
次に、アプリケーションＢ１は、ロック管理部２２に対してロック開放要求を行う（ステップＳ２３）。
ロック管理部２２は、ロック開放結果応答をアプリケーションＢ１（２４）に返す（ステップＳ２４）。
次に、アプリケーションＢ１は、要求元に対して中止という内容で結果応答を返す（ステップＳ２５）。
次に、アプリケーションＡ１（１４）は、規制対象機能実行を行い（ステップＳ２６）、ロック管理部１２に対してロック開放要求（ステップＳ２７）を送信する。
ロック管理部１２は、アプリケーションＡ１（１４）に対してロック開放結果応答を返す（ステップＳ２８）。
最後に、アプリケーションＡ１は、要求元に成功という内容で結果応答を返す（ステップＳ２９）。
この方法により、装置Ａ（１１）と装置Ｂ（２１）に分散配置されたアプリケーションＡ１とアプリケーションＢ１間の競合制御を行うことにより、アプリケーションＡ１（１４）とアプリケーションＢ１（２４）で同時に規制対象操作を実施するのを防ぐことが可能となる。
【００１３】
図３は、本実施例の複数アプリケーション間の競合制御方法の処理手順の他の例を示すフローチャートである。
ロック管理部１２は、アプリケーションＡ１（１４）、アプリケーションＡ２（１５）に対して、また、ロック管理部２２は、アプリケーションＢ１（２４）、アプリケーションＢ２（２５）に対して、それぞれ定期的にアプリケーションの起動・停止状態の監視を行う。
即ち、ロック管理部１２は、アプリケーションＡ１（１４）、およびアプリケーションＡ２（１５）に対して、それぞれ定期的にアプリケーションの起動停止状態取得要求を発行し（ステップＳ３０、Ｓ３２）、アプリケーションＡ１（１４）、およびアプリケーションＡ２（１５）は、ロック管理部１２に対して、アプリケーションの起動停止状態取得応答を返す（ステップＳ３１、Ｓ３３）。
同様に、ロック管理部２２は、アプリケーションＢ１（２４）、およびアプリケーションＢ２（２５）に対して、それぞれ定期的にアプリケーションの起動停止状態取得要求を発行し（ステップＳ３５、Ｓ３７）、アプリケーションＢ１（２４）、およびアプリケーションＢ２（２５）は、ロック管理部２２に対して、アプリケーションの起動停止状態取得応答を返す（ステップＳ３６、Ｓ３８）。
そして、ロック管理部１２、およびロック管理部２２は、アプリケーションＡ１（１４）、アプリケーションＡ２（１５）、アプリケーションＢ１（２４）、あるいは、アプリケーションＢ２（２５）が停止状態となっている場合に、当該アプリケーションが取得しているロックについてロック開放を行う（ステップＳ３４、Ｓ３９）。
この方法により、競合規制対象機能を実行中にアプリケーションが異常停止した場合にもロック開放がされ、アプリケーション異常停止によって競合規制対象機能が定常的にロック状態となることを防ぐことができる。
【００１４】
以上説明したように、本実施例によれば、分散配置された各装置（装置Ａ（１１）、装置Ｂ（２１））は、競合規制対象となる操作が行われているかどうかを表すロック状態を管理する機能を持ち、各アプリケーションはロックを取得する手段と、ロックを開放する手段を持つ。
アプリケーションは、競合規制対象となる命令を実行するようなトリガーを受けた場合に、自身のプロセスが存在している装置のロックを取得するステップと、自身のプロセスが存在している以外の装置のロック状態を参照し、他装置がすべてロックされていないことを確認するステップと、競合規制対象となる命令を実行するステップと、自身のプロセスが存在している装置のロックを開放するステップとにより、競合制御対象となる命令の排他制御を行うため、全てのロックを開放する必要がなく、自身のプロセスが存在している装置のロックのみを開放すればよいため、全装置数から１減じた数だけステップ数が削減されることになる。
これにより、本実施例によれば、ロック取得と競合規制対象となる命令の実行とロック開放におけるステップ数を削減することができ、競合規制時間を短くすることができる。
さらに、各装置（装置Ａ（１１）、装置Ｂ（２１））は、アプリケーションの起動・停止状態を管理する機能を持ち、アプリケーションの停止を検知するステップと、そのアプリケーションが保持していたロックを開放するステップを持ち、アプリケーションの停止を検出するとそのアプリケーションが保持していたロックを開放するステップを持つため、アプリーションが停止したことをトリガーとして、当該アプリケーションが保持していたロックが開放され、他のアプリケーションによる競合制御対象となる命令が実行できるようになる。
これにより、本実施例によれば、アプリケーションが異常停止した場合に他のアプリケーションで競合制御対象となる命令が実行できなくなるのを防止することが可能となる。
以上、本発明者によってなされた発明を、前記実施例に基づき具体的に説明したが、本発明は、前記実施例に限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは勿論である。
【図面の簡単な説明】
【００１５】
【図１】本発明の実施例の複数アプリケーション間の競合制御方法が実施される装置構成を示すブロック図である。
【図２】本発明の実施例の複数アプリケーション間の競合制御方法の処理手順の一例を示すフローチャートである。
【図３】本発明の実施例の複数アプリケーション間の競合制御方法の処理手順の他の例を示すフローチャートである。
【符号の説明】
【００１６】
１１  装置Ａ
１２，２２  ロック管理部
１３，２３  ネットワーク通信部
１４  アプリケーションＡ１
１５  アプリケーションＡ２
２１  装置Ｂ
２４  アプリケーションＢ１
２５  アプリケーションＢ２
３１  ネットワーク
【図１】
2005222349.tif 000003
【図２】
2005222349.tif 000004
【図３】
2005222349.tif 000005