(57)【要約】【課題】ソフトウェアプログラムの設定変更時に実行中の処理を中断せず、設定変更時にも処理要求を受け付けることが可能な、ソフトウェアプログラム実行装置を提供する。【解決手段】実行監視部１５が、ソフトウェアプログラム制御部１４の指示に基づいて、ソフトウェアプログラムをプロセスで実行するサーバアプリケーション部１１の動作をプロセス単位で監視し、第１のプロセスの実行中の処理が完了したことをソフトウェアプログラム制御部１４へ通知し、ソフトウェアプログラム制御部１４が通知を受けて、第１のプロセスを停止させた後に再起動させ、第１のプロセスが、再起動の過程で設定記憶部１６に記録されている設定変更を反映させながら再起動する。【選択図】図２
2011044110.tif 000002
【特許請求の範囲】
【請求項１】
利用者が入力したソフトウェアプログラムの設定変更要求を記録する設定記憶部と、
前記ソフトウェアプログラムを、利用者が入力した処理要求に応じて、起動時に前記設定記憶部に記録されている前記設定変更を反映させたプロセスで実行するプログラム実行部と、
前記プログラム実行部の前記プロセス単位での起動と停止を制御するソフトウェアプログラム制御部と、
前記プログラム実行部への前記利用者からの処理要求をキューに保留するキュー制御部と、
前記プロセスに対応して設けられ、前記キューから前記処理要求を取り出し、前記プロセスに通知するデキュー部と、
前記プログラム実行部の動作を前記プロセス単位で監視する実行監視部と、を備え、
前記実行監視部は、前記利用者が前記ソフトウェアプログラムの設定変更要求を入力した場合、前記ソフトウェアプログラム制御部の指示に基づいて、前記ソフトウェアプログラムに対応する第１のプロセスを監視し、前記第１のプロセスの実行中の処理が完了したら、前記ソフトウェアプログラム制御部へ通知し、
前記ソフトウェアプログラム制御部は、前記通知を受信したら、前記第１のプロセスを停止させた後に再起動させる、ソフトウェアプログラム実行装置。
【請求項２】
請求項１に記載のソフトウェアプログラム実行装置において、
前記ソフトウェアプログラム制御部は、
複数の前記プロセスが実行されている場合、
各々のプロセスについて、順次に停止と再起動を行わせることを特徴とするソフトウェアプログラム実行装置。
【請求項３】
請求項１または２に記載のソフトウェアプログラム実行装置において、
前記ソフトウェアプログラム制御部は、前記通知を受信したら、前記ソフトウェアプログラムに対応する第２のプロセスを起動してから、前記第１のプロセスを停止させた後に再起動させる、ソフトウェアプログラム実行装置。
【請求項４】
請求項１に記載のソフトウェアプログラム実行装置において、
前記ソフトウェアプログラム制御部は、前記プロセスの停止前に、そのプロセスに対応した前記デキュー部を停止させることを特徴とする、ソフトウェアプログラム実行装置。
【請求項５】
利用者が入力したソフトウェアプログラムの設定変更要求を設定記憶部に記録する工程と、
実行監視部が、ソフトウェアプログラム制御部の指示に基づいて、ソフトウェアプログラムをプロセスで実行するプログラム実行部の動作をプロセス単位で監視し、前記ソフトウェアプログラムに対応する第１のプロセスの実行中の処理が完了したら、前記ソフトウェアプログラム制御部へ通知する工程と、
前記ソフトウェアプログラム制御部が、前記通知を受けて、前記第１のプロセスを停止させた後に再起動させる工程と、
前記第１のプロセスが、前記再起動の過程で前記設定記憶部に記録されている設定変更を反映させながら再起動する工程と、を含むソフトウェアプログラム実行方法。
【請求項６】
コンピュータを、
ソフトウェアプログラムを、利用者が入力した処理要求に応じて、起動時に設定記憶部に記録されている設定変更を反映させたプロセスで実行するプログラム実行部と、
前記プログラム実行部の前記プロセス単位での起動と停止を制御するソフトウェアプログラム制御部と、
前記プログラム実行部への前記利用者からの処理要求をキューに保留するキュー制御部と、
前記プロセスに対応して設けられ、前記キューから前記処理要求を取り出し、前記プロセスに通知するデキュー部と、
前記プログラム実行部の動作を前記プロセス単位で監視する実行監視部として機能させ、
前記実行監視部は、前記利用者が前記ソフトウェアプログラムの設定変更要求を入力した場合、前記ソフトウェアプログラム制御部の指示に基づいて、前記ソフトウェアプログラムに対応する第１のプロセスを監視し、前記第１のプロセスの実行中の処理が完了したら、前記ソフトウェアプログラム制御部へ通知し、
前記ソフトウェアプログラム制御部は、前記通知を受信したら、前記第１のプロセスを停止させた後に再起動させる、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェアプログラム実行装置、ソフトウェアプログラム実行方法、及びプログラムに関する。
【背景技術】
【０００２】
一般に、ソフトウェアプログラムは、ソフトウェアプログラムの起動時に設定を与えることで、プログラムの動作を制御することができる。たとえば、Ｊａｖａ（登録商標）で作成されたアプリケーションであれば、“−Ｘｍｘ”という文字列設定をソフトウェアプログラムの起動時に指定することで、該当ソフトウェアプログラムが最大で確保できるヒープ（メモリ領域）のサイズを制御することができる。
【０００３】
なお、ここでソフトウェアプログラムとは、利用者からの処理の要求を受け、なんらかの処理を行うソフトウェアを指す。ソフトウェアプログラムは、それを動作させるプロセスを起動することにより利用者から要求を受け付けることが可能になる。ソフトウェアプログラムには、トランザクション処理が含まれる。トランザクション処理は、いわゆるオンラインリアルタイム処理であり、与えられた情報を即時に処理し、その結果を必要な場所で受け取ることを可能にする処理である。そして、処理を要求する側をクライアント、要求された処理を実行して結果を返す側をサーバと呼び、一般的には、端末装置側にクライアントアプリケーション（クライアントアプリケーションプログラム）が設けられ、端末装置と通信回線を介して接続されたホストコンピュータ側にサーバアプリケーション（サーバアプリケーションプログラム）が設けられる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００２−２９７５３５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
一般に、ソフトウェアプログラムの設定はソフトウェアプログラムの起動時にしか指定することができず、ソフトウェアプログラムが起動した後で変更することができない。変更するには、ソフトウェアプログラムが動作するプロセスを一旦停止し、新たな設定を指定してから起動しなおさなければならない。この場合、ソフトウェアプログラムが動作するプロセスの停止中は利用者からの処理要求を受け付けることができない。また、ソフトウェアプログラムの処理中に、ソフトウェアプログラムが動作するプロセスを停止してしまうと、実行中であった処理が中断されてしまう。
【０００６】
このような問題の解決策として、ソフトウェアプログラムの中に設定変更手段を内包するという方法が知られている（例えば、特許文献１）。これは、ソフトウェアプログラムが内部に設定変更要求を受け付ける手段と設定変更を行う手段を持ち、起動中に利用者からの設定変更要求を受け付け、ソフトウェアプログラムの内部で設定変更を反映させるという方法である。この方法により、ソフトウェアプログラムが動作するプロセスを停止させることなく、設定情報を変更させることができる。
【０００７】
しかし、一般にソフトウェアプログラムは、すでに存在する基盤技術を活用して作成されるものであり、この基盤技術が外部のものである場合、ソフトウェアプログラムの作者はこの基盤技術部分を改造できないことが多い。つまり、この基盤技術の部分を制御するための設定を、特許文献１に記載されているソフトウェアプログラム内部の設定変更手段で変更することはできない。例えば、上述のＪａｖａ（登録商標）のプログラムを例にあげると、一般にＪａｖａ（登録商標）  ＶＭ上で動くソフトウェアプログラムの作者は、Ｊａｖａ（登録商標）の基盤部分を改造することができず、従って、ヒープサイズといったＪａｖａ（登録商標）  ＶＭの基盤部分の設定を利用者が改造することはできない。つまり、Ｊａｖａ（登録商標）  ＶＭ上で動くソフトウェアプログラムが内部に設定変更要求を受け付ける手段や設定変更を行う手段を持っていても、Ｊａｖａ（登録商標）  ＶＭの基盤部分の設定を変更することはできない。Ｊａｖａ（登録商標）  ＶＭは起動時に設定を読み込むため、利用者が設定を指定できるのは、Ｊａｖａ（登録商標）  ＶＭの起動時のみである。
【０００８】
なお、ソフトウェアプログラムの設定を変更する別の方法として、クラスタリングソフトウェアと呼ばれるソフトウェアを利用する方法も考えられる。クラスタリングソフトウェアとは一般にシステムの障害を監視し、障害発生時に別のサーバに業務を引継ぐことで、高可用性を実現するソフトウェアであり、サービスを継続しながら、アプリケーションの停止を伴うメンテナンスを実施するためにも利用される。クラスタリングソフトウェアは、サーバコンピュータの起動／停止機能と仮想ＩＰアドレスの活性／非活性の制御機能を備えており、サーバコンピュータの再起動中に別サーバにルーティングを切り替えることができる。
【０００９】
しかし、クラスタリングソフトウェアは、一般にサーバマシン単位で制御するものであり、制御対象の粒度が大きい。１つのサーバマシンに複数の制御対象の環境を作ることもできるが、対象ごとに仮想ＩＰアドレスの割り振りや活性／非活性の集中制御が必要であり、プロセス単位といった細かい粒度での制御が難しい。また、クラスタリングソフトウェアではサーバマシンごとといった大きな粒度での多重化が必要であり、ディスクやメモリのリソース消費量が多く、再起動にかかる時間も長くなる。
【００１０】
また、クラスタリングソフトウェアは、一般にアプリケーションサーバの外部で動作するため、アプリケーションの実行状態の監視が難しい。アプリケーションサーバごと再起動する場合、全てのソフトウェアプログラムの実行状態の監視が必要になるが、これが可能か否かはアプリケーションサーバの実装に依存してしまう。また、監視対象が多くなるため、監視に要する時間が長くなる。
【００１１】
さらに、アプリケーションサーバ内部のキューで保留しているリクエストの扱いにも違いがある。クラスタリングソフトウェアでは、キューに保留しているリクエストの実行完了を待たなければならず、この観点でも設定の反映に時間がかかることになる。
【００１２】
本発明の目的は、ソフトウェアプログラムの設定変更に際し、ソフトウェアプログラムが処理要求を受け付けられる状態を維持したまま設定を変更すること、また、設定の変更中にソフトウェアプログラムの処理を中断しないことである。
また、中身を改造できないソフトウェアプログラムの設定についても、動的に設定変更を行うことである。
【課題を解決するための手段】
【００１３】
本発明に係るソフトウェアプログラム実行装置は、利用者が入力したソフトウェアプログラムの設定変更要求を記録する設定記憶部と、ソフトウェアプログラムを、利用者が入力した処理要求に応じて、起動時に設定記憶部に記録されている設定変更を反映させたプロセスで実行するプログラム実行部と、プログラム実行部のプロセス単位での起動と停止を制御するソフトウェアプログラム制御部と、プログラム実行部への利用者からの処理要求をキューに保留するキュー制御部と、プロセスに対応して設けられ、キューから処理要求を取り出し、プロセスに通知するデキュー部と、プログラム実行部の動作をプロセス単位で監視する実行監視部と、を備え、実行監視部は、利用者がソフトウェアプログラムの設定変更要求を入力した場合、ソフトウェアプログラム制御部の指示に基づいて、ソフトウェアプログラムに対応する第１のプロセスを監視し、第１のプロセスの実行中の処理が完了したら、ソフトウェアプログラム制御部へ通知し、ソフトウェアプログラム制御部は、通知を受信したら、第１のプロセスを停止させた後に再起動させることを特徴とする。
【発明の効果】
【００１４】
本発明によれば、ソフトウェアプログラムの設定変更に際し、ソフトウェアプログラムが処理要求を受け付けられる状態を維持したまま設定を変更することができる。
また、本発明によれば、設定の変更中にソフトウェアプログラムの処理が中断されない、という効果を有する。
さらに、本発明によれば、中身を改造できないソフトウェアプログラムの設定についても、動的に設定変更を行うことができる。
また、本発明によれば、プログラム実行部とデキュー部のみを多重化しておけばよいため、クラスタリングソフトウェアに比べディスクやメモリといったリソースの利用効率が高く、設定変更の反映にかかる時間が短くてすむ、という優れた特性を有している。
【図面の簡単な説明】
【００１５】
【図１】本発明によるサーバコンピュータ（ソフトウェアプログラム実行装置）を含むトランザクションシステムの構成を示すブロック図である。
【図２】本実施形態によるサーバコンピュータの構成を示すブロック図である。
【図３】本実施形態によるサーバコンピュータの動作を説明するチャート図である。
【発明を実施するための形態】
【００１６】
次に、本発明を実施するための最良の形態について、図面を参照して詳細に説明する。
図１は、本発明によるサーバコンピュータ（ソフトウェアプログラム実行装置）１を含むトランザクションシステムの構成を示すブロック図である。図に示すように、本実施形態によるトランザクションシステムは、トランザクションを実行するサーバコンピュータ１（トランザクション装置）と、サーバコンピュータ１とネットワークＮを介して接続された複数のクライアント端末２と、運用管理端末３を備えている。
【００１７】
本実施形態によるトランザクションシステムにおいては、クライアント端末２から送信される処理要求をサーバコンピュータ１が受信し、サーバコンピュータ１が受信した要求に基づいてトランザクションを実行し、その応答をクライアント端末２に送信する。また、運用管理端末３とサーバコンピュータ１の間では、ネットワークＮを介して任意の情報を送受信することができる。なお、本発明によるサーバコンピュータ１が適用されるシステムは、図１に示す形態のものに限定されず、サーバコンピュータ１が処理要求を受信してトランザクションを実行し、応答するシステムであればよい。
【００１８】
図２は、サーバコンピュータ１の構成を示すブロック図である。図２に示すように、トランザクション装置であるサーバコンピュータ１は、基本的なコンピュータの構成であるＣＰＵなどの演算装置１Ａと、ハードディスクなどの記憶装置１Ｂと、を備えている。
【００１９】
演算装置１Ａは、サーバアプリケーション部（プログラム実行部）１１、キュー制御部１２、デキュー部１３、ソフトウェアプログラム制御部１４、実行監視部１５、を備えている。サーバアプリケーション部１１、キュー制御部１２、デキュー部１３、ソフトウェアプログラム制御部１４、実行監視部１５は、プログラムに従ってコンピュータのプロセッサが行う動作のモジュールを表しており、これらは一体として演算装置１Ａの機能を構成する。
【００２０】
サーバアプリケーション部１１は、クライアント端末２からの要求に応じたトランザクション処理（ソフトウェアプログラム）をプロセスで実行する。サーバアプリケーション部１１とデキュー部１３は、並列に動作するプロセスの数だけ構築される。キュー制御部１２は、サーバコンピュータ１で実行されるソフトウェアプログラムの種類ごとに作成される。例えば、サーバコンピュータ１で１種類のソフトウェアプログラムが実行され、２プロセス多重で動作している場合は、サーバアプリケーション部１１とデキュー部１３が２つ設けられ、キュー制御部１２、ソフトウェアプログラム制御部１４、実行監視部１５は１つ設けられる。
【００２１】
記憶装置１Ｂは、設定記憶部１６を備えている。設定記憶部１６には、ソフトウェアプログラムの設定内容が記憶されている。運用管理端末３を介して利用者から設定変更要求を受けた場合、演算装置１Ａは、記憶されている設定内容を変更する。
【００２２】
なお、演算装置１Ａには、トランザクションを実行するために必要な他の機能や一般的なサーバコンピュータが備える他の機能なども構築されており、記憶装置１Ｂにも他の必要な情報が記憶されているが、かかる説明は省略する。
【００２３】
サーバコンピュータ１の構成についてさらに詳述する。
サーバアプリケーション部１１は、クライアント端末２から要求されたトランザクション処理を実行する。
【００２４】
キュー制御部１２は、クライアント端末２からネットワークＮを介して送信された処理要求を受信し、保留しておく。サーバアプリケーション部１１では、動作するプロセスに対して同時に処理できるトランザクション数の上限が決められている。この上限を超える要求を同時に受けた場合、後から来た要求はキュー制御部１２に滞留することとなる。
【００２５】
デキュー部１３は、対応するサーバアプリケーション部１１におけるトランザクション処理の実行を制御する。具体的には、実行監視部１５を介して、サーバアプリケーション部１１がトランザクション処理を実行可能な状態であることを確認したら、キュー制御部１２から次に実行する処理要求を取り出し、サーバアプリケーション部１１に通知して、処理要求に基づいたトランザクション処理を開始させる。トランザクション処理の実行結果は、クライアント端末２に通知してもよく、このとき、キュー制御部１２を介して通知してもよい。
【００２６】
ソフトウェアプログラム制御部１４は、サーバアプリケーション部１１とデキュー部１３の起動と停止をプロセス単位で制御する。
【００２７】
実行監視部１５は、サーバアプリケーション部１１の実行状態、つまり実行中のトランザクション数をプロセスごとに管理する。サーバアプリケーション部１１が要求された処理を開始、もしくは完了すると、その情報が実行監視部１５に伝えられる。デキュー部１３は、実行監視部１５を介して、対応するサーバアプリケーション部１１における実行中のトランザクション数が、そのプロセスの同時可能処理量の上限と等しい場合、デキューせず、空きができるまで待つ。
【００２８】
次に、本実施形態によるサーバコンピュータ１の動作について、図３を用いて説明する。
まず、利用者は、運用管理端末３を用いて設定変更の指示を出す（ステップＳ１０）。サーバコンピュータ１が設定変更指示を受信すると、演算装置１Ａが設定記憶部１６に記録された設定内容を変更する（ステップＳ１１）。
【００２９】
設定記憶部１６に記憶された設定の変更が終わると、運用管理端末３からソフトウェアプログラム制御部１４に、設定変更をサーバアプリケーションに反映させるよう、指示が通知される（ステップＳ１２）。ソフトウェアプログラム制御部１４では、まず、複数動作しているサーバアプリケーション部１１のプロセスの一部に対して、設定変更を反映させる。例えば、サーバアプリケーション部１１Ａとサーバアプリケーション部１１Ｂの２つのサーバアプリケーションプロセスが動作している場合、まずサーバアプリケーション部１１Ａに対して設定変更を反映させる。
【００３０】
ソフトウェアプログラム制御部１４は、設定変更を反映させたいサーバアプリケーション部１１Ａに対応するデキュー部１３Ａに停止指示を通知する（ステップＳ１３）。デキュー部１３Ａは、停止指示を受信して停止する（ステップＳ１４）。次に、ソフトウェアプログラム制御部１４は、実行監視部１５に、サーバアプリケーション部１１Ａの実行状態を監視させる（ステップＳ１５）。
【００３１】
実行監視部１５は、サーバアプリケーション部１１Ａで実行中の処理が完了するまで待機し、すべての処理が完了して、サーバアプリケーション部１１Ａで何もトランザクション処理が行われていない状態になると、ソフトウェアプログラム制御部１４に、その旨を通知する（ステップＳ１６）。
【００３２】
ソフトウェアプログラム制御部１４は、サーバアプリケーション部１１Ａに停止指示を通知する（ステップＳ１７）。サーバアプリケーション部１１Ａは、停止指示を受信して停止する（ステップＳ１８）。ソフトウェアプログラム制御部１４は、サーバアプリケーション部１１Ａの停止を確認すると、サーバアプリケーション部１１Ａとデキュー部１３Ａに起動指示を通知する（ステップＳ１９）。サーバアプリケーション部１１Ａは、起動指示を受信して起動を開始する（ステップＳ２０）。また、デキュー部１３Ａも起動指示を受信して起動する（ステップＳ２１）。サーバアプリケーション部１１Ａは、起動処理の過程で、ステップＳ１１で変更された設定を読み込む（ステップＳ２２）。
【００３３】
サーバアプリケーション部１１Ａは、起動が完了すると、その旨をソフトウェアプログラム制御部１４に通知する（ステップＳ２３）。これで、サーバアプリケーション部１１Ａに対する設定変更の反映が完了する。なお、ステップＳ１３からステップＳ２３までの処理が実行されている間にクライアント端末２から処理要求が送信されると、処理要求はキュー制御部１２に保留される。そして、サーバアプリケーション部１１Ａとデキュー部１３Ａの再起動後にデキュー部１３によって処理要求が取り出されてサーバアプリケーション部１１Ａで実行される。
【００３４】
次に、サーバアプリケーション部１１Ｂについて、サーバアプリケーション部１１Ａと同様にステップＳ１３からステップＳ２３までの処理が実行される。ソフトウェアプログラム制御部１４は、ステップＳ１３からステップＳ２３までの処理が全サーバアプリケーションプロセス（ここでは１１Ａと１１Ｂの２つ）に対して完了したことを確認したら（ステップＳ２４）、運用管理端末３に通知する。これで、全サーバアプリケーション部に対する設定変更の反映が完了する（ステップＳ２５）。
【００３５】
以上のように、本実施形態によれば、サーバアプリケーション部１１に対する設定変更が要求されたら、実行監視部１５がソフトウェアプログラム制御部１４の指示に基づいてサーバアプリケーション部１１の実行状態をサーバアプリケーションプロセス単位で監視し、あるプロセスの実行中の処理が完了して、何もトランザクション処理が行われていない状態になってからサーバアプリケーション部１１のプロセス単位での再起動を行うようにしたので、外部の基盤技術を利用している場合のように、起動中に設定変更することが困難なソフトウェアプログラムについても、トランザクション処理を中断させることなく動的に設定変更を行うことができる。
【００３６】
また、サーバアプリケーション部１１Ａに対して設定変更を反映する間も、クライアント端末２からの処理要求はキュー制御部１２に保留され、サーバアプリケーション部１１Ａの再起動後に、デキュー部１３Ａがキュー制御部１２から処理要求を取り出してサーバアプリケーション部１１に通知し、サーバアプリケーション部１１Ａが処理を実行する。このため、ソフトウェアプログラムが処理要求を受け付けられる状態を維持したまま設定を変更することができる。
【００３７】
また、ソフトウェアプログラム制御部１４が、複数のプロセスに対して順次に停止、再起動を行わせるため、サーバアプリケーション１１Ａに対する設定変更中も、サーバアプリケーション部１１Ｂでクライアント端末２からの処理要求を実行することが可能である。同様に、サーバアプリケーション１１Ｂに対する設定変更中には、サーバアプリケーション１１Ａでクライアント端末２からの処理要求を実行することが可能である。
【００３８】
また、プロセスの停止前にデキュー部１３を停止させるようにしたので、プロセス停止処理中にクライアント端末２からの処理要求を受信して、処理実行に失敗する恐れがない。
【００３９】
なお、一度に処理できる処理量を減らさずに動的変更を実現したい場合、すなわち、常に２プロセスのサーバアプリケーションを動作可能な状態に保ちたい場合には、ステップＳ１３からステップＳ１８までの処理を行う前に、ステップＳ２０からステップＳ２３のプロセス起動処理を行うようにしてもよい。すなわち、変更後の設定を読み込んだサーバアプリケーション部１１Ｃを起動して、一時的に３プロセスが稼働した状態にし、古い設定で動いているサーバアプリケーション部１１Ａまたは１１Ｂを停止して、再起動する。これにより、サーバアプリケーション部１１Ａまたは１１Ｂの停止中も常に２つのサーバアプリケーションプロセスを稼動させておくことができる。また、サーバアプリケーション部１１Ｃ、１１Ｄの２プロセスを新たに起動しておき、サーバアプリケーション部１１Ａ、１１Ｂの２プロセスを一度に停止してもよい。
【符号の説明】
【００４０】
１  サーバコンピュータ、１Ａ  演算装置、１Ｂ  記憶装置、２  クライアント端末、３  運用管理端末、１１、１１Ａ、１１Ｂ  サーバアプリケーション部、１２  キュー制御部、１３  デキュー部、１４  ソフトウェアプログラム制御部、１５  実行監視部、１６  設定記憶部、Ｎ  ネットワーク
【図１】
2011044110.tif 000003
【図２】
2011044110.tif 000004
【図３】
2011044110.tif 000005