(57)【要約】    【課題】  ネットワークを経由して、計算機上で実行されるプログラムの提供するサービスを他計算機に対して提供するサービスにおいて、計算機がサービスを提供できなくなった際に、サービスを別の計算機から提供することを可能とする。    【解決手段】  ネットワーク１００を経由して、計算機上で実行されるプログラムの提供するサービスを他計算機に対して提供するサービス提供システムにおいて、計算機が提供できないサービスを別の計算機から提供するための手段を設ける。    【選択図】  図１
2005202698.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを経由して、計算機上で実行されるプログラムの提供するサービスを他計算機に対して提供するサービス提供システムにおいて、
前記計算機が提供できない前記サービスを当該計算機と別の計算機から提供するための手段を設けたことを特徴とするサービス提供システム。
【請求項２】
所定の前記プログラムが動作する計算機を、前記ネットワーク上で一意に識別するためのロケーション情報を管理するサービスを提供するリポジトリサービス手段を備えることを特徴とする請求項１に記載のサービス提供システム。
【請求項３】
複数の前記計算機の内の、特定の計算機に、前記リポジトリサービス手段を備えることを特徴とする請求項２に記載のサービス提供システム。
【請求項４】
前記リポジトリサービス手段は、何れかの前記計算機上で動作する前記プログラムからの要求に対して所定のプログラムを起動する計算機のロケーション情報を返答する処理と、前記プログラムからの要求に応じて前記ロケーション情報を格納するリポジトリデータベースのデータを書き換える処理を行うことを特徴とする請求項３に記載のサービス提供システム。
【請求項５】
前記リポジトリサービス手段は、さらに、起動した前記プログラムの問い合わせに対して、前記リポジトリサービス手段を備える前記計算機の前記ロケーション情報を返答する処理を行うことを特徴とする請求項３に記載のサービス提供システム。
【請求項６】
前記ロケーション情報を返答する処理は、前記何れかの計算機上で動作するプログラムが問い合わせた前記所定のプログラムの動作する計算機のロケーション情報を、前記リポジトリデータベース内で検索し、当該プログラムによるサービスが動作している場合に、当該プログラムの動作する計算機のロケーション情報を、問い合わせたプログラムに対して返答することを特徴とする請求項４に記載のサービス提供システム。
【請求項７】
前記リポジトリデータベースのデータを書き換える処理は、前記プログラムからの要求に応じて前記リポジトリデータベースのデータを書き換え、その結果を前記プログラムに対して返答することを特徴とする請求項４に記載のサービス提供システム。
【請求項８】
前記プログラムが他計算機に対してサービス要求を行う処理は、前記プログラムが前記他計算機のロケーション情報を有しているかどうかを確認し、有していない場合に前記リポジトリサービス手段に前記ロケーション情報を要求することを特徴とする請求項４に記載のサービス提供システム。
【請求項９】
前記複数の計算機に、前記サービスを提供するプログラムを起動するプログラム起動手段と、前記サービスの種類の情報及び前記計算機起動時に起動すべきサービスの種類の情報を格納するサービス提供情報データベースをそれぞれ備えることを特徴とする請求項３に記載のサービス提供システム。
【請求項１０】
前記プログラム起動手段は、前記計算機の起動と同時に起動することを特徴とする請求項９に記載のサービス提供システム。
【請求項１１】
前記プログラム起動手段の起動処理は、前記サービス提供情報データベースの情報を参照し、起動が必要な場合に前記リポジトリサービス手段を起動し、また他に起動の必要なプログラムがある場合に当該プログラムを起動することを特徴とする請求項１０に記載のサービス提供システム。
【請求項１２】
前記プログラム起動手段のメイン処理は、前記複数の計算機のプログラムからの要求を受付けた後、前記サービス提供情報データベースを参照して、前記要求に対応するサービスを起動可能かどうかを判別し、可能な場合に当該サービスを提供するプログラムを起動あるいは再起動する処理を含むことを特徴とする請求項１０に記載のサービス提供システム。
【請求項１３】
前記リポジトリサービス手段を複数の前記計算機の内の一部の計算機に備えることを特徴とする請求項２に記載のサービス提供システム。
【請求項１４】
前記一部の計算機に、前記リポジトリサービス手段の動作を監視する監視サービス手段を備えることを特徴とする請求項１３に記載のサービス提供システム。
【請求項１５】
前記監視サービス手段の動作を監視する監視手段と、前記リポジトリサービス手段の管理するロケーション情報データを計算機間で共有するためのデータ共有手段を備えることを特徴とする請求項１４に記載のサービス提供システム。
【請求項１６】
前記監視手段の処理は、前記監視サービス手段の検索を行い、前記監視サービス手段の動作確認を継続することを特徴とする請求項１５に記載のサービス提供システム。
【請求項１７】
前記監視サービス手段の処理は、前記一部の計算機に設けられた前記リポジトリサービス手段の監視を行い、前記リポジトリサービス手段がいずれも動作していない場合に、いずれかのリポジトリサービス手段を起動することを特徴とする請求項１４に記載のサービス提供システム。
【請求項１８】
前記リポジトリサービス手段の初期処理は、他リポジトリサービス手段が動作している場合に、前記リポジトリサービス手段を起動しないことを特徴とする請求項１４に記載のサービス提供システム。
【請求項１９】
ネットワークを経由してサービスを提供するプログラムを実行する計算機であって、
所定の前記プログラムが動作する計算機を、前記ネットワーク上で一意に識別するためのロケーション情報を管理するサービスを提供するリポジトリサービス手段を備えることを特徴とする計算機。
【請求項２０】
前記リポジトリサービス手段は、何れかの前記計算機上で動作する前記プログラムからの要求に対して所定のプログラムを起動する計算機のロケーション情報を返答する処理と、前記プログラムからの要求に応じて前記ロケーション情報を格納するリポジトリデータベースのデータを書き換える処理を行うことを特徴とする請求項１９に記載の計算機。
【請求項２１】
前記リポジトリサービス手段は、さらに、起動した前記プログラムの問い合わせに対して、前記リポジトリサービス手段を備える前記計算機の前記ロケーション情報を返答する処理を行うことを特徴とする請求項１９に記載の計算機。
【請求項２２】
前記ロケーション情報を返答する処理は、前記何れかの計算機上で動作するプログラムが問い合わせた前記所定のプログラムの動作する計算機のロケーション情報を、前記リポジトリデータベース内で検索し、当該プログラムによるサービスが動作している場合に、当該プログラムの動作する計算機のロケーション情報を、問い合わせたプログラムに対して返答することを特徴とする請求項２０に記載の計算機。
【請求項２３】
前記リポジトリデータベースのデータを書き換える処理は、前記プログラムからの要求に応じて前記リポジトリデータベースのデータを書き換え、その結果を前記プログラムに対して返答することを特徴とする請求項２０に記載の計算機。
【請求項２４】
前記サービスを提供するプログラムを起動するプログラム起動手段と、前記サービスの種類の情報及び前記計算機起動時に起動すべきサービスの種類の情報を格納するサービス提供情報データベースを備えることを特徴とする請求項１９に記載の計算機。
【請求項２５】
前記プログラム起動手段の起動処理は、前記サービス提供情報データベースの情報を参照し、起動が必要な場合に前記リポジトリサービス手段を起動し、また他に起動の必要なプログラムがある場合に当該プログラムを起動することを特徴とする請求項２４に記載の計算機。
【請求項２６】
ネットワークを経由してサービスを提供するプログラムが動作する計算機を、前記ネットワーク上で一意に識別するためのロケーション情報を管理するサービスを提供する機能を実行することを特徴とするリポジトリサービス制御プログラム。
【請求項２７】
前記ネットワークに接続された何れかの計算機上で動作するプログラムからの要求に対して、所定のプログラムを起動する計算機のロケーション情報を返答する処理と、前記プログラムからの要求に応じて前記ロケーション情報を格納するリポジトリデータベースのデータを書き換える機能を有することを特徴とする請求項２６に記載のリポジトリサービス制御プログラム。
【請求項２８】
起動した前記プログラムの問い合わせに対して、前記リポジトリサービス手段を備える前記計算機の前記ロケーション情報を返答する機能を有することを特徴とする請求項２６に記載のリポジトリサービス制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークを経由して計算機上で実行されるプログラムの提供するサービスを他計算機に対して提供するサービス提供システムに関し、特に、計算機の故障、保守等によりサービスを提供できなくなった際に、同一サービスを他計算機から提供することを可能とするサービス提供システムに関する。
【背景技術】
【０００２】
従来、計算機の故障や保守などで、計算機が動作しない事態に対応するための方法として、冗長性を高める方法が提案されている。この方法は、プログラムの実行を他の計算機に移動するものであって、１台の計算機の動作が停止しても、別の計算機で動作を継続できるというものである。しかし、この技術には次のような問題がある。
【０００３】
プログラムが１台の計算機上で実行されており、そのプログラムはネットワークを介して複数の他の計算機へサービスを提供している場合を考える。何らかの理由、例えば計算機の故障や保守などで、サービスの提供を継続させるために他の計算機へプログラムを移動させたい場合がある。
【０００４】
この場合、別の計算機へプログラムをインストールし、代替となるプログラムの起動を行わなければならないという第１の問題がある。
【０００５】
次に、サービスを提供する計算機が変更された場合に、サービスを受ける計算機は、提供を受ける計算機のロケーション（位置）が変化したことは、検出できない。このため、サービスを受ける計算機から、サービスを提供する計算機へのアクセスはできなくなり、サービスを受けられなくなるという第２の問題が発生する。
【０００６】
このような問題の解決に類する方法の１例が、例えば特開２００１−２２７０９号公報（特許文献１）及び例えば特開２０００−４７８９４号公報（特許文献２）に記載されている。
【０００７】
特許文献１の方法では、複数の計算機をネットワークを介して接続し、各計算機にプログラムの異常を検出する手段を備える。
【０００８】
複数計算機の１台の計算機でプログラムの異常が検出されると、プログラム異常の検出された計算機でこのプログラムの再起動が行われる。再起動しても、プログラムの異常が解消しない場合には、そのプログラムを他の計算機上で実行させるというものである。
【０００９】
また、特許文献２の方法では、複数の計算機をネットワークを介して接続し、各計算機に稼動状況を監視する監視手段を設け、監視手段は各計算機の稼動状況を、各計算機とネットワークを介して接続された監視情報リポジトリ（リポジトリはシステムが内部的に使用するデータベース）に格納する。稼動状況には、計算機のＣＰＵ負荷、メモリ空き容量が含まれる。
【００１０】
監視手段が他の計算機の異常を検出すると、監視情報リポジトリの情報を基に、ＣＰＵ負荷が少ない、あるいはメモリ空き容量が少ない代替計算機を選択して、これに処理を引き継ぐというものである。
【特許文献１】特開２００１−２２７０９号公報
【特許文献２】特開２０００−４７８９４号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
上述した従来の技術は、いずれも以下に述べるような欠点があった。
【００１２】
プログラムが１台の計算機上で実行されており、そのプログラムはネットワークを介して他の複数の計算機へサービスを提供している場合、特許文献１の方法によれば、別の計算機へプログラムをインストールし、代替となるプログラムの起動を行わなければならないという第１の問題は、そのプログラムを別の計算機上で実行することにより、解決することができる。
【００１３】
しかし、サービスを提供する計算機が変更されると、サービスを受ける計算機は、提供を受ける計算機のロケーションが変化したことは検出しないために、サービスを提供する計算機へのアクセスはできなくなる。したがって、サービスを受ける計算機から、サービスを提供する計算機へのアクセスはできなくなり、サービスを受けられなくなるという第２の問題を解決することはできない。
【００１４】
また、特許文献２に開示される方法では、監視手段が他の計算機の異常を検出すると、監視情報リポジトリの情報を基に、ＣＰＵ負荷が少ない、あるいはメモリ空き容量が少ない代替計算機を選択して、これに処理を引き継ぐものである。このため、他の計算機へプログラムをインストールし、代替となるプログラムの起動を行わなければならないという第１の問題は解決することができる。
【００１５】
しかしながら、提供を受ける計算機のロケーションが変化したことは検出しないために、サービスを受ける計算機から、サービスを提供する計算機へのアクセスはできない。したがって、特許文献１の方法と同じく、サービスを受ける計算機は、サービスを提供する計算機からのサービスを受けられなくなるという第２の問題を解決することはできない。
【００１６】
本発明の第１の目的は、上記従来技術の欠点を解決し、計算機上で動作するプログラムがネットワークを介して他計算機に対してサービスを提供するサービス提供システムにおいて、計算機の故障、保守等によりサービスを提供できなくなった際に、同一サービスを別の計算機から提供することを可能とするサービス提供システム、計算機及びリポジトリサービス制御プログラムを提供することにある。
【００１７】
本発明の第２の目的は、上記システムにおいて、計算機の故障、保守等によりサービスを提供できなくなった際に、サービスを受ける計算機が、サービスを提供する代替の計算機のロケーション情報を取得して、継続的にサービス提供を受けることを可能とするサービス提供システム、計算機及びリポジトリサービス制御プログラムを提供することにある。
【課題を解決するための手段】
【００１８】
上記目的を達成するための本発明は、ネットワークを経由して、計算機上で実行されるプログラムの提供するサービスを他計算機に対して提供するサービス提供システムにおいて、前記計算機が提供できない前記サービスを当該計算機と別の計算機から提供するための手段を設けたことを特徴とする。
【００１９】
請求項２の本発明のサービス提供システムは、所定の前記プログラムが動作する計算機を、前記ネットワーク上で一意に識別するためのロケーション情報を管理するサービスを提供するリポジトリサービス手段を備えることを特徴とする。
【００２０】
請求項３の本発明のサービス提供システムは、複数の前記計算機の内の、特定の計算機に、前記リポジトリサービス手段を備えることを特徴とする。
【００２１】
請求項４の本発明のサービス提供システムは、前記リポジトリサービス手段が、何れかの前記計算機上で動作する前記プログラムからの要求に対して所定のプログラムを起動する計算機のロケーション情報を返答する処理と、前記プログラムからの要求に応じて前記ロケーション情報を格納するリポジトリデータベースのデータを書き換える処理を行うことを特徴とする。
【００２２】
請求項５の本発明のサービス提供システムは、前記リポジトリサービス手段が、さらに、起動した前記プログラムの問い合わせに対して、前記リポジトリサービス手段を備える前記計算機の前記ロケーション情報を返答する処理を行うことを特徴とする。
【００２３】
請求項６の本発明のサービス提供システムは、前記ロケーション情報を返答する処理で、前記何れかの計算機上で動作するプログラムが問い合わせた前記所定のプログラムの動作する計算機のロケーション情報を、前記リポジトリデータベース内で検索し、当該プログラムによるサービスが動作している場合に、当該プログラムの動作する計算機のロケーション情報を、問い合わせたプログラムに対して返答することを特徴とする。
【００２４】
請求項７の本発明のサービス提供システムは、前記リポジトリデータベースのデータを書き換える処理で、前記プログラムからの要求に応じて前記リポジトリデータベースのデータを書き換え、その結果を前記プログラムに対して返答することを特徴とする。
【００２５】
請求項８の本発明のサービス提供システムは、前記プログラムが他計算機に対してサービス要求を行う処理で、前記プログラムが前記他計算機のロケーション情報を有しているかどうかを確認し、有していない場合に前記リポジトリサービス手段に前記ロケーション情報を要求することを特徴とする。
【００２６】
請求項９の本発明のサービス提供システムは、前記複数の計算機に、前記サービスを提供するプログラムを起動するプログラム起動手段と、前記サービスの種類の情報及び前記計算機起動時に起動すべきサービスの種類の情報を格納するサービス提供情報データベースをそれぞれ備えることを特徴とする。
【００２７】
請求項１０の本発明のサービス提供システムは、前記プログラム起動手段が、前記計算機の起動と同時に起動することを特徴とする。
【００２８】
請求項１１の本発明のサービス提供システムは、前記プログラム起動手段の起動処理で、前記サービス提供情報データベースの情報を参照し、起動が必要な場合に前記リポジトリサービス手段を起動し、また他に起動の必要なプログラムがある場合に当該プログラムを起動することを特徴とする。
【００２９】
請求項１２の本発明のサービス提供システムは、前記プログラム起動手段のメイン処理で、前記複数の計算機のプログラムからの要求を受付けた後、前記サービス提供情報データベースを参照して、前記要求に対応するサービスを起動可能かどうかを判別し、可能な場合に当該サービスを提供するプログラムを起動あるいは再起動することを特徴とする。
【００３０】
請求項１３の本発明のサービス提供システムは、前記リポジトリサービス手段を複数の前記計算機の内の一部の計算機に備えることを特徴とする。
【００３１】
請求項１４の本発明のサービス提供システムは、前記一部の計算機に、前記リポジトリサービス手段の動作を監視する監視サービス手段を備えることを特徴とする。
【００３２】
請求項１５の本発明のサービス提供システムは、前記監視サービス手段の動作を監視する監視手段と、前記リポジトリサービス手段の管理するロケーション情報データを計算機間で共有するためのデータ共有手段を備えることを特徴とする。
【００３３】
請求項１６の本発明のサービス提供システムは、前記監視手段の処理で、前記監視サービス手段の検索を行い、前記監視サービス手段の動作確認を継続することを特徴とする。
【００３４】
請求項１７の本発明のサービス提供システムは、前記監視サービス手段の処理で、前記一部の計算機に設けられた前記リポジトリサービス手段の監視を行い、前記リポジトリサービス手段がいずれも動作していない場合に、いずれかのリポジトリサービス手段を起動することを特徴とする。
【００３５】
請求項１８の本発明のサービス提供システムは、前記リポジトリサービス手段の初期処理で、他リポジトリサービス手段が動作している場合に、前記リポジトリサービス手段を起動しないことを特徴とする。
【００３６】
請求項１９の本発明の計算機は、ネットワークを経由してサービスを提供するプログラムを実行する計算機であって、所定の前記プログラムが動作する計算機を、前記ネットワーク上で一意に識別するためのロケーション情報を管理するサービスを提供するリポジトリサービス手段を備えることを特徴とする。
【００３７】
請求項２０の本発明の計算機は、前記リポジトリサービス手段が、何れかの前記計算機上で動作する前記プログラムからの要求に対して所定のプログラムを起動する計算機のロケーション情報を返答する処理と、前記プログラムからの要求に応じて前記ロケーション情報を格納するリポジトリデータベースのデータを書き換える処理を行うことを特徴とする。
【００３８】
請求項２１の本発明の計算機は、前記リポジトリサービス手段が、さらに、起動した前記プログラムの問い合わせに対して、前記リポジトリサービス手段を備える前記計算機の前記ロケーション情報を返答する処理を行うことを特徴とする。
【００３９】
請求項２２の本発明の計算機は、前記ロケーション情報を返答する処理で、前記何れかの計算機上で動作するプログラムが問い合わせた前記所定のプログラムの動作する計算機のロケーション情報を、前記リポジトリデータベース内で検索し、当該プログラムによるサービスが動作している場合に、当該プログラムの動作する計算機のロケーション情報を、問い合わせたプログラムに対して返答することを特徴とする。
【００４０】
請求項２３の本発明の計算機は、前記リポジトリデータベースのデータを書き換える処理で、前記プログラムからの要求に応じて前記リポジトリデータベースのデータを書き換え、その結果を前記プログラムに対して返答することを特徴とする。
【００４１】
請求項２４の本発明の計算機は、前記サービスを提供するプログラムを起動するプログラム起動手段と、前記サービスの種類の情報及び前記計算機起動時に起動すべきサービスの種類の情報を格納するサービス提供情報データベースを備えることを特徴とする。
【００４２】
請求項２５の本発明の計算機は、前記プログラム起動手段の起動処理で、前記サービス提供情報データベースの情報を参照し、起動が必要な場合に前記リポジトリサービス手段を起動し、また他に起動の必要なプログラムがある場合に当該プログラムを起動することを特徴とする。
【００４３】
請求項２６の本発明のリポジトリサービス制御プログラムは、ネットワークを経由してサービスを提供するプログラムが動作する計算機を、前記ネットワーク上で一意に識別するためのロケーション情報を管理するサービスを提供する機能を実行することを特徴とする。
【００４４】
請求項２７の本発明のリポジトリサービス制御プログラムは、前記ネットワークに接続された何れかの計算機上で動作するプログラムからの要求に対して、所定のプログラムを起動する計算機のロケーション情報を返答する処理と、前記プログラムからの要求に応じて前記ロケーション情報を格納するリポジトリデータベースのデータを書き換える機能を有することを特徴とする。
【００４５】
請求項２８の本発明のリポジトリサービス制御プログラムは、起動した前記プログラムの問い合わせに対して、前記リポジトリサービス手段を備える前記計算機の前記ロケーション情報を返答する機能を有することを特徴とする。
【発明の効果】
【００４６】
本発明のサービス提供システム、計算機及びリポジトリサービス制御プログラムによれば、以下の効果が達成される。
【００４７】
第１に、計算機上で動作するプログラムがネットワークを介して他計算機に対してサービスを提供するサービス提供システムにおいて、サービスを受ける計算機はサービスを提供するプログラムの動作する計算機のロケーション情報を常に取得できるために、情報を提供する計算機の故障あるいは保守等によりサービスを受けられなくなった際に、代替の計算機から同じサービスを継続して受けることができる。
【００４８】
第２に、上記システムにおいて情報を提供する計算機の故障あるいは保守等の際に、サービスを受ける計算機はサービスを提供するプログラムの動作する計算機のロケーション情報を常に取得できるために、ロケーション情報の得られない場合には困難となる代替計算機へのアクセスが極めて容易となる。
【実施例】
【００４９】
以下、本発明の好適な実施例について図面を参照して詳細に説明する。
【００５０】
図１は、本発明の第１の実施例によるサービス提供システムの構成を示すブロック図である。
【００５１】
図１を参照すると、計算機１と、計算機２と、計算機３と、計算機４は、ネットワーク１００を介して接続されている。計算機１と、計算機２と、計算機４は同一の構成となっている。また、計算機３は、計算機１の構成にリポジトリサービス手段３５（リポジトリはシステムが使用するデータベース）を加えた構成となっている。リポジトリサービス手段３５は、リポジトリデータベース（ＤＢ）５と接続されている。
【００５２】
最初に、リポジトリサービス手段３５を備える計算機３の構成を説明し、次に計算機１、２、４の構成を説明する。
【００５３】
本実施例による計算機３はサービス提供情報ＤＢ３１と、プログラム起動手段３２と、サービスＡを提供するプログラムＡ３３と、サービスＢを提供するプログラムＢ３４と、リポジトリサービス手段３５を備える。サービス提供のプログラムはプログラムＡ３３と、プログラムＢ３４の２種類であるが、一例であり、プログラムの種類の数は問わない。
【００５４】
サービス提供情報ＤＢ３１は、計算機３で提供可能なサービスの種類の情報やプログラム起動手段３２起動時に起動すべきプログラムの種類の情報を格納することができる。
【００５５】
プログラム起動手段３２は、サービス提供情報ＤＢ３１を参照して、リポジトリサービス手段３５を起動すべきかどうかを判断し、必要なら起動することができる。また、ネットワーク１００を経由して、あるサービスを提供できるかどうかの照会があった場合には、サービス提供情報ＤＢ３１を参照して返答する。また、サービスの提供依頼があった場合は、サービス提供情報ＤＢ３１を参照して、可能であれば対応するプログラムを起動する。
【００５６】
プログラムＡ３３と、プログラムＢ３４は、共にサービスを提供するプログラムであり、また実行ファイルである。両プログラムはネットワーク１００を経由して情報の授受を行い、他計算機あるいは自計算機に対してサービスの提供を行い、その内容は問わない。内容例として、定型計算の実行、情報管理、特定ハードウェア制御等のような処理がある。プログラムＡ３３とプログラムＢ３４は、計算機３の記憶装置に格納されている。
【００５７】
リポジトリサービス手段３５は、サービス情報を管理し、リポジトリＤＢ５へ情報を読み書きする要求を受けつけることができる。また、計算機１、２、３、４で動作するサービス間でのデータ共有を可能とすることもできる。
【００５８】
リポジトリサービス手段３５は、ネットワーク１００を経由して送信される、他の計算機１、２、４のプログラムまたは自計算機３の他プログラムからの要求を受けつける。各計算機から利用の依頼を受けると、リポジトリＤＢ５に対してデータの読み書きを行う。
【００５９】
また、ネットワーク１００に接続された計算機について、プログラムが動作している計算機を識別するための位置情報（以下ではロケーション情報と記述）を持ち、他のサービスから要求があればその情報を提供する。
【００６０】
リポジトリサービス手段３５は、ネットワーク１００に接続されたいずれの計算機でも動作していないサービスのロケーション情報を要求された場合は、各計算機のプログラム起動手段１２、２２、３２、４２に、当該サービスが提供可能かどうかを問い合わせ、可能であるとの返答を行ったプログラム起動手段に対して、ロケーション情報（ここでは計算機の番号１〜４）を要求されたプログラムの起動を依頼する。
【００６１】
本実施例では、ロケーション情報は計算機の番号１、２、３、４とするが、あくまで一例であって、計算機の製造番号あるいはその設置場所の地名等で計算機を識別できるものであれば何でもよい。
【００６２】
リポジトリＤＢ５は、リポジトリサービス手段３５からのデータ及び各計算機のプログラムの起動に必要なデータ等のサービス情報を格納する。
【００６３】
次に、計算機１、２、４の構成を説明する。
【００６４】
計算機１、２、４は、計算機３の構成から、リポジトリサービス手段３５を省略したものとなっているが、その他の構成は計算機３と同じとなっている。計算機１、２、４の構成は同一であるため、計算機１の構成を説明する。
【００６５】
図１の計算機１を参照すると、サービス提供情報ＤＢ１１は計算機１上で起動可能なサービスの種類の情報やプログラム起動時に起動すべきプログラムの種類の情報を格納することができる。
【００６６】
プログラム起動手段１２は、ネットワーク１００を経由して、あるサービスが提供できるかどうか照会された場合は、サービス提供情報ＤＢ１１を参照して返答する。また、ネットワーク１００を経由してプログラムの起動依頼があった場合は、サービス提供情報ＤＢ１１を参照して、可能ならば対応するプログラムを起動する。
【００６７】
プログラムＡ１３と、プログラムＢ１４は、共にサービスを提供するプログラムであり、共に実行ファイルである。プログラムＡ１３は計算機３のプログラムＡ３３と同じであり、またプログラムＢ１４は計算機３のプログラムＢ３４と同じである。プログラムＡ１３とプログラムＢ１４は、計算機１の記憶装置に格納されている。
【００６８】
両プログラムはネットワーク１００を経由して情報の授受を行い、他計算機あるいは自計算機に対してサービスの提供を行い、その内容は問わない。例えば、定型計算の実行、情報管理、特定ハードウェア制御のような処理がある。
【００６９】
次に、本実施例による動作を、図を用いて詳細に説明する。
【００７０】
最初にプログラム起動手段１２、２２、３２、４２の起動処理及びこれらのメイン処理を説明する。次にリポジトリサービス手段３５の動作とリポジトリサービスである、サービス起動受付処理、ロケーション情報問い合わせ処理及びリポジトリ登録処理を説明する。次にサービスを提供するプログラムの起動処理及びプログラムのサービス要求処理を説明する。なお、プログラム起動手段１２、２２、３２、４２の起動処理については、プログラム起動手段３２での例について説明する。
【００７１】
図２は、本実施例によるプログラム起動手段３２の起動処理動作を説明するためのフローチャートである。なお、必要に応じて図１の主要な部分を参照する。
【００７２】
図２を参照すると、最初にプログラム起動手段３２を起動すると（ステップ２０１）、サービス提供情報ＤＢ３１を参照し（ステップ２０２）、リポジトリサービス手段３５を起動するかどうかを判断し（ステップ２０３）、必要な場合にはリポジトリサービス手段３５を起動する（ステップ２０４）。
【００７３】
次に、サービス提供情報ＤＢ３１を参照し（ステップ２０５）、他に起動すべきプログラムがあるかどうかを判断する（ステップ２０６）。
【００７４】
起動すべきプログラムがある場合には、対応するプログラムを起動し（ステップ２０７）、起動すべきプログラムがなくなるまでステップ２０６、２０７を繰り返す。以上の起動処理が終了した後、プログラム起動手段のメイン処理へと移る（ステップ２０８）。
【００７５】
図３は本実施例によるプログラム起動手段３２のメイン処理動作を説明するためのフローチャートである。
【００７６】
図３を参照すると、プログラム起動手段３２は、最初に、ネットワーク１００を経由して送信される、他の計算機のプログラム、または自計算機の他プログラムからの要求を受けつける（ステップ３０１）。
【００７７】
その要求がプログラム起動あるいは再起動（以下では起動／再起動と略す）であるかどうかを判断し（ステップ３０２）、その要求が起動／再起動であるならばサービス提供情報ＤＢ３１を参照して（ステップ３０３）、要求に対応するプログラムを起動可能かどうかを判断する（ステップ３０４）。
【００７８】
起動可能ならば自計算機の対応するプログラムを起動／再起動し（ステップ３０５）、再びステップ３０１へと戻り新たな要求を受けつける。
【００７９】
なあ、指定されたプログラムが起動不可能な場合には、再びステップ３０１へと戻り新たな要求を受付ける。
【００８０】
また、ステップ３０１で受けつけた要求がプログラム起動／再起動でない場合には、その要求がプログラムの起動可否の調査要求であるかどうかを判断する（ステップ３０６）。
【００８１】
要求がそれ以外の場合は再びステップ３０１に戻り新たな要求を受付ける。
【００８２】
プログラム起動可否の調査要求であった場合は、サービス提供情報ＤＢ３１を参照して（ステップ３０７）、要求元へ調査結果を返答する（ステップ３０８）。
【００８３】
返答後は再びステップ３０１へと戻り、新たな要求を受付ける。
【００８４】
図４は本実施例によるリポジトリサービス手段３５の動作を説明するためのフローチャートである。
【００８５】
図４を参照すると、最初に、リポジトリサービス手段３５は、ネットワーク１００を経由して送信される他の計算機のプログラム、あるいは自計算機の他プログラムからの要求を受けつける（ステップ４０１）。
【００８６】
ステップ４０２ではその要求内容を解析し、サービス起動受付処理（ステップ４０３）、あるいはロケーション情報問い合わせ受付（ステップ４０４）、あるいはリポジトリ登録処理（ステップ４０５）に移る。
【００８７】
処理できない要求であった場合や、それぞれの処理を終了した場合はステップ４０１に戻り新たな要求を受付ける。
【００８８】
以下で、サービス起動受付処理、ロケーション情報問い合わせ受付及びリポジトリ登録処理を説明する。
【００８９】
図５は、本実施例によるサービス起動受付処理の動作を説明するためのフローチャートである。サービス起動受付処理は、起動した計算機のプログラムからの通知を受けて、プログラムに対してリポジトリサービス手段３５のロケーション情報を返答する処理である。
【００９０】
図５を参照すると、最初に、プログラム起動手段１２、２２、３２、４２が自計算機のプログラムを起動する(ステップ５０１)。
【００９１】
プログラムはネットワーク１００を経由して、プログラムが起動したことを、ブロードキャスト（ネットワークに接続したすべての端末に対する送信）により通知する。（ステップ５０２）。
【００９２】
通知の内容には、サービスの種類とサービスが起動した計算機のロケーション情報が含まれる。
【００９３】
リポジトリサービス手段３５は、この通知を取得し、リポジトリＤＢ５へ格納する（ステップ５０３）。
【００９４】
次に、リポジトリサービス手段３５は、起動したプログラムに対して、リポジトリサービス手段３５のロケーション情報を返答する（ステップ５０４）。
【００９５】
起動したプログラムは、ロケーション情報を取得したため、リポジトリサービス手段３５と通信できるようになる。
【００９６】
図６は、本実施例によるロケーション情報問い合わせ処理の動作を説明するためのフローチャートである。ロケーション情報問い合わせ処理は、起動したプログラムからの要求を受けて、当該プログラムに対して動作中のプログラムとそのロケーション情報を返答する処理である。
【００９７】
図６を参照すると、リポジトリサービス手段３５は、最初にサービスの種類をキー項目としてリポジトリＤＢ５を検索する（ステップ６０１）。
【００９８】
対応するプログラムが過去に起動したことがあれば、リポジトリＤＢ５にそのロケーションデータが格納されているので、その存在を確認する(ステップ６０２)。
【００９９】
対応するプログラムが過去に起動したことを確認した場合、ロケーション情報を利用して本当にそのサービスが動作中かどうかを確認する（ステップ６０３）。
【０１００】
そのプログラムが動作している場合、ロケーション情報問い合わせを要求したプログラムに対して、そのロケーション情報を返答して(ステップ６０４)、処理を終了する。
【０１０１】
次に、ステップ６０２でリポジトリＤＢ５に対応するサービスが存在しないと判断された場合、ネットワーク１００にブロードキャストを流し(ステップ６０５)、対応するプログラムを起動できる計算機に対して返答を求める(ステップ６０７)。
【０１０２】
いずれの計算機からも返答が無かった場合、対応するプログラムは存在しないことを返答し(ステップ６１０)、終了する。
【０１０３】
一方、ステップ６０７でサービスを起動可能な複数の計算機から返答があった場合、その中から任意に１台を選択して、その計算機に対してプログラムの起動要求を行う(ステップ６０８)。
【０１０４】
その後、当該起動要求を行った計算機のロケーション情報を、ロケーション情報問い合わせを要求したプログラムに対して、返答して(ステップ６０９)処理を終了する。
【０１０５】
次に、ステップ６０３でリポジトリＤＢ５の中に、対応するプログラムの起動した計算機のロケーション情報は存在するが、実際にそのプログラムは動作していなかったと判断した場合、そのロケーション情報をリポジトリＤＢ５から削除する(ステップ６０６)。
【０１０６】
その後は、ステップ６０５へと進み、ロケーション情報がリポジトリＤＢ５に存在しない場合と同じ処理を行う。
【０１０７】
図７は、本実施例によるリポジトリ登録処理の動作を説明するためのフローチャートである。
【０１０８】
図７を参照すると、ステップ７０１では、起動したプログラムからの要求に応じて、リポジトリＤＢ５へのデータ追加、削除、変更を行う（ステップ７０１）。
【０１０９】
その処理結果を、要求元のプログラムへ返信する（ステップ７０２）。
【０１１０】
次にサービスを提供するプログラムの起動処理及びプログラムのサービス要求処理を説明する。
【０１１１】
図８は、本実施例によるプログラムの起動処理を説明するためのフローチャートである。なお、必要に応じて図１の主要な部分を参照する。
【０１１２】
図８を参照すると、最初にプログラムはサービスが起動したことをネットワーク１００を経由して、ブロードキャストで通知する(ステップ８０１)。
【０１１３】
その後、リポジトリサービス手段３５からの返答を待つ(ステップ８０２)。
【０１１４】
返答がない場合は再度ステップ８０１に戻って起動したことを通知する。
【０１１５】
リポジトリサービス手段３５より返答があった場合は、リポジトリサービス手段３５のロケーション情報を記憶して(ステップ８０３)、サービスのメイン処理を実行する(ステップ８０４)。
【０１１６】
図９は、本実施例によるプログラムが他のプログラムに対して要求を行う場合のサービス要求処理を説明するためのフローチャートである。
【０１１７】
図９を参照すると、最初に、要求元のプログラムは、必要とするサービスのロケーション情報を有しているか確認する(ステップ９０１)。
【０１１８】
必要とするサービスのロケーション情報を有している場合には、ロケーション情報のプログラムに対して必要とするサービスを要求する（ステップ９０３）。
【０１１９】
一方、必要とするサービスのロケーション情報を持たない場合は、リポジトリサービス手段３５に対して、当該サービスのロケーション情報を要求し、取得する(ステップ９０２)。
【０１２０】
次に、取得したロケーション情報を使用して、ロケーション情報のプログラムに対して、サービスを要求する(ステップ９０３)。
【０１２１】
要求後は、サービスの返答を待ち(ステップ９０４)、返答がない場合はステップ９０２へ戻り、当該サービスのロケーション情報を要求する(ステップ９０２)。
【０１２２】
返答があった場合はサービス要求処理を終了する。
【０１２３】
以下では、本実施例による動作を具体的な情報例を用いて詳細に説明する。
【０１２４】
図１０は、本実施例による、図１のサービス提供情報ＤＢ３１、サービス提供情報ＤＢ１１、サービス提供情報ＤＢ２１に格納されるデータの一例である。
【０１２５】
以下、図１０のサービス提供情報ＤＢ３１を使用して、リポジトリサービス起動の流れを説明する。なお、図２を参照するため、文中に図２のステップ番号を表示する。また、必要に応じて図１の主要な部分を参照する。
【０１２６】
最初に、図１の計算機３でプログラム起動手段３２を立ち上げる。通常、この処理は計算機３の立ち上げ時に自動的に行う。
【０１２７】
プログラム起動手段３２を起動すると(ステップ２０１)、次にサービス提供情報ＤＢ３１のデータを参照する(ステップ２０２)。
【０１２８】
プログラム起動手段３２は図１０のサービス提供情報ＤＢ３１のデータを参照し、リポジトリサービス手段３５は「計算機起動時に起動する」という情報を取得する。
【０１２９】
次に、プログラム起動手段３２はリポジトリサービス手段３５を起動すべきであると判断し(ステップ２０３)、リポジトリサービス手段３５を起動する(ステップ２０４)。
【０１３０】
サービス提供情報ＤＢ３１のデータを参照すると(ステップ２０５)、その他に起動すべきサービスは無いことがわかる(ステップ２０６)。
【０１３１】
その後、プログラム起動手段３２はメイン処理を開始する(ステップ２０８)。
【０１３２】
次に、図１０のサービス提供情報ＤＢのデータ１１を使用して、プログラム起動時のフローを説明する。なお、図４、図５、図８を参照するため、文中に各図の番号とステップ番号を表示する。また、必要に応じて図１の主要な部分を参照する。
【０１３３】
図１０のサービス提供情報ＤＢ１１を参照すると、プログラムＡ１３は、計算機１起動時にプログラム起動手段１２によって起動されることがわかる。計算機１上でプログラムＡ１３が起動すると、ブロードキャストによってプログラムＡ１３が起動したことを通知する(図８のステップ８０１)。
【０１３４】
リポジトリサービス手段３５は要求受付状態で待機しており(図４のステップ４０１)、プログラムＡ１３起動の通知を受け取る。
【０１３５】
また、サービス起動の通知であることを認識し(図４のステップ４０２)、サービス起動受付処理(図４のステップ４０３)を開始する。この処理の流れは図５で説明されている。
【０１３６】
プログラムＡ１３が計算機１上で起動したことをリポジトリＤＢ５に記録し(図５のステップ５０１)、リポジトリサービス手段３５のロケーション情報を計算機１のプログラムＡ１３に対して送信する(図５のステップ５０２)。
【０１３７】
プログラムＡ１３は、その通知を受け取り（図８のステップ８０２）、リポジトリサービス手段３５が計算機３で動作していることを記憶する(図８のステップ８０３)。その後、プログラムのメイン処理へと移る(図８のステップ８０４)。
【０１３８】
次に、別の具体例として、図１０のサービス提供情報ＤＢ２１を使用して、まだ起動していないサービスＢのプログラムＢ２４に対して要求があった場合に、
自動的にプログラムＢ２４が起動される処理の流れを説明する。なお、図３、図４、図６、図９を参照するため、文中に各図の番号とステップ番号を表示する。また、必要に応じて図１の主要な部分を参照する。
【０１３９】
計算機２のプログラムＡ２３が、まだ起動していないプログラムＢ２４に対してサービスの要求を行う場合、最初にプログラムＡ２３はプログラムＢ２４のロケーションを確認する(図９のステップ９０１)。
【０１４０】
この時点でプログラムＡ２３はプログラムＢ２４のロケーションを取得していないので、リポジトリサービス手段３５に対してサービスＢのロケーション情報を問い合わせる(図９のステップ９０２)。
【０１４１】
リポジトリサービス手段３５は、この要求を受付ける（図４のステップ４０１）。
【０１４２】
次に、ロケーション情報問い合わせであると判別し、ロケーション情報問い合わせ処理(図４のステップ４０４)を行う。この処理のフローは図６で説明されている。
【０１４３】
リポジトリサービス手段３５は、リポジトリＤＢ５を検索し、サービスＢのプログラムが起動しているかどうかを確認する(図６のステップ６０１)。
【０１４４】
この時点で、サービスＢのプログラムは起動されていないので、サービスＢは存在しないと判断される（図６のステップ６０２）。
【０１４５】
次に、ブロードキャストでサービスＢのプログラムを起動可能な計算機を検索する（図６のステップ６０５）。
【０１４６】
計算機１、２、３、４ではプログラム起動手段１２、２２、３２、４２が動作しており、要求を受付ける(図３のステップ３０１)。
【０１４７】
ここでサービスＢがプログラム起動可否の調査要求かどうかを判断する(図３のステップ３０６)。
【０１４８】
プログラム起動手段１２、２２、３２、４２は、それぞれ動作している計算機１、２、３、４のサービス提供情報ＤＢ１１、２１、３１、４１をそれぞれ参照する(図３のステップ３０７)。
【０１４９】
図１０を参照すると、サービスＢはサービス提供情報ＤＢ２１のみに存在するので、計算機２のプログラム起動手段２２のみが、リポジトリサービス手段３５に対して応答する。
【０１５０】
リポジトリサービス手段３５が取得するのは計算機２からのデータなので、計算機２のプログラム起動手段２２に対してサービスＢの起動要求を行う(図６のステップ６０８)。
【０１５１】
すでに述べたように、計算機１、２、３、４では、プログラム起動手段１２、２２、３２、４２がそれぞれ動作しており、要求受付で待機をしている（図３のステップ３０１）。
【０１５２】
計算機２のプログラム起動手段２２はプログラムＢ２４の起動要求を受け取り、サービス提供情報ＤＢ２１を参照する（図３のステップ３０３）。
【０１５３】
参照の結果、サービスＢを起動可能であることがわかるので（図３のステップ３０４）、プログラムＢ２４を起動する（図３のステップ３０５）。
【０１５４】
サービスＢの起動要求を行ったリポジトリサービス手段３５は、サービスＢのロケーション情報として計算機２を、計算機２のプログラムＡ２３に対して返答する(図６のステップ６０９)。
【０１５５】
プログラムＡ２３はこの情報を受け取り(図９のステップ９０２)、計算機２のプログラムＢ２４に対して、サービスの要求を行う(図９のステップ９０３)。
【０１５６】
計算機２のプログラムＡ２３は、同じ計算機２のプログラムＢ２４から返答をもらうが(図９のステップ９０４)、返答がない場合はステップ９０２に戻り同様な処理を繰り返す。
【０１５７】
このようにサービスＡから見ると、サービスＢの起動はサービスＡのプログラムＡ２３とは無関係に行われるので、サービスＢのロケーション、起動状態を気にせずにサービスの要求を行うことができる。
【０１５８】
次に、別の具体例として、プログラムＡ１３が計算機１で動作していたが、計算機１は故障したため、サービスＡが停止した状態で、計算機２のプログラムＢ２４が、サービスＡのプログラムに対してサービスの要求を行う場合の流れを説明する。図９及び図１０を参照して説明するが、文中に図９のステップ番号を表示する。なお、必要に応じて図１の主要な部分を参照する。
【０１５９】
計算機２のプログラムＢ２４は、過去に何度か、プログラムＡ１３に対してサービスの要求を行っており、プログラムＡ１３が計算機１で動作していることを情報として取得している（ステップ９０１）。
【０１６０】
そのため、プログラムＡ１３に対して要求を行う（ステップ９０３）。ところが計算機１は故障しており、サービスＡを提供するプログラム１３Ａから応答はない。
【０１６１】
計算機２のプログラムＢ２４は、応答がないことに気づき（ステップ９０４）、ステップ９０２へ戻ってリポジトリサービス手段３５に対して、サービスＡのロケーション情報を問い合わせる。
【０１６２】
図１０を参照すると、サービスＡのプログラムが動作可能なのは計算機１と計算機２ということがわかる。ところが計算機１は故障しているので、実際は計算機２のみとなる。リポジトリサービス手段３５はサービスＡの動作可能な計算機を検索するが、応答するのは計算機２のみなので計算機２に対してプログラムＡ２３の起動要求を行い、そのロケーション情報をプログラムＢ２４へ返答する。プログラムＢ２４はその情報を受け取り(ステップ９０２)、計算機２で動作するプログラムＡ２３に対してサービス要求を行い(ステップ９０３)、返答を受け取る(ステップ９０４)。
【０１６３】
このように計算機の故障などによりあるサービスが停止したとしても、そのサービスが他の計算機で動作可能であれば、サービスの提供を継続することができる。
【０１６４】
次に、プログラムがデータを図１のリポジトリＤＢ３５へ保存するフローを説明する。図４、図７を参照して説明するため、文中に図の番号とステップ番号を表示する。また、必要に応じて図１の主要な部分を参照する。
【０１６５】
リポジトリサービスは要求受付で待機している(ステップ４０１)。
【０１６６】
プログラムがリポジトリサービス手段３５に対して、データのリポジトリ登録を要求すると、リポジトリサービス手段３５は、リポジトリへの登録処理を開始する(図４のステップ４０５)。
【０１６７】
リポジトリサービス手段３５は、登録の要求されたデータをリポジトリＤＢ５へ格納する(図７のステップ７０１)。
【０１６８】
そして、その格納処理が成功したか、失敗したかを要求元へ返答する(図７のステップ７０２)。
【０１６９】
プログラムが、自身が必要とするデータを常にリポジトリＤＢ５へ格納することにより、プログラムが再起動しても再起動前の状態へ容易に復帰することができる。
【０１７０】
本実施例による計算機３のリポジトリサービス手段３５の機能は、その機能をハードウェア的に実現することは勿論として、上記した機能を実行するリポジトリサービス制御プログラム（アプリケーション）５０を計算機３で実行することにより、ソフトウェア的に実現することができる。このリポジトリサービス制御プログラム５０は、磁気ディスク、半導体メモリその他の記録媒体に格納され、その記録媒体からコンピュータ処理装置である計算機３にロードされ、コンピュータ処理装置の動作を制御することにより、上述した各機能を実現する。
【０１７１】
本実施例では、リポジトリサービス手段３５を計算機３に備えた場合について説明したが、必ずしも計算機内に備える必要はなく、システム内であれば計算機外であっても構わない。この場合、リポジトリサービス手段のロケーション情報は計算機のロケーション情報にこだわることなく別番号とすればよい。
【０１７２】
以上説明した実施例によれば、計算機上で動作するプログラムがネットワークを介して他計算機にサービスを提供するサービス提供システムにおいて、サービスを受ける計算機はサービスを提供するプログラムの動作する計算機のロケーション情報を常に取得できるために、情報を提供する計算機の故障あるいは保守等によりサービスを受けられなくなった際に、代替の計算機から同じサービスを継続して受けることができる。
【０１７３】
次に、本発明の第２の実施例について、図を参照して詳細に説明する。
【０１７４】
図１１は、本発明の第２の実施例によるサービス提供システムの構成を示すブロック図である。
【０１７５】
各計算機のサービス提供情報ＤＢ、プログラム起動手段及びプログラムは、第１の実施例の図１にて説明したとおりであり、計算機によらず同じである。
【０１７６】
本実施例は、図１に示した第１の実施例の構成とは、リポジトリサービス手段２５、３５、４５が複数の計算機に備えられた点が異なる。また、データ共有手段６と、監視手段７と、監視サービス手段２７、４７が追加されている。以下、追加された手段について説明する。
【０１７７】
データ共有手段６は各リポジトリサービス手段２５、３５、４５でのデータを共有する手段である。また、データ共有手段６に接続されている計算機２、３、４から、リポジトリＤＢ５を読み書き可能にする機能を、リポジトリサービス手段２５、３５、４５に対して提供する。すなわち、計算機２、３、４から、データ共有手段６を介して、リポジトリＤＢ５を読み書き可能にできる。
【０１７８】
データ共有手段６には既存の技術を使用する。例えばＮＦＳ（Network File System）によるファイル共有、マルチパスの配線が可能なディスク、データベースのレプリケーション機能などを使用する。データ共有機能により、データ共有手段６に接続されている計算機２、３、４で、リポジトリサービス手段２５、３５、４５を起動することができる。
【０１７９】
監視サービス手段２７、４７は、ネットワークに接続した計算機のリポジトリサービス手段２５及びリポジトリサービス手段４５をそれぞれ監視し、動作していないことを検出すると、それぞれが設けられた計算機のリポジトリサービス手段を起動する機能を有する。
【０１８０】
監視手段７は、監視サービス手段２７及び４７を監視する。
【０１８１】
次に、本実施例による動作を、図を用いて詳細に説明する。
【０１８２】
図１２は、本実施例による監視手段７の処理を説明するためのフローチャートである。この処理は、リポジトリサービス手段２５、３５、４５の起動時に、別スレッド、または別プロセスで開始される。
【０１８３】
最初に、リポジトリサービスの機能を使用して、監視サービスの検索を行う（ステップ１２０１)。
【０１８４】
検索結果を確認し(ステップ１２０２)、監視サービスが見つからなければ、ステップ１２０１へ戻り、再度監視サービスを検索する。
【０１８５】
監視サービスが見つかった場合は、そのサービスが実際に動作しているかどうかを確認する(ステップ１２０３)。
【０１８６】
動作していない場合は、監視サービスの検索を行う(ステップ１２０１)。
【０１８７】
動作している場合は、動作の確認を継続する(ステップ１２０３)。
【０１８８】
次に、監視サービス２７、４７の起動処理及びメイン処理を説明する。メイン処理の前の起動処理は、図８のプログラムの起動処理と同様に行うことができる。以下メイン処理について、説明する。
【０１８９】
図１３は、本実施例による監視サービス２７、４７のメイン処理を説明するためのフローチャートである。メイン処理は図８のステップ８０４に相当する。以下、監視サービス２７での例を説明する。
【０１９０】
図１３を参照すると、監視サービス２７は、リポジトリサービス手段２５、３５、４５が動作しているかどうかの確認を続ける（ステップ１３０１）。
【０１９１】
動作していない場合は、リポジトリサービス２５を起動する(ステップ１３０２)。
【０１９２】
その後、監視サービス２７は、ブロードキャストで全サービスの再起動指示を、プログラム起動手段１２、２２、３２、４２に対して行う(ステップ１３０３)。
【０１９３】
図１４は、本実施例によるリポジトリサービス手段２５、３５、４５の初期処理の流れを説明するためのフローチャートである。初期処理は、リポジトリサービス手段が複数ある場合に使用する。以下、リポジトリサービス手段２５での例を説明する。
【０１９４】
図１４を参照すると、リポジトリサービス手段２５は、最初にブロードキャストでリポジトリサービス手段を検索する（ステップ１４０１）。
【０１９５】
また、同時に監視手段７が、別スレッド、または別プロセスで開始される。
【０１９６】
リポジトリサービス手段２５は、他のリポジトリサービスが動作しているかどうかを判断し(ステップ１４０２)、すでに動作している場合は処理を終了する（ステップ１４０５）。
【０１９７】
動作していない場合は、監視サービスを起動する(ステップ１４０３)。
【０１９８】
その後のリポジトリサービスメイン処理は図４と同等である。
【０１９９】
以下では、本実施例による動作を、具体的なデータ例を用いて、詳細に説明する。
【０２００】
図１５は、本実施例による、サービス提供情報ＤＢ３１、サービス提供情報ＤＢ４１、サービス提供情報ＤＢ２１に格納されるデータの一例である。
図１５を参照すると、計算機３ではリポジトリサービスを、また計算機４と計算機２では監視サービスを提供する。
【０２０１】
計算機３でリポジトリサービス手段３５が動作し、計算機４で監視サービス手段４７が動作している状態で、計算機３が故障した場合の状況を説明する。なお、図１２、図１３、図１４を参照して説明するため、文中に図の番号とステップ番号を表示する。また、必要に応じて図１の主要な部分を参照する。
【０２０２】
計算機３が故障すると、リポジトリサービス手段３５の動作が停止する。計算機４で動作している監視サービス手段４７は、リポジトリサービス手段３５の動作停止を検知し（図１３のステップ１３０１）、リポジトリサービス手段４５を起動する（図１３のステップ１３０２）。
【０２０３】
リポジトリサービス手段４５が起動される（図１４のステップ１４０１）。
【０２０４】
また、同時に監視手段７が、別スレッド、または別プロセスで開始される。
【０２０５】
次に他のリポジトリサービスを検索し（図１４のステップ１４０２）、その他の計算機でリポジトリサービスが動作しているかを確認する(図１４のステップ１４０３)。
【０２０６】
次に、リポジトリサービス４５を起動した監視サービス４７は、すべてのプログラムに対して、再起動指示を行う(図１３のステップ１３０３)。
【０２０７】
これにより、すべてのプログラムに記憶されるリポジトリサービス手段のロケーション情報は、計算機３から、計算機４に更新される。
【０２０８】
第１の実施例では、リポジトリサービス手段３５が計算機３にのみ備わっていたため、計算機３が故障した場合にリポジトリサービスを提供できなくなるという欠点があった。本実施例では、複数計算機でのリポジトリサービスの提供及びリポジトリサービスの監視により、計算機故障時のリポジトリサービスの提供を継続することが可能となり、サービス提供システムの耐故障性能を高めることができる。
【０２０９】
以上好ましい複数の実施例をあげて本発明を説明したが、本発明は必ずしも、上記実施例に限定されるものでなく、その技術的思想の範囲内において様々に変形して実施することができる。
【図面の簡単な説明】
【０２１０】
【図１】本発明の第１の実施例によるサービス提供システムの構成を示すブロック図である。
【図２】本発明の第１の実施例によるプログラム起動手段の起動処理動作を説明するためのフローチャートである。
【図３】本発明の第１の実施例によるプログラム起動手段のメイン処理動作を説明するためのフローチャートである。
【図４】本発明の第１の実施例によるリポジトリサービス手段の動作を説明するためのフローチャートである。
【図５】本発明の第１の実施例によるサービス起動受付処理の動作を説明するためのフローチャートである。
【図６】本発明の第１の実施例によるロケーション情報問い合わせ処理の動作を説明するためのフローチャートである。
【図７】本発明の第１の実施例によるリポジトリ登録処理の動作を説明するためのフローチャートである。
【図８】本発明の第１の実施例によるプログラムの起動処理を説明するためのフローチャートである。
【図９】本発明の第１の実施例によるサービス要求処理を説明するためのフローチャートである。
【図１０】本発明の第１の実施例によるサービス提供情報ＤＢに格納されるデータの一例である。
【図１１】本発明の第２の実施例によるサービス提供システムの構成を示すブロック図である。
【図１２】本発明の第２の実施例による監視手段の処理を説明するためのフローチャートである。
【図１３】本発明の第２の実施例による監視サービスのメイン処理を説明するためのフローチャートである。
【図１４】本発明の第２の実施例によるリポジトリサービス手段の初期処理の流れを説明するためのフローチャートである。
【図１５】本発明の第２の実施例によるサービス提供情報ＤＢに格納されるデータの一例である。
【符号の説明】
【０２１１】
１、２、３、４：計算機
５：リポジトリＤＢ
６：データ共有手段
７：監視手段
１１、２１、３１、４１：サービス提供情報ＤＢ
１２、２２、３２、４２：プログラム起動手段
１３、２３、３３、４３：プログラムＡ
１４、２４、３４、４４：プログラムＢ
２５、３５、４５：リポジトリサービス手段
２７、４７：監視サービス手段
５０：リポジトリサービス制御プログラム
１００：ネットワーク
【図１】
2005202698.tif 000003
【図２】
2005202698.tif 000004
【図３】
2005202698.tif 000005
【図４】
2005202698.tif 000006
【図５】
2005202698.tif 000007
【図６】
2005202698.tif 000008
【図７】
2005202698.tif 000009
【図８】
2005202698.tif 000010
【図９】
2005202698.tif 000011
【図１０】
2005202698.tif 000012
【図１１】
2005202698.tif 000013
【図１２】
2005202698.tif 000014
【図１３】
2005202698.tif 000015
【図１４】
2005202698.tif 000016
【図１５】
2005202698.tif 000017