(57)【要約】【課題】上位サービスの開発者に負担をかけることなく、アプリケーションサーバのリソース不足により発生する障害を防止することができるシステムや方法を提供する【解決手段】  システムのリソースを監視するリソース監視手段と、上位サービスのプログラムに対する割り込み位置をジョイントポイントとして設定する設定ファイルと、割り込み処理を実行するインターセプタ手段と、設定ファイルを参照することにより、実行しようとする上位サービスのプログラム中の実行対象処理がジョイントポイントであるか否かを判定し、当該判定結果が是である場合は、インターセプタ手段を呼び出す呼出手段と、を備え、インターセプタ手段は、リソース監視手段に当該システムのリソースの状態を問い合わせ、この問い合せ結果に基づいて実行対象処理を制御する。【選択図】図１
2011018295.tif 000002
【特許請求の範囲】
【請求項１】
上位サービスの提供により発生する障害を防止する障害防止システムであって、
前記システムのリソースを監視するリソース監視手段と、
前記上位サービスのプログラムに対する割り込み位置をジョイントポイントとして設定する設定ファイルと、
割り込み処理を実行するインターセプタ手段と、
前記設定ファイルを参照することにより、前記上位サービスのプログラム中の実行対象処理がジョイントポイントであるか否かを判定し、当該判定結果が是である場合は、前記インターセプタ手段を呼び出す呼出手段と、を備え、
前記インターセプタ手段は、
前記リソース監視手段に当該システムのリソースの状態を問い合わせ、この問い合せ結果に基づいて前記実行対象処理を制御することを特徴とする障害防止システム。
【請求項２】
前記上位サービスによる前記システムのリソースの利用を制限する条件を定義するリソース制限条件ファイルをさらに備え、
前記インターセプタ手段は、
前記リソース制限条件ファイルを参照し、この参照結果と前記リソース監視手段から得られる問合せ結果とに基づいて、前記実行対象処理を制御することを特徴とする請求項１に記載の障害防止システム。
【請求項３】
前記設定ファイルは、
前記上位サービスのプログラム中のログイン処理に対してジョイントポイントを設定していることを特徴とする請求項１または２に記載の障害防止システム。
【請求項４】
前記インターセプタ手段は、
前記リソース監視手段からの問合せ結果が既定条件を満たす場合は、ログイン要求を受け付けないように、前記ログイン処理を制御することを特徴とする請求項３に記載の障害防止システム。
【請求項５】
上位サービスを提供するためのプログラムが実装されたシステムにおいて用いられる障害防止方法であって、
前記システムは、前記システムのリソースを監視するリソース監視手段と、前記上位サービスのプログラムに対する割り込み位置をジョイントポイントとして設定する設定ファイルと、割り込み処理を実行するためのインターセプタ手段と、前記設定ファイルに基づいて前記インターセプタ手段を呼び出す呼出手段と、を備えており、
前記呼出手段が、
前記設定ファイルを参照することにより、前記上位サービスのプログラム中の実行対象処理がジョイントポイントであるか否かを判定するステップと、
前記判定結果が是である場合は、前記インターセプタ手段を呼び出すステップと、を備え、
前記呼び出されたインターセプタ手段が、
前記リソース監視手段に当該システムのリソースの状態を問い合わせるステップと、
前記問い合わせ結果に基づいて前記実行対象処理を制御するステップと、
を備えることを特徴とする障害防止方法。
【請求項６】
前記上位サービスによる前記システムのリソースの利用を制限する条件を定義するリソース制限条件ファイルをさらに備え、
前記呼び出されたインターセプタ手段は、
前記制御するステップにおいて、前記リソース制限条件ファイルを参照し、この参照結果と前記問い合わせ結果とに基づいて、前記実行対象処理を制御することを特徴とする請求項５に記載の障害防止方法。
【請求項７】
前記設定ファイルは、
前記上位サービスのプログラム中のログイン処理に対してジョイントポイントを設定していることを特徴とする請求項５または６に記載の障害防止方法。
【請求項８】
前記呼び出されたインターセプタ手段は、
前記制御するステップにおいて、前記受け付けた問合せ結果が既定条件を満たす場合は、ログイン要求を受け付けないように、前記ログイン処理を制御することを特徴とする請求項７に記載の障害防止方法。
【請求項９】
請求項５に記載の障害防止方法をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、システムの障害を防止する技術に関し、特に、システムのリソース不足により発生するシステム障害を防止する技術に関する。
【背景技術】
【０００２】
アプリケーションサーバ上で実行されるログイン認証を行う上位サービスは、ユーザのログイン状態をサービス側で管理するため、セッション中のユーザの状態をメモリに格納している。従って、ログインしたままログアウトしないユーザがいた場合、アプリケーションサーバ上に確保されるセッションを保持するためのメモリがログイン者数に応じて増加する。最終的にアプリケーションサーバに割り当てられた最大メモリ容量に達した場合は、メモリ不足エラーが発生し、アプリケーションサーバ全体の動作が不正となる。その結果、未ログインかログイン済みかに関わらず、全ての利用者がサービスを利用できなくなるという問題がある。また、同じアプリケーションサーバのドメイン上で稼働している他の全てのサービスも影響を受けるという問題もある。
【０００３】
このようなメモリ不足を防ぐため、アプリケーションサーバ側でタイムアウトの設定を行い、一定時間ユーザの操作がなければ、アプリケーションサーバ側でセッションをタイムアウトさせるという機能が提供されている。しかし、サービスを提供する側が、ユーザの利便性を考慮してタイムアウトの機能を使用しないか、あるいは１２時間などの長時間に設定しているような場合には、実質的に機能することができず、メモリ不足が発生することがある。また、毎週月曜日の朝や長期休暇明けの朝など、短時間の間にユーザのログインが集中した場合にも、メモリ不足が発生することがある。
【０００４】
アプリケーションサーバの負荷を軽減する方法として、ネットワーク的にアプリケーションサーバの前段に負荷分散装置を設置して、複数台のアプリケーションサーバに処理を分散させるという方法が提案されている。しかし、例えばＩＰアドレス単位で処理を分散するような負荷分散装置の場合、プロキシサーバ経由のアクセスは同じ１台のアプリケーションサーバへ振り分けられるため、負荷分散が行われない。
【０００５】
また、負荷分散装置の機能として、定期的にアプリケーションサーバの状態監視を行い、障害発生時には当該アプリケーションサーバへの振り分けを止める機能が提供されている。しかし、振り分けを止めると、それまでにログインして問題なくサービスを利用できていたユーザが操作を継続できなくなり、新たに別のアプリケーションサーバのサービスへ再ログインする必要があるという問題がある。なお、運用監視装置により、アプリケーションサーバがメモリ不足状態となった場合に、自動的にサービスの再起動を行うことにより障害を復旧する方法もある。しかし、上記と同様に、それまでにログインしていたユーザのセッションは無効になるため、ユーザは再ログインが必要になる。
【０００６】
ここで、ログインに関連する処理の一例が特許文献１（特開平０５−２５０１８１号公報）に記載されている。特許文献１に記載のログイン処理方法は、複数利用者が一つのシステムを共有するマルチユーザシステムのログイン処理方法であり、予め利用者コード毎にシステム資源の利用制限情報を定め、ログイン操作時にこの情報を当該利用者の作業環境に設定するものである。
【０００７】
また、システムの負荷を軽減する方法の一例が特許文献２（特許第２９１５０６１号公報）に記載されている。特許文献２に記載の計算機システムの負荷制御方法は、計算機システムが、中央処理装置の各リソース利用状況の情報をリアルタイムで取得して記憶し、予め任意に設定した条件のもとで規定した中央処理装置のリソースの利用状況の許容限度と、当該リアルタイムで取得した各リソースの利用状況の情報とを比較するというものである。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開平０５−２５０１８１号公報
【特許文献２】特許第２９１５０６１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、例えば特許文献１や特許文献２に記載されているような方法を、アプリケーションサーバが提供する上位サービスにそのまま実装しようとすると、以下に述べるような問題がある。
【００１０】
上位サービスの開発者は、アプリケーションサーバやオペレーティングシステムの種類の違いを意識してプログラムを開発する必要があるため、開発作業の負担となる。また、上位サービスの開発者は、アプリケーションサーバの残メモリ容量やシステム稼働状況を確認するといった上位サービスで提供される機能範囲外のプログラムをサービス毎に開発しなければならないため、上位サービスで提供される機能のプログラム開発に集中することができなくなる。また、既に、アプリケーションサーバに上位サービスが実装されているような場合には、上位サービスの実装内容の変更という新たな作業が発生する。また、複数の上位サービスを１台のサーバ上で同時にホスティングできるアプリケーションサーバの場合、全てのサービス開発者が同様の実装を行わなければ、結果としてアプリケーションサーバ全体の障害を防ぐことが難しい。
【００１１】
例えば、ホスティングサービス提供事業者がアプリケーションサーバを実行環境として上位サービスの提供者に貸し出すＳａａＳ（Ｓｏｆｔｗａｒｅ  ａｓ  ａ  Ｓｅｒｖｉｃｅ）と呼ばれるサービスホスティング形態がある。かかる形態において、ホスティングサービス提供事業者の間には、ホスティングサービスの利用者である上位サービスの開発者に対して、アプリケーションサーバの種類、ＯＳの種類、メモリ容量などホスティングサービスの物理的な実行環境を意識させたくないというニーズがある。
【００１２】
そこで、本発明の目的は、上位サービスの開発者に負担をかけることなく、アプリケーションサーバのリソース不足により発生する障害を防止することができるシステムや方法等を提供することにある。
【課題を解決するための手段】
【００１３】
本発明の第１の障害防止システムは、上位サービスの提供により発生する障害を防止する障害防止システムであって、前記システムのリソースを監視するリソース監視手段と、前記上位サービスのプログラムに対する割り込み位置をジョイントポイントとして設定する設定ファイルと、割り込み処理を実行するインターセプタ手段と、前記設定ファイルを参照することにより、前記上位サービスのプログラム中の実行対象処理がジョイントポイントであるか否かを判定し、当該判定結果が是である場合は、前記インターセプタ手段を呼び出す呼出手段と、を備え、前記インターセプタ手段は、前記リソース監視手段に当該システムのリソースの状態を問い合わせ、この問い合せ結果に基づいて前記実行対象処理を制御することを特徴とする。
【００１４】
また、本発明の第１のシステム障害防止方法は、上位サービスを提供するためのプログラムが実装されたシステムにおいて用いられる障害防止方法であって、前記システムは、前記システムのリソースを監視するリソース監視手段と、前記上位サービスのプログラムに対する割り込み位置をジョイントポイントとして設定する設定ファイルと、割り込み処理を実行するためのインターセプタ手段と、前記設定ファイルに基づいて前記インターセプタ手段を呼び出す呼出手段と、を備えており、前記呼出手段が、前記設定ファイルを参照することにより、前記上位サービスのプログラム中の実行対象処理がジョイントポイントであるか否かを判定するステップと、前記判定結果が是である場合は、前記インターセプタ手段を呼び出すステップと、を備え、前記呼び出されたインターセプタ手段が、前記リソース監視手段に当該システムのリソースの状態を問い合わせるステップと、前記問い合わせ結果に基づいて前記実行対象処理を制御するステップと、を備えることを特徴とする。
【００１５】
また、本発明は、上記の障害防止方法をコンピュータに実行させるためのプログラムである。本発明のプログラムは、本発明の第１のシステム障害防止方法の各処理ステップをコンピュータに実行させることを特徴とする。本発明のプログラムは、ＣＤ−ＲＯＭやＤＶＤ−ＲＯＭ等の光学ディスク、磁気ディスク、半導体メモリなどの各種の記録媒体を通じて、又は通信ネットワークなどを介してダウンロードすることにより、コンピュータにインストール又はロードすることができる。
【発明の効果】
【００１６】
本発明によれば、上位サービスの実装内容を変更することなく、アプリケーションサーバのリソース不足により発生する障害を防止することができるシステムや方法を提供することができるという効果を奏する。上位サービスの実装内容を変更する必要がないので、上位サービスの開発者に負担をかけることもない。
【図面の簡単な説明】
【００１７】
【図１】システムの概略構成を示すブロック図である。
【図２】障害防止処理の流れを示すフローチャートである。
【図３】上位サービスとインターセプタのプログラムの実装例を示す図である。
【図４】ジョイントポイント設定ファイルの一例を示す図である。
【図５】ログイン制御条件定義ファイルの一例を示す図である。
【図６】エラー画面の一例を示す図である。
【図７】障害防止処理に係る各モジュールの関連を示す図である。
【発明を実施するための形態】
【００１８】
以下、本発明の実施の形態について図面を参照しつつ詳細に説明する。なお、図１〜図７において同一の要素には同一の符号を付し、重複する説明を省略する。
【００１９】
本発明は、アスペクト指向技術を用いて構築される。アスペクト指向技術は、オブジェクト指向技術の問題点を補うために考え出された手法である。アスペクト指向技術では、ソフトウェアの特定の振舞いを「横断的関心事」とし、この「横断的関心事」をアスペクトとして分離して記述する。アスペクト指向言語の例としては、ＡｓｐｅｃｔＪなどが知られている。
【００２０】
本実施形態では、本発明に係るアスペクト指向技術を用いた障害防止システム、障害防止方法又は障害防止プログラム（以下、「障害防止システム等」という）を、ホスティングサービス提供事業者がアプリケーションサーバを実行環境として上位サービスの提供者に貸し出すＳａａＳ（Ｓｏｆｔｗａｒｅ  ａｓ  ａ  Ｓｅｒｖｉｃｅ）と呼ばれるサービスホスティング形態に適用する場合について説明する。ただし、本発明が適用される形態はこれに限られない。
【００２１】
また、本実施形態では、本発明に係るアスペクト指向技術を用いた障害防止システム等を、ログイン処理に対して適用する場合について説明する。ただし、本発明が適用される処理はシステムリソースを多く消費する他の処理に対しても適用可能であり、ログイン処理に限られない。
【００２２】
（１）システムの概略構成
【００２３】
図１は、本実施形態に係るシステムの概略構成を示すブロック図である。本システムは、サーバ１００と、クライアント端末２００と、管理端末３００とを備え、これらがネットワークＮ（インターネット、専用線、パケット通信網、電話回線、ＬＡＮ、企業内ネットワーク、その他の通信回線、それらの組み合わせ等のいずれであってもよく、有線であるか無線であるかを問わない。）を介して相互に接続されることにより構成される。
【００２４】
なお、図１では、クライアント端末２００と管理端末３００について、それぞれ１台ずつ記載しているが、設計に応じて、それぞれが１台以上となるように構成してもよい。また、サーバ１００は、単一のコンピュータより構成されるものであっても、ネットワーク上に分散した複数のコンピュータより構成されるものであってもよい。
【００２５】
サーバ１００は、ソフトウェアであるアプリケーションサーバが動作する装置全体を表している。サーバ１００は、ＣＰＵ１１１、メモリ１１２、ネットワーク１１３、ディスク１１４を有するハードウェア１１０を備えている。なお、ＣＰＵ１１１はサーバの動作全体を主に制御する制御手段、メモリ１１２及びディスク１１４は各種データを記憶する記憶手段、ネットワーク１１３は他のコンピュータ等と通信あるいは接続するための通信手段（接続手段）とも呼ばれる。なお、サーバ１００のハードウェア構成はこれに限られず、設計に応じてハードウェアを追加してもよい。
【００２６】
サーバ１００は、ハードウェア１１０上に、ＯＳ１２０、アプリケーションサーバ１３０、アプリケーションサーバ上で動作する上位サービス群１４０、アスペクト実行エンジン１５０、インターセプタライブラリ１６０、ジョイントポイント設定ファイル１７０、ログイン制御条件定義ファイル１８０、システムリソース監視サービス１９０を備えている。これらのモジュールは、必要に応じてメモリ１１２等に読み込まれＣＰＵ１１１等によって実行されることにより所定の処理や動作を実行する機能実現手段となる。
【００２７】
アプリケーションサーバ１３０は、ミドルウェアの一種で、例えば、所定のビジネスロジックなどのアプリケーションを実装したサーバソフトウェアである。
【００２８】
上位サービス群１４０（上位サービス１、上位サービス２…上位サービスｎ）は、それぞれ異なる個別のサービスプログラム（アプリケーション）の集合である。上位サービス群１４０は、１つのアプリケーションサーバ上に並列に存在する。各上位サービスは、例えば、ユーザによるサービスの利用時にログイン処理を実行し、ユーザ固有のセッションをメモリ１１２上に作成する。
【００２９】
アスペクト実行エンジン１５０は、アスペクト指向言語で記載されたスクリプトを解釈して実行するためのエンジンプログラムである。アスペクト実行エンジン１５０は、後述するジョイントポイント設定ファイル１７０を参照することにより、上位サービスのプログラム中の実行対象処理がジョイントポイントであるか否かを判定し、この判定結果が是である場合（ジョイントポイントであると判定した場合）は、後述するインターセプタライブラリ１６０から該当するインターセプタを呼び出す呼出手段とも呼ばれる。
【００３０】
ジョイントポイント設定ファイル１７０は、上位サービス群１４０の各上位サービス（上位サービス１、上位サービス２…上位サービスｎ）に対応して用意され、上位サービス毎にサービスプログラム中のどのクラスのどの処理に対して割り込み処理を行うかを定義することができる。クラスとは、データとその操作手順であるメソッドをまとめたオブジェクトの雛型を定義したものである。ここで、割り込み処理を実施する対象箇所を「ジョイントポイント」と呼ぶ。また、このジョイントポイントに対して割り込み処理を実施するクラス（処理）を「インターセプタ」と呼ぶ。ジョイントポイント設定ファイル１７０中で、呼び出すインターセプタクラスが指定される。
【００３１】
インターセプタライブラリ１６０は、ジョイントポイントごとに異なるインターセプタを設定することができる。インターセプタライブラリ１６０は、例えば、上位サービス群１４０の各上位サービス（上位サービス１、上位サービス２…上位サービスｎ）に対してそれぞれ割り込み処理を行う複数のインターセプタ（インターセプタ１、インターセプタ２…インターセプタｎ）を複数管理する。インターセプタは、ＣＰＵ１１１によって実行されると、インターセプタ手段（割り込み処理を実行する割込処理実行手段）として機能する。
【００３２】
ログイン制御条件定義ファイル１８０は、上位サービス群１４０の各上位サービス（上位サービス１、上位サービス２…上位サービスｎ）に対応して用意され、上位サービス毎に異なる条件によるログイン制限を定義することができる。すなわち、上位サービス毎に、異なるＳＬＡ（Ｓｅｒｖｉｃｅ  Ｌｅｖｅｌ  Ａｇｒｅｅｍｅｎｔ）を定義することが可能である。ログイン制御条件定義ファイル１８０は、各上位サービスによるリソースの利用を制限する条件を定義したリソース制限条件ファイルとも呼ばれる。
【００３３】
システムリソース監視サービス１９０は、インターセプタライブラリ１６０に高速に最新のシステム（サーバ）の状況を返却することを目的とする。システムリソース監視サービス１９０は、例えば、監視対象とするリソースの特徴に応じて、問い合わせ毎に実際のシステムの状況を即時に取得して、その結果を返却する。また、状況確認処理にコストがかかるリソースの場合は、あらかじめ非同期に３０秒毎や１分毎など定期的に問い合わせを行っておき、定期収集した結果を返却する場合もある。なお、システム状況の取得及び返却の方法は、これらに限られず、設計に応じて他の方法を採用することができる。また、システムリソース監視サービス１９０には、従来技術を適用することができる。システムリソース監視サービス１９０は、リソース監視手段とも呼ばれる。
【００３４】
クライアント端末２００は、図示してはいないが、ＣＰＵ、ＲＯＭやＲＡＭ等のメモリ、各種の情報を格納する外部記憶装置、入力インタフェース、出力インタフェース、通信インタフェース及びこれらを結ぶバスを備える専用又は汎用のコンピュータを適用することができる。上位サービス１４０の利用者は、クライアント端末２００に実装されたクライアントアプリケーション２０１からネットワークＮを通じて上位サービス群１４０中の利用したい特定のサービスにアクセスし、ログイン操作を行う。
【００３５】
管理端末３００は、図示してはいないが、ＣＰＵ、ＲＯＭやＲＡＭ等のメモリ、各種の情報を格納する外部記憶装置、入力インタフェース、出力インタフェース、通信インタフェース及びこれらを結ぶバスを備える専用又は汎用のコンピュータを適用することができる。アプリケーションサーバの管理者は、ログイン制御条件定義ファイル１８０の設定変更や適用作業、ジョイントポイント設定ファイル１７０の設定変更や適用作業、および、インターセプタライブラリ１６０へのインターセプタクラスの登録作業などを、管理端末３００上の管理アプリケーション３０１を用いて行う。なお、負荷分散のために同一構成のサーバ１００を複数台配置するシステム構成をとる場合があるが、管理端末３００から管理対象となる複数台のアプリケーションサーバ１３０に対して一括で設定変更を行えるように構成されている。
【００３６】
（２）障害防止処理
【００３７】
次に、本実施形態に係る障害防止処理の流れについて図２〜図７を用いて詳細に説明する。ここでは、図７のモジュール関連図を参照しながら、図２のフローチャートに従って障害防止処理を説明する。
【００３８】
アプリケーションサーバ１３０が起動されると、アスペクト実行エンジン１５０は、ジョイントポイント設定ファイル１７０を予め参照し、実行する各上位サービス（上位サービス１、上位サービス２…上位サービスｎ）１４０に対するジョイントポイントをメモリ１１２に読み込む（図７中の（１））。
【００３９】
アプリケーションサーバ１３０は、上位サービス１４０のプログラムが実行されている場合、これから実行しようとする実行対象クラス（実行対象処理）がジョイントポイントであるか否かを確認するため、アスペクト実行エンジン１５０を呼び出す。アスペクト実行エンジン１５０は、メモリ１１２に読み込んだジョイントポイント設定ファイル１７０の情報を参照し、実行対象クラスがジョイントポイントであるか否かを判定する（図２のＳ１）。なお、ここでは、実行対象クラスがログイン処理である場合について説明する。
【００４０】
ここで、図４は、ジョイントポイント設定ファイルの一例を示している。ここでは、ジョイントポイントとして、“LoginAction”という実行対象クラスの”login”というメソッドが呼び出されるときには、インターセプタライブラリからLoginIntercepterクラス（インターセプタ）を呼び出す、という定義の例が記載されている。
【００４１】
従って、上位サービス１４０のユーザが、クライアント端末２００からログイン要求を行うと（図７中の（２））、アスペクト実行エンジン１５０が呼び出され、この呼び出されたアスペクト実行エンジン１５０は、ジョイントポイント設定ファイル１７０に定義された内容に従ってジョイントポイントを検出する（図７中の（３）；図２のＳ１）。
【００４２】
アスペクト実行エンジン１５０は、実行対象クラスがジョイントポイントであると判定した場合、ジョイントポイント設定ファイル１７０の設定内容に基づいて、インターセプタライブラリ１６０から該当するインターセプタを取り出し（図７中の（４））、インスタンス化する（図７中の（５）；図２のＳ２）。該当するインターセプタとは、ジョイントポイント設定ファイル１７０のジョイントポイントによって、実行対象クラスと対応付けて定義されているインターセプタを意味する。
【００４３】
図３は、上位サービスとインターセプタのプログラムの実装例を示す図である。符号３１は、上位サービスのプログラムの実装例を示す。符号３２は、インターセプタのプログラムの実装例を示す。符号３１１は、ジョイントポイントを示している。図３では、上位サービスのLoginAction.classのlogin()メソッドが呼び出されたときに、インターセプタライブラリ１６０からLoginIntercepterクラスが取り出されることが示されている。
【００４４】
次に、アスペクト実行エンジン１５０は、取り出したインターセプタ１６５の呼び出しを行う（図７中の（６）；図２のＳ３）。図３のソース例には、LoginIntercepter.classのinvoke()メソッドが呼び出されることが示されている。
【００４５】
呼び出されてインスタンス化されたインターセプタ１６５は、ログイン制御条件定義ファイル１８０の定義内容を参照して（図７中の（７））、システムリソース状況の確認処理（問い合わせ処理）を実行する（図７中の（８）；図２のＳ４）。
【００４６】
具体的には、インターセプタ１６５は、まず、システムリソース監視サービス１９０にシステムリソースの状況について問い合わせを行う。図３のソース例では、LoginIntercepter.classのcheck_system_resource()メソッドの呼び出しにより、システムリソース監視サービス１９０に問い合わせを行い、システムリソース状況の確認を行うことが示されている。
【００４７】
システムリソース監視サービス１９０は、インターセプタ１６５からシステムリソースの状況について問い合わせを受け付けると、所定の方法によってサーバ１００のリソース状況を取得して、その結果をインターセプタ１６５に返却（応答）する（図７中の（９））。例えば、システムリソース監視サービス１９０は、サーバ１００のリソース状況を即時に取得して、その結果をインターセプタ１６５に返却する。また、状況確認処理にコストがかかるリソースの場合は、あらかじめ非同期に３０秒毎や１分毎など定期的に問い合わせを行っておくことにより定期収集した結果を、インターセプタ１６５に返却してもよい。
【００４８】
インターセプタ１６５は、システムリソース監視サービス１９０からサーバ１００のリソース状況の問い合わせ結果を受信すると、ログイン制御条件定義ファイル１８０の定義内容に基づいて、システム状況に問題があるか否か（ログイン制限を行うか否か）を判定する（図２のＳ５）。
【００４９】
図５は、ログイン制御条件定義ファイルの一例を示す図である。図５では、ログイン制御条件の一例として、メモリの使用状況が１０２４ＭＢを５分以上継続して超えていた場合、またはＣＰＵの利用率が９０％を超える状況が５分以上継続していて場合には、ログイン制限を行うという設定がなされている。なお、ログイン制御条件は、図５に示すものに限られず、適宜条件を追加／変更／削除することができる。
【００５０】
インターセプタ１６５は、システム状況に問題がない（ログイン制限を行う必要がない）と判定した場合（図２のＳ５；なし）、元のプログラムの処理に復帰する。上位サービス１４０のプログラムは、ログイン処理を継続し、例えば、ログイン成功画面をクライアント端末２００へ返却する（図２のＳ６；図７中の（１０））。
【００５１】
一方、インターセプタ１６５は、システム状況に問題がある（ログイン制限を行う必要がある）と判定した場合（図２のＳ５；あり）、ログイン処理を制御する。すなわち、ログイン処理を継続させる代わりに、例えば、ログイン制限画面をクライアント端末２００へ返却する（図２のＳ７；図７中の（１１））。図６は、ログイン制限画面の一例を示す図である。
【００５２】
本実施形態では、アスペクト実行エンジン１５０を備えるようにしたので、上位サービス側の実装内容（既に実装されたプログラム）を変更することなく、動的にログイン制限を実現できるという効果を得ることができる。同様に、本実施形態では、上位アプリケーションの実装内容を変更することなく、アプリケーションサーバ側の特定の処理（例えば、ログイン処理）を、後づけで制御することができるようになるという効果が得られる。
【００５３】
また、本実施形態では、上位サービスのプログラム開発者が、アプリケーションサーバ１３０の残りメモリ容量、サーバ全体の残りメモリ容量、ＣＰＵ負荷状況などを意識するようなプログラムを開発することなく、障害を未然に防止することのできる堅牢なサービスを提供できるようになる。
【００５４】
また、本実施形態では、ログイン処理にジョイントポイントを設定することによって、システムリソース状況の確認による制限処理をログイン処理に限定して実行できるので、既にログイン済みのユーザは制限されることなく操作を継続できるという効果を奏する。
【００５５】
また、本実施形態では、アプリケーションサーバの種類、オペレーティングシステムの種類、メモリ容量等の実行環境の違いを吸収することができるという効果がある。
【００５６】
また、本実施形態では、システムリソース監視サービス１９０を備えるようにしたので、システムリソースの状況を確認する処理を専用のサービスで行うことができる。その結果、システムリソース状況の確認の伴う処理コストや時間コストを低減、集約することが可能になるという効果が得られる。
【００５７】
また、本実施形態では、ログイン制御条件定義ファイル１８０を上位サービス毎に設定しているので、上位サービス毎にＣＰＵ負荷、メモリ使用量の制限条件を個別に設定することが可能になる。
【００５８】
また、本実施形態は、インターセプタライブラリ１６０を備えるようにしたところ、インターセプタ１６５は上位サービス１４０のアプリケーション開発とは関係なく、開発し、実行することができる。そのため、ＳａａＳのような、アプリケーションサーバ１３０の提供者と上位サービス１４０の提供者が異なるサービスホスティング形態を採用している場合でも、アプリケーションサーバ１３０の提供者側で、上位サービス１４０が消費するシステムリソースを、上位サービス１４０の提供者との契約に従って制限することができるという効果がある。
【００５９】
（３）その他の実施形態
【００６０】
上記実施形態では、本発明に係るシステム障害防止方法をログイン処理に適用する場合について説明したが、例えば、巨大メモリを消費することが予め想定される処理に対しても同様に適用することができる。この場合、当該巨大メモリを消費することが予め想定されるメソッドに対してジョイントポイントを設定し、インターセプタ１６５を提供する。このように構成することで、上位サービス側の実装内容（既に実装されたプログラム）を変更することなく、ログイン以外の操作においてもメモリ不足の発生を防止することができるようになる。
【００６１】
また、上記実施形態では、インターセプタがシステムリソース状況を確認する場合について説明したが、システムメンテナンス停止時として全利用者のログインを即時制限することや、特定ＩＤのログインを禁止すること、また、時間帯に応じてログインを制御するように構成してもよい。この場合においても、上位サービスの実装内容を変更することなく、これら処理を実行することができる。
【００６２】
なお、本明細書等において、手段とは、単に物理的手段を意味するものではなく、その手段が有する機能をソフトウェアによって実現する場合も含む。また、１つの手段が有する機能が２つ以上の物理的手段により実現されても、２つ以上の手段の機能が１つの物理的手段により実現されてもよい。
【００６３】
なお、本発明は、上記した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲内において、他の様々な形で実施することができる。このため、上記実施形態はあらゆる点で単なる例示にすぎず、限定的に解釈されるものではない。例えば、上述の各処理ステップは処理内容に矛盾を生じない範囲で任意に順番を変更して又は並列に実行することができる。
【符号の説明】
【００６４】
１００…サーバ、１１０…ハードウェア、１１１…ＣＰＵ、１１２…メモリ、１１３…ネットワーク、１１４…ディスク、１２０…ＯＳ、１３０…アプリケーションサーバ、１４０…上位サービス群、１５０…アスペクト実行エンジン、１６０…インターセプタライブラリ、１６５…インターセプタ、１７０…ジョイントポイント設定ファイル、１８０…ログイン制御条件定義ファイル、１９０…システムリソース監視サービス、２００…クライアント端末、２０１…クライアントアプリケーション、３００…管理端末、３０１…管理アプリケーション、Ｎ…ネットワーク
【図１】
2011018295.tif 000003
【図２】
2011018295.tif 000004
【図３】
2011018295.tif 000005
【図４】
2011018295.tif 000006
【図５】
2011018295.tif 000007
【図６】
2011018295.tif 000008
【図７】
2011018295.tif 000009