(57)【要約】      （修正有）【課題】アプリケーションプログラムの更新時における情報処理サービスの提供停止期間を短縮することのできる情報処理装置の制御方法、情報処理装置、及びプログラムを提供する。【解決手段】利用者端末から送信される実行要求を受け付ける毎に各モジュールを順次実行し、実行結果を利用者端末に送信する情報処理装置の制御方法であって、管理コンピュータからプログラムコードの更新要求Ｓ１０３０を受信すると、プログラムコードの新たな実行要求の受け付けを中止するＳ１０４０と共に実行中のモジュールの実行を中止しＳ１０５０、利用者端末に対してモジュールの実行が中止された旨の情報を実行結果として送信し、プログラムコードの更新要求に含まれる更新対象となるモジュールを特定する情報に基づいて更新対象となるモジュールを更新しＳ１０８０、更新後の新たなプログラムコードに対する実行要求の受け付けを開始するＳ１０９０。【選択図】図７
2006146679.tif 000002
【特許請求の範囲】
【請求項１】
複数のプログラムモジュールを含んで構成されるプログラムコードを記憶し、通信可能に接続された利用者端末から送信される前記プログラムコードの実行要求を受け付ける毎に、前記プログラムコードに含まれる各プログラムモジュールを順次実行し、前記実行要求に対する実行結果を前記利用者端末に送信する情報処理装置の制御方法であって、
通信可能に接続された管理コンピュータから、前記プログラムコードの更新要求を受信すると、
前記利用者端末から送信される前記プログラムコードの新たな実行要求の受け付けを中止すると共に、実行中のプログラムモジュールの実行を中止し、
前記利用者端末に対して、前記プログラムコードの実行要求に応じて実行されていたプログラムモジュールの実行が中止された旨の情報を、前記実行要求に対する実行結果として送信し、
前記プログラムコードの更新要求に含まれる更新対象となるプログラムモジュールを特定する情報に基づいて、前記更新対象となるプログラムモジュールを更新し、
更新後の新たなプログラムコードに対する実行要求の受け付けを開始する
ことを特徴とする情報処理装置の制御方法。
【請求項２】
前記情報処理装置は、
前記プログラムコードを実行する際の条件が記載された設定情報を記憶する実行時情報記憶部を備え、
前記プログラムコードを前記新たなプログラムコードに更新した後も、更新前の前記プログラムコードを実行する際に参照していた前記設定情報に基づいて前記新たなプログラムコードを実行する
ことを特徴とする請求項１に記載の情報処理装置の制御方法。
【請求項３】
前記管理コンピュータは、
前記プログラムコードの更新要求を前記情報処理装置に送信する毎に、前記新たなプログラムコードの識別番号と前記新たなプログラムコードを構成する各プログラムモジュールを特定するための情報とを対応付けて記憶する更新履歴情報記憶部と、
前記情報処理装置に記憶されている前記各プログラムモジュールを特定するための情報を記憶する配備情報記憶部と、
を備え、
前記更新対象となるプログラムモジュールを特定する情報を含む前記更新要求を前記情報処理装置に送信する際に、前記配備情報記憶部に記憶されている前記各プログラムモジュールを特定するための情報と、ユーザインタフェースから入力された前記新たなプログラムコードの識別番号に対応付けられている前記新たなプログラムコードを構成する各プログラムモジュールを特定するための情報とに基づいて、前記新たなプログラムコードを構成するために更新することが必要なプログラムモジュールを特定し、前記特定されたプログラムモジュールを前記更新対象となるプログラムモジュールとして特定する
ことを特徴とする請求項１に記載の情報処理装置の制御方法。
【請求項４】
前記プログラムコードの更新要求に含まれる更新対象となるプログラムモジュールを特定する情報は、前記プログラムコードに追加される新たなプログラムモジュールを特定する情報であり、
前記情報処理装置は、
前記管理コンピュータから送信される前記新たなプログラムモジュールを記憶することにより、前記プログラムコードを前記新たなプログラムコードに更新する
ことを特徴とする請求項１に記載の情報処理装置の制御方法。
【請求項５】
前記プログラムコードの更新要求に含まれる更新対象となるプログラムモジュールを特定する情報は、前記プログラムコードから削除されるプログラムモジュールを特定する情報であり、
前記情報処理装置は、
前記削除されるプログラムモジュールの記憶を消去することにより、前記プログラムコードを前記新たなプログラムコードに更新する
ことを特徴とする請求項１に記載の情報処理装置の制御方法。
【請求項６】
前記情報処理装置は、
前記更新対象となるプログラムモジュールの記憶を消去し、前記管理コンピュータから送信される新たなプログラムモジュールを記憶することにより、前記プログラムコードを前記新たなプログラムコードに更新する
ことを特徴とする請求項１に記載の情報処理装置の制御方法。
【請求項７】
前記プログラムコードは、オブジェクト指向型プログラミング言語で記述されたプログラムコードであり、
前記各プログラムモジュールは、クラスを定義したプログラムコードである
ことを特徴とする請求項１に記載の情報処理装置の制御方法。
【請求項８】
複数のプログラムモジュールを含んで構成されるプログラムコードを記憶するプログラムコード記憶部と、
通信可能に接続された利用者端末から送信される前記プログラムコードの実行要求を受け付ける実行要求受け付け部と、
前記プログラムコードの実行要求を受け付ける毎に、前記プログラムコードに含まれる各プログラムモジュールを順次実行するプログラムコード実行部と、
通信可能に接続された管理コンピュータから、前記プログラムコードの更新要求を受信する更新要求受信部と、
前記利用者端末から送信される前記プログラムコードの新たな実行要求の受け付けを中止する実行要求受け付け中止部と、
実行中のプログラムモジュールの実行を中止するプログラムコード強制終了部と、
前記利用者端末に対して、前記プログラムコードの実行要求に応じて実行されていたプログラムモジュールの実行が中止された旨の情報を、前記実行要求に対する実行結果として送信する実行結果送信部と、
前記プログラムコードの更新要求に含まれる更新対象となるプログラムモジュールを特定する情報に基づいて、前記更新対象となるプログラムモジュールを更新するプログラムコード更新部と、
更新後の新たなプログラムコードに対する実行要求の受け付けを開始する実行要求受け付け開始部と、
を備えることを特徴とする情報処理装置。
【請求項９】
複数のプログラムモジュールを含んで構成されるプログラムコードを記憶する情報処理装置に、
通信可能に接続された利用者端末から送信される前記プログラムコードの実行要求を受け付ける手順と、
前記プログラムコードの実行要求を受け付ける毎に、前記プログラムコードに含まれる各プログラムモジュールを順次実行する手順と、
通信可能に接続された管理コンピュータから、前記プログラムコードの更新要求を受信する手順と、
前記利用者端末から送信される前記プログラムコードの新たな実行要求の受け付けを中止する手順と、
実行中のプログラムモジュールの実行を中止する手順と、
前記利用者端末に対して、前記プログラムコードの実行要求に応じて実行されていたプログラムモジュールの実行が中止された旨の情報を、前記実行要求に対する実行結果として送信する手順と、
前記プログラムコードの更新要求に含まれる更新対象となるプログラムモジュールを特定する情報に基づいて、前記更新対象となるプログラムモジュールを更新する手順と、
更新後の新たなプログラムコードに対する実行要求の受け付けを開始する手順と、
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置の制御方法、情報処理装置、及びプログラムに関する。
【背景技術】
【０００２】
近年、情報技術の進歩に伴い、サーバにアプリケーションプログラムを実行させることにより、様々な情報処理サービスの提供を受けることができるようになった。例えば銀行により運営されているサーバにインターネットを介して所定のリクエストを送信することにより、残高照会等のサービスを受けることができる。
【０００３】
サーバにおいて実行されるアプリケーションプログラムは、機能の改善等のために新たなアプリケーションプログラムへ更新することが必要になる場合があるが、更新時の情報処理サービスへの影響は最小限に抑えることが望まれる。そのため、アプリケーションプログラムの更新を行う際の様々な技術が開発されている（例えば特許文献１参照）。
【特許文献１】米国特許第５９２０７２５号明細書
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ところで、アプリケーションプログラムは複数のプログラムモジュールを含んで構成されるが、更新される部分が一部のプログラムモジュールのみである場合もある。しかしながらこのような場合であっても、アプリケーションプログラムの更新時には、情報処理サービスを全面的に停止する必要がある。また更新するアプリケーションプログラムが実行中であった場合には、実行終了まで更新作業を待機させる必要がある。アプリケーションプログラムの種類によっては、実行終了まで数日間を要する場合もある。もちろんその間、情報処理サービスの新規リクエストの受け付けは停止させておく必要がある。
【０００５】
本発明は上記課題を鑑みてなされたものであり、アプリケーションプログラムの更新時における情報処理サービスの提供停止期間を短縮することができる情報処理装置の制御方法、情報処理装置、及びプログラムを提供することを主たる目的とする。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、本発明は、複数のプログラムモジュールを含んで構成されるプログラムコードを記憶し、通信可能に接続された利用者端末から送信される前記プログラムコードの実行要求を受け付ける毎に、前記プログラムコードに含まれる各プログラムモジュールを順次実行し、前記実行要求に対する実行結果を前記利用者端末に送信する情報処理装置の制御方法であって、通信可能に接続された管理コンピュータから、前記プログラムコードの更新要求を受信すると、前記利用者端末から送信される前記プログラムコードの新たな実行要求の受け付けを中止すると共に、実行中のプログラムモジュールの実行を中止し、前記利用者端末に対して、前記プログラムコードの実行要求に応じて実行されていたプログラムモジュールの実行が中止された旨の情報を、前記実行要求に対する実行結果として送信し、前記プログラムコードの更新要求に含まれる更新対象となるプログラムモジュールを特定する情報に基づいて、前記更新対象となるプログラムモジュールを更新し、更新後の新たなプログラムコードに対する実行要求の受け付けを開始する。
【０００７】
その他、本願が開示する課題、及びその解決方法は、発明を実施するための最良の形態の欄、及び図面により明らかにされる。
【発明の効果】
【０００８】
情報処理サービスの提供停止期間を短縮することができる情報処理装置の制御方法、情報処理装置、及びプログラムを提供することができる。
【発明を実施するための最良の形態】
【０００９】
＝＝＝全体構成例＝＝＝
本実施の形態に係る情報処理システムの全体構成を図１に示す。  
本実施の形態に係る情報処理システムは、クライアント（特許請求の範囲に記載の利用者端末に相当）１００、アプリケーションサーバ（特許請求の範囲に記載の情報処理装置に相当）２００、管理コンピュータ３００がネットワーク４００により通信可能に接続されてなる。
【００１０】
アプリケーションサーバ２００は、クライアント１００から送信されるリクエストに応じてアプリケーションプログラムを実行し、実行結果をクライアント１００に送信するコンピュータである。アプリケーションサーバ２００は、例えば仮想計算機や論理サーバによっても実現することができる。クライアント１００は、アプリケーションサーバ２００に対してアプリケーションプログラムの実行要求を送信し、アプリケーションサーバ２００から実行結果を受信するコンピュータである。クライアント１００は、例えば端末によっても実現することができる。管理コンピュータ３００は、情報処理システムを管理するコンピュータである。例えばアプリケーションサーバ２００で実行されるアプリケーションプログラムの更新を行う。
【００１１】
＜クライアント＞
上述したようにクライアント１００は、アプリケーションサーバ２００からアプリケーションプログラムの実行結果を受信するコンピュータである。例えばクライアント１００は、企業等における従業員などが業務を遂行する際に使用するコンピュータとすることができる。この場合例えば、各従業員は、毎日の勤務時間を管理するために、勤務時間管理プログラムを実行するアプリケーションサーバ２００に対して、クライアント１００から出勤時刻と退社時刻とを送信する。そしてアプリケーションサーバ２００から、毎日の勤務時間や残業時間等の計算結果を受信する。あるいは、研究開発部門の担当者が試作品の強度確認試験を行うような場合には、強度解析プログラムを実行するアプリケーションサーバ２００に対して、クライアント１００から試験条件データ等を送信し、アプリケーションサーバ２００から計算結果を受信するような場合もある。
【００１２】
＜アプリケーションサーバ＞
アプリケーションサーバ２００は、アプリケーションプログラムを実行するコンピュータである。アプリケーションプログラムは、例えば給与計算プログラムや強度解析プログラム等に代表されるようなバッチ処理用プログラム、あるいは、オンラインバンキング用プログラムやインターネットショッピング用プログラム等に代表されるようなオンラインリアルタイム処理用プログラムなど、アプリケーションサーバ２００により提供される情報処理サービスの形態に応じた様々なプログラムとすることができる。なお詳細は後述するが、アプリケーションプログラムは複数のプログラムモジュールを含んで構成される。
【００１３】
アプリケーションプログラムの実行形態としては、アプリケーションプログラムに含まれる全てのプログラムモジュールが一つのアプリケーションサーバ２００内に記憶されて実行される場合もあるし、各プログラムモジュールが複数のアプリケーションサーバ２００に分散して記憶されて実行される場合もある。情報処理システムは少なくとも一つのアプリケーションサーバ２００を含んで構成されている。アプリケーションサーバ２００は、クライアント１００から送信される様々なリクエストを受けて、アプリケーションプログラムを実行し、各リクエストに応じた実行結果をクライアント１００に送信する。
【００１４】
＜管理コンピュータ＞
管理コンピュータ３００は、情報処理システムを管理するコンピュータである。情報処理システムを管理するシステム管理者や、アプリケーションプログラムの開発を行うプログラム開発者等の各種オペレータにより使用される。例えば、アプリケーションプログラムを構成するいくつかのプログラムモジュールについてバージョンアップを行った場合には、オペレータは管理コンピュータ３００を用いて、アプリケーションサーバ２００に記憶されているアプリケーションプログラムを、新たなアプリケーションプログラムへ更新する。
【００１５】
＜ネットワーク＞
ネットワーク４００は、アプリケーションサーバ２００、クライアント１００、管理コンピュータ３００を相互に通信可能に接続する通信網である。ネットワーク４００は、例えば企業内におけるＬＡＮ（Local Area Network）とすることができる。また例えばインターネットのようなＷＡＮ（Wide Area Network）とすることもできる。ネットワーク４００は、通信ケーブルや、各種ネットワーク機器等を構成要素として含んで構成される。
【００１６】
＝＝＝機器構成＝＝＝
次に、アプリケーションサーバ２００、管理コンピュータ３００、クライアント１００のそれぞれの構成について説明する。  
アプリケーションサーバ２００、管理コンピュータ３００、クライアント１００はいずれもコンピュータであり、ハードウェア構成は基本的に同様である。そのため、これらのハードウェア構成を一つのブロック図にまとめて図２に示す。またこれらの各機能をそれぞれ実現するための制御プログラム等やテーブル等について、図３ないし図６に示す。
【００１７】
＜アプリケーションサーバの構成＞
アプリケーションサーバ２００は、ＣＰＵ２１０、メモリ２２０、ポート２３０、記録媒体読取装置２４０、入力装置２５０、出力装置２６０、記憶装置２８０を備える。
【００１８】
ＣＰＵ２１０はアプリケーションサーバ２００の全体の制御を司るもので、メモリ２２０に記憶される本実施の形態に係る各種の動作を行うためのコードから構成されるアプリケーションサーバ制御プログラム（特許請求の範囲に記載のプログラムに相当する）８１０、アプリケーションプログラム（特許請求の範囲に記載のプログラムコードに相当する）８２０実行することにより、アプリケーションサーバ２００としての各種機能を実現する。例えばＣＰＵ２１０によりアプリケーションサーバ制御プログラム８１０が実行され、メモリ２２０やポート２３０、入力装置２５０、出力装置２６０、記憶装置２８０等のハードウェア機器と協働することにより、分散ＡＰ配備部８１１、更新リスト解析部８１２、該当ファイル更新部８１３、実行制御部８１４が実現される。なお、特許請求の範囲に記載のプログラムコード記憶部、実行要求受け付け部、プログラムコード実行部、更新要求受信部、実行要求受け付け中止部、プログラムコード強制終了部、実行結果送信部、プログラムコード更新部、実行要求受け付け開始部、実行時情報記憶部は、上記分散ＡＰ配備部８１１、更新リスト解析部８１２、該当ファイル更新部８１３、実行制御部８１４により実現される。詳細は後述する。
【００１９】
メモリ２２０は例えば半導体記憶装置により構成することができる。メモリ２２０の様子を図４に示す。図４に示すように本実施の形態に係るメモリ２２０には、アプリケーションサーバ制御プログラム８１０、アプリケーションプログラム８２０、ＡＰスレッド管理テーブル７００、実行時情報管理テーブル７１０が記憶される。
【００２０】
アプリケーションサーバ制御プログラム８１０は、アプリケーションサーバ２００の制御を行うためのプログラムである。また、アプリケーションプログラム８２０の更新を行う場合の制御も行う。詳細は後述するが、アプリケーションプログラム８２０の更新は管理コンピュータ３００から送信される更新要求に応じて行われる。なお、アプリケーションサーバ制御プログラム８１０には、オペレーティングシステムとしての制御を行う機能も含まれるようにすることもできる。
【００２１】
アプリケーションプログラム８２０は、クライアント１００に対して情報処理サービスの提供を行うためのプログラムである。図４に示す例では、メモリ２２０には、アプリケーションプログラム１（８２０）とアプリケーションプログラム２（８２０）の２つのアプリケーションプログラム８２０が記憶されている。アプリケーションプログラム１（８２０）とアプリケーションプログラム２（８２０）とは、それぞれ個別の情報処理サービスの提供を行うためのプログラムである。またアプリケーションプログラム８２０は、複数のプログラムモジュール８２１を含んで構成されている。アプリケーションプログラム８２０が、例えばいわゆる手続型プログラミング言語で記述されている場合には、各プログラムモジュール８２１は手続きに対応する。また例えばアプリケーションプログラム８２０が例えばオブジェクト指向型プログラミング言語で記述されている場合には、各プログラムモジュール８２１はクラスを定義したプログラムコードに対応する。この場合、アプリケーションプログラム８２０の実行時には、各プログラムモジュール８２１はインスタンス化されたオブジェクトとして管理される。なおアプリケーションプログラム８２０は、業務プログラムやプログラムでも良い。
【００２２】
アプリケーションサーバ２００は、クライアント１００から送信される情報処理サービス提供のリクエスト（アプリケーションプログラムの実行要求）を受け付けると、リクエストを受け付ける毎にアプリケーションプログラム８２０の実行を開始する。アプリケーションサーバ２００は、リクエスト毎のアプリケーションプログラム８２０の実行をスレッドにより管理する。アプリケーションサーバ２００は、アプリケーションプログラム８２０に含まれる各プログラムモジュール８２１つまりここではオブジェクトを順次実行することにより、アプリケーションプログラム８２０を実行する。例えば、クライアント１００からリクエストを受信して最初に実行が開始されたオブジェクトから、他のオブジェクトが呼び出される。そしてそのオブジェクトからさらに他のオブジェクトが呼び出される。このようにしてオブジェクトが順次実行されてゆく。他のオブジェクトから呼び出された各オブジェクトは、呼び出し元のオブジェクトに対して処理結果を返す。そしてクライアント１００からのリクエストに応じて最初に実行が開始されたオブジェクトに処理結果が返され、そのオブジェクトにおける処理が終了すると、アプリケーションサーバ２００はクライアント１００に対してアプリケーションプログラム８２０の実行結果を送信する。その様子を図１０に示す。図１０においては、オブジェクト１がオブジェクト２を呼び出し、オブジェクト２がオブジェクト３を呼び出し、オブジェクト３がオブジェクト４を呼び出している。そしてオブジェクト４の処理結果がオブジェクト３に返され、オブジェクト３の処理結果がオブジェクト２に返され、オブジェクト２の処理結果がオブジェクト１に返されている。ここで、各オブジェクトが他のオブジェクトを呼び出して実行する処理は、他のオブジェクトに対してリクエストを送信することにより行われる。このリクエストの単位をサブリクエストと呼ぶ。また各オブジェクトの実行中に何らかの異常が検出された場合には、呼び出し元のオブジェクトに対して返される処理結果には、異常が検出されたことを示す情報が含まれる。例えば、サブリクエストにより要求されたデータがデータベースに存在しない場合や、わり算の計算において除数が０となった場合等には、その旨の情報が処理結果として返される。
【００２３】
ＡＰスレッド管理テーブル７００は、クライアント１００から送信された各リクエストに応じて実行中のアプリケーションプログラム８２０の状態を管理するためのテーブルである。ＡＰスレッド管理テーブル７００は、図９（Ａ）、図９（Ｂ）に示すように、各リクエストに対応するスレッドと、リクエストに応じて実行が開始された各オブジェクトの間で送信されるサブリクエストとの関係を記憶したテーブルである。ＡＰスレッド管理テーブル７００は、アプリケーションプログラム８２０の実行の進行とともに、オブジェクトの呼び出しが行われる毎にあるいは呼び出されたオブジェクトから処理結果が返される毎に更新される。例えば図９（Ａ）に示すＡＰスレッド管理テーブル７００は、アプリケーションプログラム８２０が図１０における「地点Ａ」に示す処理を実行中の場合のものである。また図９（Ｂ）に示すＡＰスレッド管理テーブル７００は、アプリケーションプログラム８２０が図１０における「地点Ｂ」に示す処理を実行中の場合のものである。このようにしてアプリケーションプログラム８２０の実行状態をＡＰスレッド管理テーブル７００に記憶しておくことにより、後述するように、実行中のアプリケーションプログラム８２０を強制的に終了させる際に、現在どのオブジェクトが実行中であるかを判定することが可能となる。
【００２４】
実行時情報管理テーブル７１０は、アプリケーションプログラム８２０を実行する際の条件が記載された設定情報を記憶するためのテーブルである。実行時情報管理テーブル７１０には、例えば図１７に示すように、「トランザクションの管理種別」、「トランザクション属性種別」、「セキュリティ」、「ＥＪＢ（サン・マイクロシステムズ・インコーポレーテッド社の商標又は登録商標）のインスタンスプール数」、「インスタンス取得時のタイムアウト時間」が記載される。
【００２５】
「トランザクションの管理種別」には、トランザクションの開始をコンテナ任せにするのか、ＥＪＢ（サン・マイクロシステムズ・インコーポレーテッド社の商標又は登録商標）の処理中で行うのかを決定する情報が記載される。「トランザクション属性種別」には、ＥＪＢ（サン・マイクロシステムズ・インコーポレーテッド社の商標又は登録商標）に定義されているメソッドを実行する際のトランザクションの開始有無などを決定する情報が記載される。これは、トランザクションの開始をコンテナ任せにする場合に必要となる情報である。「セキュリティ」には、ＥＪＢ（サン・マイクロシステムズ・インコーポレーテッド社の商標又は登録商標）のメソッドを実行可能なアカウントを制限するための情報が記載される。「ＥＪＢ（サン・マイクロシステムズ・インコーポレーテッド社の商標又は登録商標）のインスタンスプール数」には、ＥＪＢ（サン・マイクロシステムズ・インコーポレーテッド社の商標又は登録商標）に対する同時実行可能数を定義するための情報が記載される。「インスタンス取得時のタイムアウト時間」には、実行時にＥＪＢ（サン・マイクロシステムズ・インコーポレーテッド社の商標又は登録商標）の最大同時実行可能数を上回る数で実行しているときの待ち時間を定義するための情報が記載される。
【００２６】
この実行時情報管理テーブル７１０は、アプリケーションプログラム８２０がアプリケーションサーバ２００において実行可能なように準備される際に、オペレータにより設定されるものである。
【００２７】
図２に戻って、記録媒体読取装置２４０は、記録媒体５００に記録されているプログラムやデータを読み取るための装置である。読み取られたプログラムやデータはメモリ２２０や記憶装置２８０に格納される。従って、例えば記録媒体５００に記録されたアプリケーションサーバ制御プログラム８１０やアプリケーションプログラム８２０を、記録媒体読取装置２４０を用いて上記記録媒体５００から読み取って、メモリ２２０や記憶装置２８０に記憶するようにすることができる。
【００２８】
記録媒体５００としてはフレキシブルディスクや磁気テープ、コンパクトディスク等を用いることができる。記録媒体読取装置２４０はアプリケーションサーバ２００に内蔵されている形態とすることもできるし、外付されている形態とすることもできる。
【００２９】
記憶装置２８０は、例えばハードディスク装置や半導体記憶装置等とすることができる。なお、上述したアプリケーションサーバ制御プログラム８１０、アプリケーションプログラム８２０、ＡＰスレッド管理テーブル７００、実行時情報管理テーブル７１０は記憶装置２８０に記憶されているようにすることもできる。この場合ＣＰＵ２１０は、記憶装置２８０からアプリケーションサーバ制御プログラム８１０やアプリケーションプログラム８２０を読み出してメモリ２２０に記憶して実行する。
【００３０】
入力装置２５０はアプリケーションサーバ２００へのデータ入力等のために用いられる装置でありユーザインタフェースとして機能する。入力装置２５０としては例えばキーボードやマウス等を用いることができる。
【００３１】
出力装置２６０は情報を外部に出力するための装置でありユーザインタフェースとして機能する。出力装置２６０としては例えばディスプレイやプリンタ等を用いることができる。
【００３２】
ポート２３０は通信を行うための装置である。例えばネットワーク４００を介して行われる、管理コンピュータ３００やクライアント１００等の他のコンピュータとの通信は、ポート２３０を介して行われるようにすることができる。また例えば、アプリケーションサーバ制御プログラム８１０やアプリケーションプログラム８２０をポート２３０を通じて他のコンピュータからネットワーク４００を介して受信して、メモリ２２０や記憶装置２８０に記憶するようにすることもできる。
【００３３】
＜クライアントの構成＞
次に、クライアント１００の構成について説明する。クライアント１００は、ＣＰＵ１１０、メモリ１２０、ポート１３０、記録媒体読取装置１４０、入力装置１５０、出力装置１６０、記憶装置１８０を備える。これらの各装置の機能は、上述したアプリケーションサーバ２００が備える各装置と同様である。
【００３４】
図３に示すように、クライアント１００が備えるメモリ１２０には、クライアント制御プログラム８００が記憶される。ＣＰＵ１１０がクライアント制御プログラム８００を実行することにより、クライアント１００としての各種機能が実現される。
【００３５】
クライアント制御プログラム８００は、従業員などがアプリケーションサーバ２００を用いて業務を遂行するための各種データの入出力や送受信などを行うためのプログラムである。オペレーティングシステムとしての制御を行う機能も含まれるようにすることもできる。またクライアント制御プログラム８００は、記憶装置１８０に記憶されているようにすることもできる。この場合ＣＰＵ１１０は、記憶装置１８０からクライアント制御プログラム８００を読み出してメモリ１２０に記憶して実行する。
【００３６】
＜管理コンピュータの構成＞
次に、管理コンピュータ３００の構成について説明する。管理コンピュータ３００は、ＣＰＵ３１０、メモリ３２０、ポート３３０、記録媒体読取装置３４０、入力装置３５０、出力装置３６０、記憶装置３８０を備える。これらの各装置の機能は、上述したアプリケーションサーバ２００が備える各装置と同様である。
【００３７】
図５に示すように、管理コンピュータ３００が備えるメモリ３２０には、管理コンピュータ制御プログラム８３０、アプリケーションプログラム８２０、更新リストテーブル７２０、配備情報管理テーブル７３０、実行時情報管理テーブル７１０が記憶される。ＣＰＵ３１０が管理コンピュータ制御プログラム８３０を実行することにより、管理コンピュータ３００としての各種機能が実現される。例えばＣＰＵ３１０により管理コンピュータ制御プログラム８３０が実行され、メモリ３２０やポート３３０、入力装置３５０、出力装置３６０、記憶装置３８０等のハードウェア機器と協働することにより、分散ＡＰ配備依頼部８３１、更新リスト生成格納部８３２、更新対象ファイル格納部８３３が実現される。なお特許請求の範囲に記載の更新履歴情報記憶部と、配備情報記憶部は、上記分散ＡＰ配備依頼部８３１、更新リスト生成格納部８３２、更新対象ファイル格納部８３３により実現される。詳細は後述する。
【００３８】
管理コンピュータ制御プログラム８３０は、管理コンピュータ３００を制御するためのプログラムである。また、アプリケーションサーバ２００に記憶されているアプリケーションプログラム８２０を更新する場合の各種制御も行う。例えば、アプリケーションプログラム８２０に含まれるプログラムモジュール８２１のいくつかについて改良を行った場合に、アプリケーションサーバ２００に現在記憶されているアプリケーションプログラム８２０に含まれる各プログラムモジュール８２１の更新日時と、新たなアプリケーションプログラム８２０に含まれる各プログラムモジュール８２１の更新日時とを比較して、更新が必要なプログラムモジュール８２１を抽出してアプリケーションサーバ２００に更新要求を送信する。またアプリケーションプログラム８２０のリビジョン管理を行うこともできる。この場合、オペレータから入力されたリビジョン管理番号（プログラムコードの識別番号）に該当するアプリケーションプログラム８２０に含まれる各プログラムモジュール８２１と、現在アプリケーションサーバ２００に記憶されているアプリケーションプログラム８２０に含まれる各プログラムモジュール８２１とを比較して、更新が必要なプログラムモジュール８２１を抽出してアプリケーションサーバ２００に更新要求を送信する。
【００３９】
なお図５において、管理コンピュータ３００のメモリ３２０に記憶されるアプリケーションプログラム８２０は、プログラム開発者によって更新のなされた新たなアプリケーションプログラム８２０である。管理コンピュータ３００は、アプリケーションサーバ２００に対してアプリケーションプログラム８２０の更新要求を送信して、この新たなアプリケーションプログラム８２０への更新を実行させる。
【００４０】
更新リストテーブル（特許請求の範囲に記載の更新対象となるプログラムモジュールを特定する情報に相当する）７２０は、アプリケーションサーバ２００がどのプログラムモジュール８２１を更新すればよいかを示す情報である。また、更新リストテーブル７２０には、新たなアプリケーションプログラム８２０の識別番号と新たなアプリケーションプログラム８２０を構成する各プログラムモジュール８２１を特定するための情報とが対応付けて記憶される。管理コンピュータ３００は、アプリケーションサーバ２００に対して更新要求を送信する際に、更新リストテーブル７２０を含めて送信する。更新リストテーブル７２０の一例を図１３に示す。
【００４１】
更新リストテーブル７２０は、「履歴番号」欄、「更新対象アーカイブファイル名」欄、「更新内容」欄、「更新対象ファイルのパス」欄を備える。「履歴番号」欄には、上記リビジョン管理番号が記録される。「更新対象アーカイブファイル名」欄には、プログラムモジュール８２１を含むアーカイブファイル名が記載される。「更新内容」欄には、プログラムモジュール８２１の更新の内容が記載れる。例えば”削除”、”追加”、”更新”とすることができる。「更新対象ファイルのパス」欄には、プログラムコード８２１の記憶場所を示す情報が記載される。更新リストテーブル７２０を受信したアプリケーションサーバ２００は、プログラムコード８２１の記憶場所が記載された「更新対象ファイルのパス」欄に記載された内容に基づいて、「更新対象アーカイブファイル名」欄に記載されたアーカイブファイルに含まれるプログラムコード８２１を取得して、「更新内容」欄に記載された更新内容に基づいて、プログラムコード８２１の更新をおこなう。このように、新たなアプリケーションプログラム８２０を構成する各プログラムモジュール８２１の特定は、「更新対象アーカイブファイル名」欄と「更新対象ファイルのパス」欄とに記載された情報に基づいて行うことができる。なお「更新対象ファイルのパス」欄に記載されたプログラムコード８２１の記憶場所は、管理コンピュータ３００の記憶装置３８０における記憶場所とすることができる。この場合、アプリケーションサーバ２００は管理コンピュータ３００の記憶装置３８０から新たなプログラムモジュール８２１を受信する。そして例えば「更新内容」の記載が”更新”であった場合には、アプリケーションサーバ２００のメモリ２２０に記憶されている、更新対象となるプログラムモジュール８２１を消去し管理コンピュータ３００から送信された新たなプログラムモジュール８２１を記憶する。また例えば「更新内容」の記載が”削除”であった場合には、アプリケーションサーバ２００のメモリ２２０に記憶されている、更新対象となるプログラムモジュール８２１を消去する。さらにまた例えば「更新内容」の記載が”追加”であった場合には、アプリケーションサーバ２００のメモリ２２０に、管理コンピュータ３００から送信された新たなプログラムモジュール８２１を記憶する。
【００４２】
配備情報管理テーブル７３０は、アプリケーションサーバ２００に現在記憶されているアプリケーションプログラム８２０に含まれる各プログラムモジュール８２１を特定するための情報である。配備情報管理テーブル７３０の一例を図１４に示す。
【００４３】
配備情報管理テーブル７３０は、「アーカイブファイル名」欄と、「ファイル名」欄と、「最終更新時刻」欄とを備える。「ファイル名」欄には、アプリケーションサーバ２００に現在記憶されているアプリケーションプログラム８２０に含まれる各プログラムモジュール８２１の名称が記載される。「アーカイブファイル名」欄には、各プログラムモジュール８２１が含まれるアーカイブファイルの名称が記載される。「最終更新時刻」欄には各プログラムモジュール８２１の最終更新時刻を示す情報が記載される。
【００４４】
管理コンピュータ３００を操作するオペレータが、管理コンピュータ３００に対して、アプリケーションサーバ２００で実行されているアプリケーションプログラム８２０の更新リクエストコマンドをリビジョン管理番号と共に入力すると、管理コンピュータ３００は、配備情報管理テーブル７３０に記憶された、アプリケーションサーバ２００に現在記憶されているアプリケーションプログラム８２０に含まれる各プログラムモジュール８２１を特定するための情報と、更新リストテーブル７２０に記憶された、上記リビジョン管理番号に対応付けられているアプリケーションプログラム８２０を構成する各プログラムモジュール８２１を特定するための情報とに基づいて、リビジョン管理番号により特定される新たなアプリケーションプログラム８２０を構成するために更新することが必要なプログラムモジュール８２１を特定する。そして管理コンピュータ３００は、上記特定された各プログラムモジュール８２１特定するための情報をアプリケーションサーバ２００に更新要求と共に送信する。
【００４５】
実行時情報管理テーブル７１０は、アプリケーションプログラム８２０を実行する際の条件が記載された設定情報を記憶するためのテーブルである。アプリケーションサーバ２００に記憶されている実行時情報管理テーブル７１０は、管理コンピュータ３００に記憶されている実行時情報管理テーブル７１０を複製したものである。つまり、オペレータは通常は、新たなアプリケーションプログラム８２０をアプリケーションサーバ２００に配備しようとする際には、そのアプリケーションプログラム８２０の実行時の条件を設定した実行時情報管理テーブル７１０を作成し、アプリケーションプログラム８２０と共にアーカイブファイルとしてまとめ、アプリケーションサーバ２００に送信する。この場合には、アプリケーションプログラム８２０に含まれる一部のプログラムモジュール８２１についてのみ更新を行った場合でも、更新が行われていないプログラムモジュール８２１をも含むアプリケーションプログラム８２０と実行時情報管理テーブル７１０とをアーカイブファイルに纏めて、アプリケーションサーバ２００に送信する必要がある。しかしながら上述したように、本実施の形態においては、アプリケーションプログラム８２０の更新を行った場合には、更新されたプログラムモジュール８２１のみがアプリケーションサーバ２００に送信される。そしてこの実行時情報管理テーブル７１０も、内容に変更がなければ、アプリケーションプログラム８２０の更新前に用いていたものをそのまま利用することができるのである。つまり、アプリケーションサーバ２００は、アプリケーションプログラム８２０を新たなアプリケーションプログラム８２０に更新しても、更新前のアプリケーションプログラム８２０を実行する際に参照していた実行時情報管理テーブル７１０を参照して新たなアプリケーションプログラム８２０を実行することができるのである。このため本実施の形態においては、アプリケーションプログラム８２０の更新にかかる時間を短縮することが可能となるのである。
【００４６】
以上、アプリケーションサーバ２００、管理コンピュータ３００、クライアント１００の各構成について説明したが、図６に管理コンピュータ３００とアプリケーションサーバ２００とがネットワーク４００により通信可能に接続されている様子を示す。
【００４７】
＝＝＝処理の流れ＝＝＝
＜アプリケーションプログラムの更新＞
次に、本実施の形態に係るアプリケーションサーバ２００に記憶されているアプリケーションプログラム８２０を更新する場合の処理の流れを図７、図８、及び図１２を参照しながら説明する。
【００４８】
まず、管理コンピュータ３００の分散ＡＰ配備依頼部８３１は、オペレータによりユーザインタフェースから入力されたアプリケーションプログラム８２０の更新コマンドを受け付ける（S1000）。そうすると管理コンピュータ３００の分散ＡＰ配備依頼部８３１は、更新すべきプログラムモジュール８２１があるかどうかを判定する（S1010）。この判定は、上述したように、メモリ３２０に記憶されているアプリケーションプログラム８２０に含まれる各プログラムモジュール８２１の更新日時と、配備情報管理テーブル７３０に記憶されている各プログラムモジュール８２１の最終更新時刻とを比較することにより行うことができる。その結果、更新すべきプログラムモジュール８２１がない場合には処理を終了する。更新すべきプログラムモジュール８２１があった場合には、管理コンピュータ３００の分散ＡＰ配備依頼部８３１は更新リストテーブル７２０を作成する（S1020）。そしてアプリケーションサーバ２００に対してアプリケーションプログラム８２０の更新要求を送信する（S1030）。
【００４９】
アプリケーションプログラム８２０の更新要求を受信すると、アプリケーションサーバ２００の実行制御部８１４は、クライアント１００から送信される新規リクエストの受付を中止する（S1040）。受け付けの中止は、例えば新規リクエストの受信を行わないようにすることにより行うことができる。あるいは、アプリケーションサーバ２００のメモリ２２０に設けたキューにリクエストを記憶しておくようにすることもできる。そしてアプリケーションサーバ２００の実行制御部８１４は、アプリケーションプログラム８２０の停止処理を行う（S1050）。
【００５０】
アプリケーションプログラム８２０の停止処理の詳細を、図８に示す。  
アプリケーションサーバ２００の実行制御部８１４は、まず、停止対象となっているアプリケーションプログラム８２０についてのＡＰスレッド管理テーブル７００を参照する。そして現在アプリケーションプログラム８２０が実行中であるか否かを判定する（S2000）。アプリケーションプログラム８２０が実行中である場合には、クライアント１００のリクエストに応じて生成されたスレッド毎に、各オブジェクト間でサブリクエストが送信されているはずであるから、ＡＰスレッド管理テーブル７００を参照することにより、アプリケーションプログラム８２０が実行中であるか否かを判定することができる。その結果、実行中のスレッドがあった場合には（S2010）、実行中の全てのスレッドに対して、現在実行中のサブリクエストを停止させる（S2020〜S2040）。
【００５１】
現在実行中のサブリクエストの停止は例えば以下のようにして行う。例えば図１１に示すように、現在オブジェクト４が実行中である場合には、アプリケーションサーバ２００はオブジェクト４の処理を強制的に終了させる。オブジェクト４の処理の強制的な終了は、例えば割り込み処理により実現することができる。その際、アプリケーションサーバ２００の実行制御部８１４は、オブジェクト４を呼び出していたオブジェクト３に対して、オブジェクト４の実行中に何らかの異常が検出された旨の情報を処理結果として返すようにする。これにより、オブジェクト３についても、オブジェクト３の実行中に何らかの異常が検出されることになる。そして順次オブジェクト１まで実行中に何らかの異常が検出されることになる。そしてクライアント１００には、実行中に何らかの異常が検出された旨の情報が実行結果として送信される。なお、実行中に何らかの異常が検出された旨の情報は、実行が中止された旨の情報としてもよい。これにより、クライアント１００は、アプリケーションサーバ２００に対して送信したリクエストに対する実行結果を受け取ることができるので、処理を完結することができる。莫大な数の複雑なロジックが相互に絡み合って処理を進めてゆく情報処理システムにおいては、一つ一つの処理がきちんと完結することは重要なことである。本実施の形態のように、オブジェクトの実行を途中で強制的に終了させた場合においても、きちんと実行結果をクライアント１００に送信することができるようにすることは、クライアント１００やアプリケーションサーバ２００における情報処理を正しく円滑に進める上で極めて重要なことである。
【００５２】
全ての実行中のサブリクエストが終了すると、ＡＰスレッド管理テーブル７００のコールスタック欄は空になる。そしてアプリケーションサーバ２００の実行制御部８１４は、全てのサブリクエストが停止されたことを確認すると（S2050）、アプリケーションプログラム８２０の停止の処理を行う（S2060）。
【００５３】
アプリケーションプログラム８２０が停止すると、アプリケーションサーバ２００の該当ファイル更新部８１３は、管理コンピュータ３００に対して更新すべきプログラムモジュール８２１を要求する（S1060）。そして管理コンピュータ３００から更新すべきプログラムモジュール８２１が送信されてきたら（S1070）、それらの各プログラムモジュール８２１のみを更新する（S1080）。
【００５４】
更新が完了したら、アプリケーションサーバ２００の実行制御部８１４はクライアント１００からの新たなリクエストの受付を開始する（S1090）。なお、上述したようにアプリケーションプログラム８２０の更新を行っても、本実施の形態に係るアプリケーションサーバ２００は、アプリケーションプログラム８２０の更新前に使用していた実行情報管理テーブル７１０をそのまま使用することができる。
【００５５】
＜リビジョンを指定したアプリケーションプログラムの更新＞
次に、本実施の形態に係るアプリケーションサーバ２００に記憶されているアプリケーションプログラム８２０をリビジョンを指定して更新する場合の処理の流れを図１５及び図１６を参照しながら説明する。
【００５６】
まず、管理コンピュータ３００の分散ＡＰ配備依頼部８３１は、オペレータによりユーザインタフェースから入力されたアプリケーションプログラム８２０の更新コマンドをリビジョン管理番号と共に受け付ける（S3000）。そして管理コンピュータ３００の分散ＡＰ配備依頼部８３１は、リビジョン管理番号が、最新のリビジョン管理番号であるか否かを判定する（S3010）。最新のリビジョン管理番号である場合には、図７の（Ａ）以降の処理を実行する。
【００５７】
リビジョン管理番号が最新のリビジョン管理番号でない場合には、指定されたリビジョンまでの更新リストを読み込む（S3020）。その中に、変更（更新）されたプログラムモジュール８２１が含まれている場合には（S3030）、変更前のリビジョンのプログラムモジュール８２１を「変更」にして、更新リストテーブル７２０に追加する（S3040）。また追加されたプログラムモジュール８２１が含まれている場合には（S3050）、変更前のリビジョンのプログラムモジュール８２１を「削除」にして、更新リストテーブル７２０に追加する（S3060）。また削除されたプログラムモジュール８２１が含まれている場合には（S3070）、変更前のリビジョンのプログラムモジュール８２１を「追加」にして、更新リストテーブル７２０に追加する（S3080）。以上の処理により、更新リストテーブル７２０には、指定されたリビジョン管理番号のアプリケーションプログラム８２０にするために必要なプログラムモジュール８２１の更新内容を記載することができる。そして図７の（Ｂ）以降の処理を実行する。これにより、アプリケーションサーバ２００に記憶されるアプリケーションプログラム８２０に含まれる各プログラムモジュール８２１を、指定されたリビジョンのプログラムモジュール８２１に更新することができる。
【００５８】
以上、本実施の形態におけるアプリケーションプログラム８２０の更新について説明したが、本実施の形態よれば、アプリケーションプログラム８２０の実行中においても、アプリケーションプログラム８２０の更新作業を開始することが可能となる。つまり従来のように、アプリケーションプログラム８２０の実行終了を待って更新作業を開始する必要がなくなる。これにより、システム保守作業を計画的にそして直ちに実行することが可能となる。このことは、技術進歩の早い情報処理の分野においては、極めて重要である。例えば、現在世界中で問題となっているコンピュータウィルスへの対応や、アプリケーションプログラム８２０に内在する不具合等の修正など、一刻を争う処置が必要な場合もある。かかる場合にアプリケーションプログラム８２０が実行中であるために、数時間、あるいは数日間にも渡って、アプリケーションプログラム８２０の更新が行えないことは、多大な被害、損害を被ることにもなりかねない。本実施の形態によれば、アプリケーションプログラム８２０が実行中であったとしても、強制的に処理を終了させると共に、アプリケーションプログラム８２０の実行開始のリクエストを送信したクライアント１００に対しては実行結果を返すことができる。これにより、アプリケーションサーバ２００及びクライアント１００の双方の情報処理を正常に保ったまま、直ちにアプリケーションプログラム８２０の更新作業を開始することが可能となる。
【００５９】
さらに本実施の形態に係るアプリケーションプログラム８２０の更新においては、更新前に使用していたアプリケーションプログラム８２０を実行する際の条件が記載された設定情報を、更新後においてもそのまま使用することができる。さらに、アプリケーションプログラム８２０の更新は、更新が必要なプログラムモジュール８２１についてのみ行うことができる。これらにより、更新作業時間を短縮することができると共に、設定情報の再設定処理が不要となるので、更新後のアプリケーションプログラム８２０に対する新規リクエストの受け付けをいち早く再開することが可能となるのである。
【００６０】
以上述べたように、本実施の形態においては、アプリケーションサーバ２００において実行されるアプリケーションプログラム８２０の更新時の情報処理サービスへの影響を最小限に抑えることが可能となる。そしてこのことは情報処理システムの可用性の向上に大きく寄与し、ユーザへ提供される情報処理サービスの質の向上、及び信頼性の向上を図ることができるのである。
【００６１】
本実施の形態に係る各処理部、各プログラムは、ハードウェアやプログラム、オブジェクト、スレッド、プロセスでも実現可能である。
【００６２】
以上発明を実施するための最良の形態について説明したが、上記実施の形態は本発明の理解を容易にするためのものであり、本発明を限定して解釈するためのものではない。本発明はその趣旨を逸脱することなく変更、改良され得ると共に、本発明にはその等価物も含まれる。
【図面の簡単な説明】
【００６３】
【図１】本実施の形態に係る情報処理システムの全体構成を示す図である。
【図２】本実施の形態に係るクライアント、アプリケーションサーバ、管理コンピュータの各構成を示す図である。
【図３】本実施の形態に係るクライアントのメモリを示す図である。
【図４】本実施の形態に係るアプリケーションサーバのメモリを示す図である。
【図５】本実施の形態に係る管理コンピュータのメモリを示す図である。
【図６】本実施の形態に係るアプリケーションサーバと管理コンピュータとがネットワークで通信可能に接続される様子を示す図である。
【図７】本実施の形態に係る処理の流れを示すフローチャートである。
【図８】本実施の形態に係る処理の流れを示すフローチャートである。
【図９】本実施の形態に係るＡＰスレッド管理テーブルを示す図である。
【図１０】本実施の形態に係るサブリクエストについて説明するための図である。
【図１１】本実施の形態に係るアプリケーションプログラムの実行終了を説明するための図である。
【図１２】本実施の形態に係るアプリケーションサーバと管理コンピュータとがネットワークで通信可能に接続される様子を示す図である。
【図１３】本実施の形態に係る更新リストテーブルを示す図である。
【図１４】本実施の形態に係る配備情報管理テーブルを示す図である。
【図１５】本実施の形態に係る処理の流れを示すフローチャートである。
【図１６】本実施の形態に係るアプリケーションサーバと管理コンピュータとがネットワークで通信可能に接続される様子を示す図である。
【図１７】本実施の形態に係る実行情報管理テーブルを示す図である。
【符号の説明】
【００６４】
１００    クライアント
２００    アプリケーションサーバ
２８０    記憶装置
３００    管理コンピュータ
４００    ネットワーク
５００    記録媒体
７００    ＡＰスレッド管理テーブル
７１０    実行時情報管理テーブル
７２０    更新リストテーブル
７３０    配備情報管理テーブル
８００    クライアント制御プログラム
８１０    アプリケーションサーバ制御プログラム
８２０    アプリケーションプログラム
８２１    プログラムモジュール
８３０    管理コンピュータ制御プログラム
【図１】
2006146679.tif 000003
【図２】
2006146679.tif 000004
【図３】
2006146679.tif 000005
【図４】
2006146679.tif 000006
【図５】
2006146679.tif 000007
【図７】
2006146679.tif 000008
【図８】
2006146679.tif 000009
【図９】
2006146679.tif 000010
【図１０】
2006146679.tif 000011
【図１１】
2006146679.tif 000012
【図１２】
2006146679.tif 000013
【図１３】
2006146679.tif 000014
【図１４】
2006146679.tif 000015
【図１５】
2006146679.tif 000016
【図１７】
2006146679.tif 000017
【図６】
2006146679.tif 000018
【図１６】
2006146679.tif 000019