(57)【特許請求の範囲】
【請求項１】
記憶域に格納された接続先リストと、
端末ＡＰと、
接続された複数の第１サーバの各々から取得した第１情報に基づいて前記複数の第１サーバの各々の状態情報を前記接続先リストに記憶し、前記複数の第１サーバの状態情報に基づいて前記複数の第１サーバからひとつを選択して当該選択した第１サーバと前記端末ＡＰとの間の通信接続を行う端末プログラムと、を備え、
前記複数の第１サーバの各々が、各々に接続されている全ての第２サーバから取得した第２情報に基づいて生成した前記第２サーバの状態情報を含む前記第１情報を受信することで取得し、
前記第１情報に含まれる前記第２サーバの状態情報に基づいて前記接続先リストに記憶されている前記第１サーバの状態情報を更新する、端末装置。
【請求項２】
取得された前記第１情報に含まれる前記第２サーバの状態情報に正常であることを示す情報が含まれていない場合に、前記複数の第１サーバに前記第１情報の送信を要求する、請求項１に記載の端末装置。
【請求項３】
取得された前記第１情報に含まれる前記第２サーバの状態情報に正常であることを示す情報が少なくとも一つ含まれている場合に、前記第１情報に含まれる前記第２サーバの状態情報に基づいて前記接続先リストに記憶されている前記第１サーバの状態情報を更新する、請求項１または２のいずれか１項に記載の端末装置。
【請求項４】
前記第１サーバと前記第２サーバとの間の通信においてエラーが発生した際に当該第１サーバが送信する、エラーを示す情報を受け取ると、前記接続先リストに記憶されている第１サーバの状態情報の全てを、障害があることを示す情報に更新する、請求項１ないし３のいずれか１項に記載の端末装置。
【請求項５】
前記接続先リストに記憶されている前記第１サーバの状態情報の全てが障害であることを示す情報である場合に、前記端末プログラムが、前記複数の第１サーバに前記第１情報の送信を要求する、請求項１ないし４のいずれか１項に記載の端末装置。
【請求項６】
前記第１情報の送信の要求に基づいて送信される前記第１情報に基づいて、前記第１サーバの状態情報の少なくとも一つが正常であることを示す情報に更新された場合に、当該第１サーバに接続する、請求項５に記載の端末装置。
【請求項７】
前記複数の第１サーバと、前記第２サーバと、請求項１ないし６のいずれか１項に記載の端末装置とを備えるシステム。
【請求項８】
コンピュータが、
前記コンピュータに接続された複数の第１サーバの各々から第１情報を取得し、
前記第１情報に基づいて前記複数の第１サーバの各々の状態情報を記憶域に格納された接続先リストに記憶し、
前記複数の第１サーバの状態情報に基づいて前記複数の第１サーバからひとつを選択して当該選択した第１サーバと前記コンピュータに搭載された端末ＡＰとの間の通信接続を行い、
前記複数の第１サーバの各々が各々に接続されている全ての第２サーバから取得した第２情報に基づいて生成した前記第２サーバの状態情報を含む前記第１情報を受信することで取得し、
前記第１情報に含まれる前記第２サーバの状態情報に基づいて前記接続先リストに記憶されている前記第１サーバの状態情報を更新する、端末制御方法。
【請求項９】
取得された前記第１情報に含まれる前記第２サーバの状態情報に正常であることを示す情報が少なくとも一つ含まれている場合に、前記第１情報に含まれる前記第２サーバの状態情報に基づいて前記接続先リストに記憶されている前記第１サーバの状態情報を更新する、請求項８に記載の端末制御方法。
【請求項１０】
前記コンピュータは、前記第１サーバと前記第２サーバとの間の通信においてエラーが発生した際に当該第１サーバが送信する、エラーを示す情報を受け取ると、前記接続先リストに記憶されている第１サーバの状態情報の全てを、障害があることを示す情報に更新する、請求項８または９に記載の端末制御方法。
【請求項１１】
コンピュータに、
前記コンピュータに接続された複数の第１サーバの各々から第１情報を取得する処理と、
前記第１情報に基づいて前記複数の第１サーバの各々の状態情報を記憶域に格納された接続先リストに記憶する処理と、
前記複数の第１サーバの状態情報に基づいて前記複数の第１サーバからひとつを選択して当該選択した第１サーバと前記コンピュータに搭載された端末ＡＰとの間の通信接続を行う処理と、
前記複数の第１サーバの各々が各々に接続されている全ての第２サーバから取得した第２情報に基づいて生成した前記第２サーバの状態情報を含む前記第１情報を受信することで取得する処理と、
前記第１情報に含まれる前記第２サーバの状態情報に基づいて前記接続先リストに記憶されている前記第１サーバの状態情報を更新する処理と、を実行させる端末プログラム。
【請求項１２】
取得された前記第１情報に含まれる前記第２サーバの状態情報に正常であることを示す情報が含まれていない場合に、前記複数の第１サーバに前記第１情報の送信を要求する処理を前記コンピュータに実行させる、請求項１１に記載の端末プログラム。
【請求項１３】
取得された前記第１情報に含まれる前記第２サーバの状態情報に正常であることを示す情報が少なくとも一つ含まれている場合に、前記第１情報に含まれる前記第２サーバの状態情報に基づいて前記接続先リストに記憶されている前記第１サーバの状態情報を更新する処理を前記コンピュータに実行させる、請求項１１または１２に記載の端末プログラム。
【請求項１４】
前記第１サーバと前記第２サーバとの間の通信においてエラーが発生した際に当該第１サーバが送信する、エラーを示す情報を受け取ると、前記接続先リストに記憶されている第１サーバの状態情報の全てを、障害があることを示す情報に更新する処理を前記コンピュータに実行させる、請求項１１ないし１３のいずれか１項に記載の端末プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、端末装置、システム、端末制御方法および端末プログラムに関する。
【背景技術】
【０００２】
特許文献１には、複数あるサーバの一と通信するクライアントが、あるサーバが選択したサーバと通信するシステムが開示されている。この技術はクライアントが主体となって、通信先サーバを決定するものではない。
【０００３】
特許文献２には、サーバ（受信先）が中継コンピュータを通じてサーバ（送信元）の通知コードを受信するシステムが開示されている。この技術はサーバ（受信先）が主体となって、通信先中継コンピュータを選択するものではない。
【０００４】
【特許文献１】特開平９−１０６３８１号公報
【特許文献２】特開平８−１６５０２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
特許文献１および２の技術は、各々単独またはその組み合わせのいずれにおいても、端末の通信先サーバは端末以外のものが主体となって選択しなければならないという課題があった。本発明はこの課題を解決するための端末装置、システム、端末制御方法および端末プログラムを提供することにある。
【課題を解決するための手段】
【０００６】
本発明の一例の端末装置は、記憶域に格納された接続先リストと、端末ＡＰと、接続された複数の第１サーバの各々から取得した第１情報に基づいて前記複数の第１サーバの各々の状態情報を前記接続先リストに記憶し、前記複数の第１サーバの状態情報に基づいて前記複数の第１サーバからひとつを選択して当該選択した第１サーバと前記端末ＡＰとの間の通信接続を行う端末プログラムを備える。
【０００７】
本発明の一例の端末制御方法は、コンピュータが、前記コンピュータに接続された複数の第１サーバの各々から第１情報を取得する取得行程と、前記第１情報に基づいて前記複数の第１サーバの各々の状態情報を記憶域に格納された接続先リストに記憶する記憶行程と、前記複数の第１サーバの状態情報に基づいて前記複数の第１サーバからひとつを選択して当該選択した第１サーバと前記コンピュータに搭載された端末ＡＰとの間の通信接続を行う接続行程を有する。
【０００８】
本発明の一例の端末プログラムは、コンピュータに、前記コンピュータに接続された複数の第１サーバの各々から第１情報を取得する取得処理と、前記第１情報に基づいて前記複数の第１サーバの各々の状態情報を記憶域に格納された接続先リストに記憶する記憶処理と、前記複数の第１サーバの状態情報に基づいて前記複数の第１サーバからひとつを選択して当該選択した第１サーバと前記コンピュータに搭載された端末ＡＰとの間の通信接続を行う接続処理を実行させる。
【発明の効果】
【０００９】
本発明によれば、端末が主体となって通信先サーバを選択することができる。
【発明を実施するための最良の形態】
【００１０】
本発明の第１の実施例（実施例１）は以下の通りである。本実施例は、図１および図２が示すように以下の３層の構造から構成されている店舗システム１０である。
１）クライアントAP１２を備え、オペレータが操作するクライアントPC１ｎ。
２）サーバAP２２を備えるAPサーバ２ｍ。
３）業務用のデータベースを制御するDBMS３２を備えるDBサーバ３ｐ。
【００１１】
ここで、APは、アプリケーションプログラムを意味する。クライアントPC１ｎは端末装置とも呼ばれるコンピュータである。APサーバ２ｍは第２サーバとも呼ばれる。DBMS３２はデータベース管理システムを意味する。また、DBサーバ３ｐは第２サーバとも呼ばれる。
【００１２】
店舗システム１０は、店舗にクライアントPC１ｎを備え、センタにAPサーバ２ｍ、DBサーバ３ｐを備える。
店舗には業務処理用のサーバコンピュータを備えていない。店舗システム１０は、クライアントPC１ｎ、APサーバ２ｍ、DBサーバ３ｐの各々を一台備えていても複数台備えていてもよい。各々の台数は一致している必要はない。サーバAP２２は業務処理用のロジックを含んでいる。本実施例では、クライアントAP１２は操作性の観点からNET Frameworkアプリケーションであると仮定する。サーバAP２２は、再利用性、信頼性などの観点からのEnterprise JavaBean（登録商標）(EJB)アプリケーションとしている。通信はCORBA（Common Object Request Broker Architecture）やSOAP（Simple Object Access Protocol）の規約に準拠して行う。
【００１３】
店舗システム１０において、接続タイムアウト設定値は、クライアントPC１ｎがタイムアウトによる接続エラーを検出したさいに、APサーバ２ｍ内で生き残るプロセスが無いように設定される。すなわち、クライアントPC１ｎがAPサーバ２ｍの応答監視に使用する接続タイムアウト設定値は、APサーバ２ｍがDBサーバ３ｐの応答監視に使用する接続タイムアウト設定値より長い。このため、DBサーバ３ｐで異常が発生した時は、クライアントPC1ｎがタイムアウトを検出する前に、APサーバ２ｍが異常を検出しAPサーバ２ｍ内の関連プロセスは異常終了することとなる。
【００１４】
なお、本発明の実施例は店舗システムに限定されない。本発明は、倉庫システムや放送システムなど他のシステムにも適用可能である。
【００１５】
図２は本実施例の詳細な構成を示す。クライアントPC１ｎの構成は下記通りである。
【００１６】
１）クライアントAP１２
これは、店舗システム１０の業務処理を行うアプリケーションプログラム（AP）の一部である。これは、APサーバ２ｍ側のAPであるサーバAP２２と共同して業務処理を実行する。
【００１７】
２）接続先判定部品ＣＡ
この部品は、接続するAPサーバ２ｍの識別子をCL接続先情報保持部品ＣＢから取得する。この部品は、CL接続先情報保持部品ＣＢからすべてのAPサーバ２ｍへの接続が出来ない旨の応答を受け取った場合は、APサーバ２ｍへの接続を止めてクライアントPC１ｎ単独でのローカルな処理を行うように決定する。
【００１８】
３）CL接続先情報保持部品ＣＢ
この部品は、CL接続先リスト１４に格納されている各APサーバ２ｍの情報を管理する。
【００１９】
４）接続先切り替え部品ＣＣ
この部品は、APサーバ２ｍとの間の通信結果報告を通信部品ＣＥから受け取ってチェックし、接続エラーやタイムアウトの発生を検出する。この部品は、接続エラー時には再試行を行う。また、この部品は、通信結果報告に従って、CL接続先情報保持部品ＣＢ経由でCL接続先リスト１４の情報を更新する。
【００２０】
さらにこの部品は、接続先生死検知部品ＣＤから特定のAPサーバ２ｍに接続されるDBサーバ３ｐがすべて障害という情報を受け取った場合、そのAPサーバ２ｍに関するCL接続先リスト１４の情報をCL接続先情報保持部品ＣＢ経由で更新する。この部品は、接続先生死検知部品ＣＤから障害中であったAPサーバ２ｍの復帰が通知された場合にも、そのAPサーバ２ｍに関するCL接続先リスト１４の情報をCL接続先情報保持部品ＣＢ経由で更新する。
【００２１】
５）接続先生死検知部品ＣＤ
この部品は、設定により定められたルールに基づき、CL接続先リスト１４に登録されているAPサーバ２ｍへのポーリングを通信部品ＣＥ経由で行う。ポーリングは、APサーバ２ｍが備えるAPステータス返却部品ＡＦに対して行い、クライアントPC１ｎとAPサーバ２ｍ間の接続確認およびレスポンスタイム確認を行う。ポーリングは、APサーバ２ｍの持つDBサーバ３ｐの状態も確認する。本部品は、ポーリングによりAPサーバ２ｍの復帰を確認したら接続先切り替え部品ＣＣへ通知する。APサーバ２ｍの復帰は、APサーバ２ｍへの通信が成功して当該APサーバ２ｍに接続されているDBサーバ３ｐのステータスが正常であることにより検出される。
【００２２】
６）通信部品ＣＥ
本部品はAPサーバ２ｍと通信をしてその状態情報（第１情報）をデータ受信や通信時間監視により取得する。ここでAPサーバ２ｍから取得される状態情報は、APサーバ２ｍから受信して得られる情報と、APサーバ２ｍへの通信がタイムオーバーすることで間接的に得られる情報の両者を含む。CL接続先リスト１４のAPステータス１８ｍは、ここで取得した状態情報基づいて設定される。
【００２３】
７）CL接続先リスト１４
本データは、クライアントPC1ｎごとに負荷分散と障害時切替先平滑化の為に設けられた、当該クライアントPC１ｎから接続可能なAPサーバ２ｍの一覧表である。本データは、クライアントPC１ｎの記憶域に格納されている。クライアントPC１ｎは、業務処理の通信開始時に、このCL接続先リスト１４に基づいて接続するAPサーバ２ｍを選択して接続する。図３によれば、CL接続先リスト１４は、接続先の候補となるAPサーバ２ｍの識別子AP_ID１６ｍ、当該APサーバ２ｍのAP通信アドレス１７ｍおよび当該APサーバ２ｍの運転状態を示すAPステータス１８ｍを包含する。ここで、APステータス１８ｍは、正常状態（Active）、高負荷状態（Busy）もしくは障害状態（Dead）のいずれかの値をとる。APステータス１８ｍは、第１サーバの状態情報とも呼ばれる。
【００２４】
８）ローカルDB１５
これは、クライアントPC１ｎ単独でローカルな処理を行うときに使用するデータベースである。
【００２５】
なお、接続先判定部品ＣＡ、CL接続先情報保持部品ＣＢ、接続先切り替え部品ＣＣ、接続先生死検知部品ＣＤおよび、通信部品ＣＥは、クライアントミドルウェア１３を構成する。クライアントミドルウェア１３は、上記各部品の機能を包含していれば良く、機能分割は上記部品通りの分割に限られない。なお、クライアントミドルウェア１３は端末プログラムとも呼ばれる。また、ローカルDB１５が無い場合もある。図９は、こうした条件を加味したクライアントPC１ｎの構成を示す。
【００２６】
図２によれば、APサーバ２ｍの構成は下記通りである。
【００２７】
１）サーバAP２２
これは、店舗システム１０の業務処理を行うアプリケーションプログラム（AP）の一部である。これは、クライアントPC１ｎ側のAPであるクライアントAP１２と共同して業務処理を実行する。
【００２８】
２）コネクション部品ＡＡ
本部品は、DBサーバ３ｐへの接続方法をサーバAP２２へ提供する。この部品は、ステータス取得部品ＡＢへ振分キーを渡して、振分キーに基づいて選択されたDBサーバ３ｐとの接続を確立する。
【００２９】
３）ステータス取得部品ＡＢ
本部品は、振分キーに基づく接続先優先順位を決定し、接続するDBサーバ３ｐの識別子（DB_ID２６ｐ）をAP接続先情報保持部品ＡＣから取得し、コネクション部品ＡＡに返却する。
【００３０】
４）AP接続先情報保持部品ＡＣ
本部品は、AP接続先リスト２４に格納されている各DBサーバ３ｐの情報を管理する。
【００３１】
５）ポーリング部品ＡＥ
本部品は、AP接続先リスト２４に登録されているDBサーバ３ｐを対象にポーリングを行う。このポーリングはDBサーバ３ｐと通信をしてその状態情報（第２情報）を受信や通信時間監視により取得する。ここでDBサーバ３ｐから取得される状態情報は、DBサーバ３ｐから受信して得られる情報と、DBサーバ３ｐへの通信がタイムオーバーすることで間接的に得られる情報の両者を含む。AP接続先リスト２４のDBステータス２８ｐは、ここで取得した状態情報に基づいて設定される。
【００３２】
ポーリングで行われる通信はノンブロッキングモードで行う。ポーリングの通信が、DBMS３２に対する通信を遅延させないためである。さらに、DBMS３２との通信や他のAPサーバ２ｍによるポーリングに於いてストールが発生した場合でも、本部品が不要な待ち合わせを行わない為でもある。
【００３３】
６）APステータス返却部品ＡＦ
本部品は、クライアントPC１ｎのポーリングを受けて、AP接続先情報保持部品ＡＣ経由でAP接続先リスト２４よりDBステータス２８ｐを取得して、クライアントPC１ｎに送信する。
【００３４】
７）AP接続先リスト２４
これは、APサーバ２ｍごとに負荷分散と障害時切替先平滑化の為に設けられた、当該APサーバ２ｍから接続可能なDBサーバ３ｐの一覧表である。本データは、APサーバ２ｍの記憶域に格納されている。APサーバ２ｍは、業務処理の通信開始時に、このAP接続先リスト２４に基づいて接続するDBサーバ３ｐを選択して接続する。図４によれば、AP接続先リスト２４は、接続先の候補となるDBサーバ３ｐの識別子DB_ID２６ｐ、当該DBサーバ３ｐのDB通信アドレス２７ｐおよび当該DBサーバ３ｐの運転状態を示すDBステータス２８ｐを包含する。ここで、DBステータス２８ｐは、正常状態（Active）、高負荷状態（Busy）もしくは障害状態（Dead）のいずれかの値をとる。DBステータス２８ｐは、第２サーバの状態情報とも呼ばれる。
【００３５】
なお、コネクション部品ＡＡ、ステータス取得部品ＡＢ、AP接続先情報保持部品ＡＣ、ポーリング部品ＡＥおよび、APステータス返却部品ＡＦは、APサーバミドルウェア２３を構成する。APサーバミドルウェア２３は、上記各部品の機能を包含していれば良く、機能分割は上記部品通りの分割に限られない。なお、APサーバミドルウェア２３はサーバプログラムとも呼ばれる。
【００３６】
図２によれば、DBサーバ３ｐの構成は以下の通りである。
【００３７】
１）DBMS３２
これは、サーバAP２２の要求を受けてデータベースの参照更新などの管理を行う。
【００３８】
２）DBステータス監視部品ＤＡ
本部品はDBMS３２の状態を監視し、動作不能（Dead）、過負荷によるレスポンスタイム遅延（Busy）の発生や障害からの復旧（Alive）時にその状態をステータス管理部品ＤＤに通知する。監視は所定のSQL（Structured Query Language）文を発行してその戻り値およびレスポンスタイムを確認することで行う。本実行例は、『SELECT 1 FROM DUAL』文を使用している。
【００３９】
３）ステータス管理部品ＤＤ
本部品は、DBステータス監視部品ＤＡが通知してきたDBMS３２の状態情報（データベースの状態情報）を保持・管理する。
【００４０】
４）通信待ち受け部品ＤＣ
本部品は、APサーバ２ｍからの通信をノンブロッキングモードで受け付ける。本部品は、APサーバ２ｍから通信があった際にステータス管理部品ＤＤからデータベースの状態情報を取得しAPサーバ２ｍへ返却する。
【００４１】
なお、DBステータス監視部品ＤＡ、ステータス管理部品ＤＤおよび、通信待ち受け部品ＤＣは、DBサーバミドルウェア３３の一部を構成する。DBサーバミドルウェア３３は、上記各部品の機能を包含していれば良く、機能分割は上記部品通りの分割に限られない。なお、DBサーバミドルウェア３３はいわゆるＯＳの一部として実装されてもよい。
【００４２】
次に、本実施例の動作について図面を参照して説明する。
ここでは、当初はすべてのAPサーバ２ｍおよびDBサーバ３ｐは正常で、CL接続リスト１４内のAPステータス１８ｍおよびAP接続リスト２４内のDBステータス２８ｐはAliveであるとする。下記文中の (3-1) のような表記は、「図３に示したステップ3-1」を示す。
【００４３】
図２、図５および図６は、クライアントPC1ｎに於けるAPサーバ２ｍの振分・切り替え機能を示す。
【００４４】
１．正常時の処理
クライアントAP１２は、APサーバ２ｍとの通信開始に当たり、接続先判定部品ＣＡを呼び出す(5-1)。接続先判定部品ＣＡはCL接続先情報保持部品ＣＢを呼び出す(5-1)。CL接続先情報保持部品ＣＢは、CL接続先リスト１４に格納されているAPサーバ２ｍのAP通信アドレス１７ｍからひとつを所定の優先順位に従って選択して取得する(5-2)。
【００４５】
取得が成功する（5-3で取得可となる）のは当該APサーバ２ｍのAPステータス１８ｍがAliveまたはBusyとなっている場合である。AliveのAPサーバ２ｍがある時には、BusyのAPサーバ２ｍのAP通信アドレス１７ｍは選択されない。通信部品ＣＥが、取得されたAP通信アドレス１７ｍで指定されるAPサーバ２ｍと通信する(5-4)。
【００４６】
接続先切り替え部品ＣＣはこの通信結果を受け取って通信が正常である(5-6,5-8がともに正常となる)ことを確認する。その後、クライアントAP１２は当該APサーバ２ｍと通信接続され、当該APサーバ２ｍ上のサーバAP２２と連携して業務処理を実行する(5-10)。業務処理でエラーが発生しなければ（5-12で正常となる）クライアントAP１２は処理を終了する。
【００４７】
なお、APサーバ２ｍへは正常に通信できても、APサーバ２ｍがDBサーバ３ｐとの通信に失敗することがある。これは、DBサーバ３ｐがすべて障害の場合に発生する。この場合、クライアントAP１２はサーバAP２２からその旨の通知を受けることになる(5-12でエラーとなる)。この通知を受けてCL接続先情報保持部品ＣＢは、CL接続先リスト１４のすべてのAPステータス１８ｍをDeadに更新する(5-13)。そして、クライアントAP１２は接続先生死検知部品ＣＤを起動してポーリングを行い(5-13)、障害の復旧を待ち合わせることになる。
【００４８】
２．現在の接続先APサーバ２ｍが過負荷な場合の処理
接続先切り替え部品ＣＣが、通信部品ＣＥの通信(5-4)でレスポンスタイムが所定の許容時間１を超えた（5-6でタイムオーバーとなる）ことを検出する。これを受けて、CL接続先情報保持部品ＣＢは、CL接続先リスト１４内のAPステータス１８ｍをBusyに更新する(5-7)。
【００４９】
その後、クライアントAP１２は通信が終了するのを待ち合わせて、正常終了(5-8で正常)時には、そのまま業務処理を実行する(5-10)。この正常終了時には、クライアントAP１２は接続先生死検知部品ＣＤを起動してポーリングを行い、その後、再度接続先判定部品ＣＡを起動して、別のAPサーバ２ｍのAP通信アドレス１７ｍを取得する(5-2)ようにしてもよい。
【００５０】
３．現在の接続先APサーバ２ｍが障害の場合の処理
接続先切り替え部品ＣＣが、通信部品ＣＥの通信(5-4)で接続エラーが発生した（5-8でエラーとなる）ことを検出する。この接続エラーは、通信が所定の許容時間２（許容時間１より長い）を超えたことで検出される。これを受けて、CL接続先情報保持部品ＣＢは、CL接続先リスト１４内のAPステータス１８ｍをDeadに更新する(5-9)。クライアントAP１２は接続先生死検知部品ＣＤを起動してポーリングを開始し(5-9)、その後、再度接続先判定部品ＣＡを起動して、所定の優先順位の下位にある別のAPサーバ２ｍのAP通信アドレス１７ｍを取得する(5-2)。
【００５１】
４．すべてのAPサーバ２ｍが障害の場合の処理
CL接続先リスト１４に登録されているAPサーバ２ｍのAPステータス１８ｍがすべてDeadであるとき、接続先判定部品ＣＡはAP通信アドレス１７ｍを取得(5-2)に失敗する。この（5-3で取得不可となる）場合、クライアントAP１２は通信部品ＣＥを用いた通信はおこなわず、単独にローカル処理できる範囲の業務処理を行う（5-6、5-11）。このとき、クライアントAP１２は、必要に応じてローカルDB１５を使用する。
【００５２】
５．APサーバ２ｍの復旧時の処理
APサーバ２ｍの復旧は図６に示すクライアントPC１ｎのポーリングにより監視する。このポーリングは、接続先生死検知部品ＣＤがCL接続先リスト１４に登録されているすべてのAPサーバ２ｍを対象に行う。
【００５３】
同部品は、ポーリングを開始するとCL接続先リスト１４からAP通信アドレス１７ｍを取得し、通信部品ＣＥを用いてAPサーバ２ｍ上のAPステータス返却部品ＡＦと通信する(6-2)。この通信が正常(6-3で正常)な場合、接続先生死検知部品ＣＤはAPステータス返却部品ＡＦからAP接続先リスト２４内のすべてのDBステータス２８ｐを受信する。
【００５４】
接続先生死検知部品ＣＤはDBステータス２８ｐのチェックを行う(6-4)。同部品は、正常(AliveまたはBusy)なDBサーバ３ｐが存在する(6-5で有となる)と、CL接続先情報保持部品ＣＢを経由して、CL接続先リスト１４のAPサーバ２ｍのAPステータス１８ｍを更新する(6-7)。
【００５５】
この処理は次の通りである。接続先生死検知部品ＣＤは、あるAPサーバ２ｍからAliveを示すDBステータス２８ｐを受信すれば当該APサーバ２ｍのAPステータス１８ｍはAliveとする。AliveなDBステータス２８ｐは受信しないがBusyを示すものを受信した場合に同部品は、当該APサーバ２ｍのAPステータス１８ｍをBusyに設定する。なお、あるAPサーバ２ｍから受信したすべてのDBステータス２８ｐがDeadであれば、当該APサーバ２ｍのAPステータス１８ｍはDeadが設定される。
【００５６】
ポーリングしたすべてのAPサーバ２ｍについて、通信異常（6-3で異常）または全DBステータス２８ｐが異常（Dead）である(6-5で無となる)場合は、一定時間後に再度ポーリングを行う(6-6)。
【００５７】
なお、以上の行程（処理）は、接続行程（５−１、５−２、５−３、５−４）、取得行程（５−６、５−８、６−２、６−３、６−４、６−５）および記憶行程（５−７、５−９、５−１３、６−７）に大別される。これらの行程が、クライアントミドルウェア１３により実行される。図９は、この様子を示す。
【００５８】
ポーリングは、システムの初期設定時およびその後の一定時間ごとにも実施される。
【００５９】
図２、図７および図８は、APサーバ２ｍに於けるDBサーバ３ｐの振替・切り替え機能を示す。
【００６０】
１．正常動作
サーバAP２２は、DBサーバ３ｐとの通信開始に当たり、コネクション部品ＡＡを呼び出す(7-1)。コネクション部品ＡＡは、ステータス取得部品ＡＢを呼び出して特定の振分キー(たとえば店舗コード)に対応して、接続すべき優先順にDBサーバ３ｐの識別子（DB_ID２６ｐ）のリストを取得する(7-2)。コネクション部品ＡＡは、当該リストから優先度の最も高いDBサーバ３ｐのDB_ID２６ｐを選択する。そして、同部品は、当該DBサーバ３ｐのDB通信アドレス２７ｐをAP接続先保持部品ＡＣ経由でAP接続先リスト２４から取得する(7-3)。取得が成功する（7-4で取得可となる）のはDBステータス２８ｐがAliveまたはBusyとなっているDBサーバ３ｐがある場合である。AliveのDBサーバ３ｐがある時には、BusyのDBサーバ３ｐのDB通信アドレス２７ｐは選択されない。
【００６１】
コネクション部品ＡＡは選択されたDBサーバ３ｐと通信を行う。通信が正常(7-6で正常)であれば、サーバAP２２は当該DBサーバ３ｐと通信接続され、当該DBサーバ３ｐ上のデータベースにアクセスを行って業務処理を実行する(7-8)。業務処理でエラーが発生しなければ（7-9で正常となる）サーバAP２２は処理を終了する。
【００６２】
コネクション部品ＡＡは選択されたDBサーバ３ｐとの通信が異常(7-6でエラー)であれば、前述のリストにおいて順位の低いDBサーバ３ｐのDB通信アドレス２７ｐを取得して接続しようとする(7-7)。
【００６３】
２．現在の接続先DBサーバ３ｐが障害時の処理
サーバAP２２がデータベース（DBサーバ３ｐ）にアクセス中に障害となった(7-9でエラー)ときはサーバAP２２にアクセスエラーが返却される(7-10)。この場合は、データベース内のデータが不完全な状態になっている可能性もあるため、このエラーは接続エラーとは別の形でサーバAP２２に報告される。このエラーはサーバAP２２からクライアントPC１ｎにも通知される(5-12)。
【００６４】
また、DBサーバ３ｐでは、DBステータス監視部品ＤＡが障害（Dead状態）やレスポンス遅延（Busy状態）等の異常を検出して、ステータス管理部品ＤＤが保持するデータベースの状態情報を更新する。この情報は、図６のポーリングを通じてAP接続先リスト２４のDBステータス２８ｐに反映される。
【００６５】
３．すべてのDBサーバ３ｐが障害の場合の処理
ステータス取得部品ＡＢは、すべてのDBサーバ３ｐが障害であることを検出した(7-4で取得不可となる)場合は、サーバAP２２にDB接続エラーを通知する(7-5)。このエラーはサーバAP２２からクライアントPC１ｎにも通知される(5-12)。クライアントPC１ｎでは、CL接続リストのAPステータス１８ｍをDeadへと更新する(5-13)。
【００６６】
４．DBサーバ３ｐ復旧時の処理
DBステータス監視部品ＤＡは、DBMS３２の状態を監視してその状態が正常であると判断すると、ステータス管理部品ＤＤでその状態を保持する。このデータベースの状態情報は図６のAPサーバ２ｍのポーリングにより、AP接続先リスト２４のDBステータス２８ｐに反映される。
【００６７】
APサーバ２ｍにおいては、定期的にAP接続先リスト２４に基づいてすべてのDBサーバ３ｐの状態を定期的にポーリングしている。このポーリングにおいては、先ずポーリング部品ＡＥがDBサーバ３ｐ上で待ち受けている通信待ち受け部品ＤＣと通信を行う(8-1)。
【００６８】
この通信が正常(8-2で正常)な場合、ポーリング部品ＡＥは、データベースの状態情報を受信して、その状態情報をチェックする(8-3)。データベースの状態情報は、DBサーバ３ｐにおいて、DBステータス監視部品ＤＡがDBMS３２の状態を監視することで生成している。データベースの状態情報は、ステータス管理部品ＤＤで保持され、通信待ち受け部品ＤＣにより、ポーリング部品ＡＥに通知される。
【００６９】
ポーリング部品ＡＥは、データベースの状態情報の内容に基づきAP接続先情報保持部品ＡＣを経由してAP接続先リスト２４のDBステータス２８ｐを更新する。ポーリング部品ＡＥは、データベースの状態情報が正常(8-4で正常)ならばAliveを設定し(8-5)、異常(8-4で異常)ならば、BusyまたはDeadを設定する(8-6)。なお、同部品は、DBサーバ３ｐとの通信でエラーが発生した(8-2でエラーとなる)場合はDeadを設定する(8-6)。
【００７０】
本実施例の効果は、負荷分散のためのハードウェアのコストを削減できることにある。さらに、第２の効果は、負荷分散に関わるシングルポイント・オブ・フェイリアを除去できることにある。
【００７１】
その理由は、クライアントミドルウェア１３がCL接続先リスト１４を参照してAPサーバ２ｍの振替・切り替え機能を実現できるために、負荷分散装置を置く必要がないためである。
【００７２】
第３の効果は、DBサーバ３ｐ障害時の切り替えに遅延が発生しないことである。その理由は、APサーバ２ｍが行うDBサーバ３ｐのポーリングに於いて、APサーバミドルウェア２３およびDBサーバミドルウェア３３においてノンブロッキング通信によりにて情報をやり取りするからである。
【００７３】
第４の効果は、クライアントAP１２が、DBサーバ３ｐの全障害が発生したこと、および復旧したことを、DBサーバ３ｐと通信することなく検出して対応できることである。その理由は、DBサーバ３ｐの状態情報がAPサーバ２ｍを経由して、クライアントPC１ｎにまで到達する方式をとっているからである。
【００７４】
クライアントミドルウェア１３、APサーバミドルウェア２３およびDBサーバミドルウェア３３は、いずれも専用ハードウェアとして実現してもよい。または、プログラムがメモリに格納され、プロセッサーがプログラムを実行することにより、これらの機能を実現してもよい。
【００７５】
本発明の第２の実施例は以下の通りである。実施例１の店舗システム１０は、すべてのAPサーバ２ｍが障害の場合に限り、クライアントAP１２が単独でローカルな処理を行う（図５における5-3、5-5、5-11）。第２の実施例は、基本的にクライアントAP１２が単独でローカルな処理を行い、ローカルな処理で問題が発生したときにAPサーバ２ｍに接続するようにする。これにより、ローカル処理が主体のアプリケーションに本発明を適用できるようになる。
【００７６】
本発明の第３の実施例は以下の通りである。実施例１の店舗システム１０は、接続先APサーバ２ｍが障害の場合、ポーリングを起動している（図５における5-9）。第３の実施例では、これを全APサーバ２ｍが障害の場合にだけポーリングを起動する。APサーバ２ｍの復旧検知遅れが許容される場合に、ポーリングの発生頻度を下げることができる。
【００７７】
本発明の第４の実施例は以下の通りである。実施例１の店舗システム１０は、接続先APサーバ２ｍが障害の場合ポーリングを起動する（図５における5-9）。その後、実施例１の店舗システム１０は、再度接続先判定部品ＣＡを起動して、所定の優先順位の下位にある別のAPサーバ２ｍのAP通信アドレス１７ｍを取得(5-2)し、当該別のAPサーバ２ｍと接続する(5-4)ことになる。第４の実施例の店舗システム１０は、その接続後、ポーリングで当該別のAPサーバ２ｍより所定の優先順位で上位のAPサーバ２ｍが正常であることが検出されたときに、当該上位のAPサーバ２ｍに接続し直す。これは、接続先生死検知部品ＣＤが自動的に行ってもよい。または同部品はクライアントAP１２に通知するだけとし、クライアントAP１２が適切なタイミングで接続し直してもよい。これによりAPサーバ２ｍに処理能力の差異がある場合に、適切な負荷分散をはかることができる。
【００７８】
本発明の第５の実施例は以下の通りである。実施例１の店舗システム１０は、すべてのAPサーバ２ｍが障害の場合に、クライアントAP１２が単独でローカルな処理を行う（図５における5-3、5-5、5-11）。第５の実施例の店舗システム１０は、その後のポーリングで正常なAPサーバ２ｍがあることが検出されたときに、ローカル処理をやめて当該APサーバ２ｍに接続する。これは、接続先生死検知部品ＣＤが自動的に行ってもよい。または同部品はクライアントAP１２に通知するだけとし、クライアントAP１２が適切なタイミングで接続してもよい。これにより、APサーバ２ｍの復旧に迅速に対応することができる。
【００７９】
本発明の第６の実施例は以下の通りである。上述の実施例では、APサーバ２ｍとDBサーバ３ｐは別のサーバである。しかし、第６の実施例では、APサーバ２ｍとDBサーバ３ｐを併せて一台のサーバコンピュータとして実装してもよい。本実施例では、同一のサーバ内のDBMS３２の障害や性能劣化をDBサーバ３ｐの障害や性能劣化として監視する。本実施例によれば、安価に本発明を利用したシステムを実現できる。
【図面の簡単な説明】
【００８０】
【図１】店舗システムの全体構成を示す図である。
【図２】クライアントおよびサーバの内部構成を示す図である。
【図３】CL接続先リストの構成を示す図である。
【図４】AP接続先リストの構成を示す図である。
【図５】クライアントAPの接続処理のフローチャートである。
【図６】クライアントPCが行うポーリング処理のフローチャートである。
【図７】サーバAPの接続処理のフローチャートである。
【図８】サーバAPが行うポーリング処理のフローチャートである。
【図９】クライアントPCの構成を示す図である。
【符号の説明】
【００８１】
１０    店舗システム
１ｎ    クライアントPC
１２    クライアントAP
１３    クライアントミドルウェア
１４    CL接続先リスト
１６ｍ    AP_ID
１７ｍ    AP通信アドレス
１８ｍ    APステータス
１５    ローカルDB
ＣＡ    接続先判定部品
ＣＢ    CL接続先情報保持部品
ＣＣ    接続先切り替え部品
ＣＤ    接続先生死検知部品
ＣＥ    通信部品
２ｍ    APサーバ
２２    サーバAP
２３    APサーバミドルウェア
２４    AP接続先リスト
２６ｐ    DB_ID
２７ｐ    DB通信アドレス
２８ｐ    DBステータス
ＡＡ    コネクション部品
ＡＢ    ステータス取得部品
ＡＣ    AP接続先情報保持部品
ＡＥ    ポーリング部品
ＡＦ    APステータス返却部品
３ｐ    DBサーバ
３２    DBMS
３３    DBサーバミドルウェア
ＤＡ    DBステータス監視部品
ＤＤ    ステータス管理部品
ＤＣ    通信待ち受け部品
【図１】
0004811364.tif 000002
【図２】
0004811364.tif 000003
【図３】
0004811364.tif 000004
【図４】
0004811364.tif 000005
【図５】
0004811364.tif 000006
【図６】
0004811364.tif 000007
【図７】
0004811364.tif 000008
【図８】
0004811364.tif 000009
【図９】
0004811364.tif 000010