[実施の形態1]
以下、図面を参照して本発明の実施の形態について説明する。図1には、実施の形態1にかかるコマンド実行システム1の構成例が示されている。このコマンド実行システム1は、クライアント装置2とサーバ装置3を備える。クライアント装置2は、サーバ装置3にコマンドを実行させるため、ネットワーク(図示せず)を介した通信処理をサーバ装置3と実行する。サーバ装置3は、通信に応じて、コマンドを実行する。
図2には、クライアント装置2の一例が示されている。クライアント装置2は、コマンドライン問い合わせ部4と、コマンドデータ送信部5と、コマンド実行命令送信部6を有する。コマンドライン問い合わせ部4は、サーバ装置3に実行させるコマンドのコマンドラインが正しいか否かの問い合わせを、サーバ装置3に送信する。コマンドデータ送信部5は、実行させるコマンドのコマンドデータ(コマンドが必要とするデータ)を、サーバ装置3に送信する。コマンド実行命令送信部6は、実行させるコマンドのコマンド実行命令を、サーバ装置3に送信する。ここで、コマンドライン問い合わせ部4とコマンドデータ送信部5の少なくともいずれかは、送信を非同期通信で実行する。非同期通信とは、前処理の応答を待たずに通信を実行することをいう。
サーバ装置3は、コマンドライン問い合わせ部4から送信された問い合わせのチェック処理、コマンドデータ送信部5から送信されたコマンドデータの受信処理、及びコマンド実行命令送信部6から送信されたコマンド実行命令に基づくコマンドの実行処理を行う。サーバ装置3は、それぞれの処理結果をクライアント装置2に送信する。
なお、様々な処理を行う機能ブロックとして図2に記載されたクライアント装置2の各要素は、ハードウェア的には、メモリやその他のIC(Integrated Circuit)等の回路で構成することができ、ソフトウェア的には、メモリにロードされたプログラムなどによって実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。これは、実施の形態2、3にかかる装置の各要素についても同様である。
図3は、実施の形態1にかかるコマンド実行システム1が実行する処理の一例を示したフローチャートである。以下、コマンド実行システム1の実行するフローについて説明する。
コマンドをサーバ装置3に実行させる際、コマンドライン問い合わせ部4は、サーバ装置3に実行させるコマンドのコマンドラインが正しいか否かの問い合わせを、サーバ装置3に送信する(ステップS1)。次に、コマンドデータ送信部5は、実行させるコマンドのコマンドデータを、サーバ装置3に送信する(ステップS2)。その後、コマンド実行命令送信部6は、実行させるコマンドのコマンド実行命令を、サーバ装置3に送信する(ステップS3)。なお、ステップS1とS2の少なくともいずれかは非同期通信で実行される。
サーバ装置3は、コマンドライン問い合わせ部4から送信された問い合わせのチェック処理、コマンドデータ送信部5から送信されたコマンドデータの受信処理、及びコマンド実行命令送信部6から送信されたコマンド実行命令に基づくコマンドの実行処理を行う。そして、サーバ装置3は、各処理結果をクライアント装置2に送信する(ステップS4)。例えば、サーバ装置3は、チェック処理、コマンドデータの受信処理、コマンドの実行処理の順に処理を実行するとともに、各処理結果をその順に送信してもよい。
ここで、クライアント装置2は、コマンドの実行が成功したか否かを、サーバ装置3から送信された各処理結果に基づいてユーザに通知してもよい。例えば、クライアント装置2は、送信された処理結果のうち、1つでも正常ではない結果を示す処理結果があった場合に、コマンドの実行が失敗であったことをユーザに通知してもよい。
以上のように、実施の形態1では、クライアント装置2において、コマンドラインが正しいか否かの問い合わせの送信とコマンドデータの送信の少なくともいずれかを、非同期通信の方法を用いて行っている。そのため、全ての送信処理を同期通信で行う場合と比較して、サーバ装置とクライアント装置間の通信時間を短縮することができる。
さらに、サーバ装置3は、チェック処理、コマンドデータの受信処理、コマンドの実行処理の各処理結果をクライアント装置2に送信しているため、クライアント側でコマンド実行の結果を正確に知ることができる。
なお、実施の形態1においては、クライアント装置、サーバ装置ともに1台ずつ設けられている例を示したが、同じ処理を実行するクライアント装置、サーバ装置ともに複数台設けられていてもよい。
[実施の形態2]
実施の形態2では、本発明にかかるコマンド実行システムの具体例について、さらに詳細に説明する。実施の形態2にかかるコマンド実行システム1は、図1に示した通り、クライアント装置2とサーバ装置3を備える。なお、サーバ装置3は、Java(登録商標)プログラムが提供する情報管理基盤のMBean(Managed Bean)サーバを有する、クライアントサーバモデルのWebサーバ又はアプリケーションサーバの装置である。
図4には、実施の形態2にかかるクライアント装置2の一例が示されている。クライアント装置2は、コマンドライン問い合わせ部11と、コマンドデータ送信部12と、コマンド実行通信命令部13と、非同期/同期通信制御部14を備える。このコマンドライン問い合わせ部11〜非同期/同期通信制御部14は、サーバ装置3を運用操作するクライアント機能を構成する。なお、図4における矢印は、リクエストの流れを示している。
コマンドライン問い合わせ部11は、ユーザがコマンドの実行を指示した際に、コマンドラインの問い合わせを実行する。コマンドラインの問い合わせを実行する際に、コマンドライン問い合わせ部11は、非同期通信管理部17にそのリクエストを出力する。
コマンドデータ送信部12は、実行されるコマンドにかかるコマンドデータの送信を実行する。また、コマンドデータ送信部12は、後述の割り込み通知部20からの割り込み通知を受信する割り込み受信部15を有する。コマンドデータの送信を実行する際に、コマンドデータ送信部12は、非同期通信管理部17にそのリクエストを出力する。
コマンド実行通信命令部13は、コマンドの実行命令を送信する処理を実行する。また、コマンド実行通信命令部13は、割り込み通知部20からの割り込み通知を受信する割り込み受信部16を有する。コマンドの実行命令の送信を実行する際に、コマンド実行通信命令部13は、同期通信管理部18にそのリクエストを出力する。
非同期/同期通信制御部14は、クライアント装置2がサーバ装置3に送信するデータに応じて、非同期通信と同期通信を切り替えて通信を実行する。非同期/同期通信制御部14は、非同期通信管理部17と、同期通信管理部18と、MBeanサーバ通信部19と、割り込み通知部20を有する。非同期通信管理部17は、コマンドライン問い合わせ部11又はコマンドデータ送信部12から出力されたリクエストを非同期通信でサーバ装置3に送信するように、MBeanサーバ通信部19を制御してリクエストの送信を行う。同期通信管理部18は、コマンド実行通信命令部13から出力されたリクエストを同期通信でサーバ装置3に送信するように、MBeanサーバ通信部19を制御してリクエストの送信を行う。ここで非同期通信とは、前処理の応答を待たずに通信を実行することをいい、同期通信とは、前処理の応答を待って通信を実行することをいう。
MBeanサーバ通信部19は、非同期通信管理部17又は同期通信管理部18の制御に基づいて、サーバ装置3にリクエストを送信する。また、MBeanサーバ通信部19は、非同期通信管理部17又は同期通信管理部18の制御に基づいて、サーバ装置3からリクエストの処理結果を受信する。割り込み通知部20は、MBeanサーバ通信部19が受信した処理結果に基づいて、割り込み通知を発行する。
図5には、サーバ装置3の一例が示されている。サーバ装置3は、MBeanサーバ21と、コマンド実行処理制御部22と、コマンドセッション管理部23と、処理部24を備える。このMBeanサーバ21〜処理部24はアプリケーションサーバを構成する。なお、図5における矢印は、リクエストの流れを示している。サーバ装置3のアプリケーションサーバは、クライアントが複数ある場合に、各クライアントから送信されたリクエストを、クライアント毎に一意に管理する。
MBeanサーバ21は、クライアント装置2のMBeanサーバ通信部19との通信を実行する。また、MBeanサーバ21は、MBeanサーバ通信部19から送信されるコマンドを受け付けるコマンド受付部25を有する。
コマンド実行処理制御部22は、MBeanサーバ21から出力されたコマンドの実行を制御する。また、コマンド実行処理制御部22は、リクエストを投入するための実行処理滞留キュー26を複数有する。
コマンドセッション管理部23は、コマンドのセッションの状態が現在どうであるかを管理する。また、コマンドセッション管理部23は、コマンドのセッションの状態を格納するセッション管理テーブル27を有する。
処理部24は、コマンド実行処理制御部22の制御に基づいて、クライアント機能を実行する。処理部24は、コマンド確認処理部28と、コマンドデータ受信部29と、コマンド実行処理部30を備える。
コマンド確認処理部28は、クライアント装置2から送信されたコマンドラインを確認する。コマンドデータ受信部29は、コマンドデータを受信する処理を実行する。コマンド実行処理部30は、クライアント装置2から送信されたコマンド命令に基づいて、コマンドを実行する。
次に、コマンド実行システム1が実行する処理の流れの概略について説明する。図6は、クライアント装置2の非同期/同期通信制御部14と、サーバ装置3との間の通信処理の一例を示したシーケンス図である。以下、図6に沿って処理の流れを説明する。
ユーザがクライアント装置2を操作することで、コマンドの実行が指示されると、コマンドライン問い合わせ部11は、非同期/同期通信制御部14の非同期通信管理部17(図6中では「非同期」と記載)に、コマンドラインの問い合わせを出力する。非同期通信管理部17は、MBeanサーバ通信部19を制御して、コマンドラインの問い合わせを、非同期通信の手法を用いてサーバ装置3に送信する(ステップS11)。
また、コマンドデータ送信部12は、コマンドの実行指示に応じて、非同期通信管理部17に、コマンドデータを出力する。非同期通信管理部17は、MBeanサーバ通信部19を制御して、コマンドデータを、非同期通信の手法を用いてサーバ装置3に送信する(ステップS12)。この送信処理は、ステップS11の後になされる。ここで、クライアント装置2は非同期通信を実行しているため、コマンドラインの問い合わせの確認結果をサーバ装置3から受信する前に、コマンドデータを送信することができる。また、コマンドライン問い合わせ部11の処理とコマンドデータ送信部12の処理は、別スレッドで実行されている。
サーバ装置3は、クライアント装置2が送信したコマンドラインの問い合わせを、コマンド受付部25で受信する。その後、コマンド実行処理制御部22は、コマンドセッション管理部23にコマンドセッションの状態を問い合わせる。コマンドセッションの状態を問い合わせた後、コマンド実行処理制御部22は、コマンド確認処理部28を制御して、受信したコマンドラインの確認を実行させる(ステップS13)。
コマンド確認処理部28がコマンドラインを確認した後、サーバ装置3は、MBeanサーバ21を用いて、コマンドラインの確認結果をクライアント装置2に送信する(ステップS14)。
また、サーバ装置3は、クライアント装置2が送信したコマンドデータも、コマンド受付部25で受信する。その後、コマンド実行処理制御部22は、コマンドセッション管理部23にコマンドセッションの状態を問い合わせる。コマンドセッションの状態を問い合わせた後、コマンド実行処理制御部22は、コマンドデータ受信部29を制御して、コマンドデータの受信を実行させる(ステップS15)。
コマンドデータ受信部29がコマンドデータを受信した後、サーバ装置3は、MBeanサーバ21を用いて、コマンドデータの受信結果をクライアント装置2に送信する(ステップS16)。この送信処理は、ステップS14の後になされる。
MBeanサーバ通信部19は、クライアント装置2から送信されたコマンドラインの確認結果及びコマンドデータの受信結果を受信する。非同期通信管理部17は、受信した各処理結果が正常であるか否かを確認する(ステップS17)。なお、非同期通信管理部17は、コマンドラインの確認結果、コマンドデータの受信結果を受信する度に、それぞれの処理結果の確認を実行してもよい。
また、コマンド実行通信命令部13は、コマンドの実行指示に応じて、同期通信管理部18(図6中では「同期」と記載)に、コマンド実行命令を出力する。同期通信管理部18は、MBeanサーバ通信部19を制御して、コマンド実行命令を、同期通信の手法を用いてサーバ装置3に送信する(ステップS18)。この送信処理は、非同期通信管理部17の処理とは独立に(並列に)実行される。言い換えれば、同期通信管理部18の処理は、コマンドライン問い合わせ部11の処理やコマンドデータ送信部12の処理とは別のスレッドで実行されている。そのため、非同期通信管理部17が処理結果を確認するステップS17の前に、コマンド実行命令の送信処理を実行することができる。
サーバ装置3は、クライアント装置2が送信したコマンド実行命令を、コマンド受付部25で受信する。その後、コマンド実行処理制御部22は、コマンドセッション管理部23にコマンドセッションの状態を問い合わせる。コマンドセッションの状態を問い合わせた後、コマンド実行処理制御部22は、コマンド実行処理部30を制御して、コマンドの実行処理を行う(ステップS19)。このように、サーバ装置3は、上位の処理の順(コマンドラインの確認、コマンドデータの受信、コマンド実行)に、各処理を実行する。
コマンド実行処理部30がコマンドを実行した後、サーバ装置3は、MBeanサーバ21を用いて、コマンド実行結果をクライアント装置2に送信する(ステップS20)。
MBeanサーバ通信部19は、クライアント装置2から送信されたコマンド実行結果を受信する。同期通信管理部18は、その処理結果が正常であるか否かを確認する(ステップS21)。
ここで、ステップS17及びS21において、処理結果が全て正常であると判定された場合に、同期通信管理部18は、コマンドの実行が成功したことをクライアント装置2の画面に通知する(ステップS22)。この処理を実行することで、ユーザに、コマンドの実行が成功したことを通知することができる。
図7に、ステップS13において、コマンドラインの正常な確認ができなかった場合におけるサーバ装置3の処理例を示す。サーバ装置3は、ステップS13においてコマンドラインの正常な確認ができなかった場合に、異常があることを示す確認結果をクライアント装置2に送信する(ステップS23)。なお、図7におけるステップS11及びS12は、図6に示すステップS11及びS12と同じ処理であるため、説明を省略する。
ここで、サーバ装置3は、コマンドラインの正常な確認ができなかったため、クライアント装置2からコマンドデータが送信された場合でも、コマンドデータの受信処理を実行しない。同様に、サーバ装置3は、クライアント装置2からコマンド実行命令が送信された場合でも、コマンドの実行を行わない。換言すれば、サーバ装置3は、上位の処理で失敗した場合、それ以降の処理を実施しない。従って、コマンド実行ができないことが早期に判明した場合に、サーバ装置3が不要な処理を実行することを抑制している。
次に、図8に、ステップS15において、コマンドデータの正常な受信ができなかった場合におけるコマンド実行システム1の処理例を示す。サーバ装置3は、ステップS15においてコマンドデータの正常な受信ができなかった場合に、異常があることを示す受信結果をクライアント装置2に送信する(ステップS24)。
非同期通信管理部17は、受信したコマンドラインの確認結果及びコマンドデータの受信結果が正常であるか否かを確認する(ステップS25)。ここで、コマンドデータの受信結果が異常であるため、非同期通信管理部17は、同期通信管理部18の処理を中止させるよう制御し、処理を終える(ステップS26)。
同期通信管理部18は、非同期通信管理部17の制御に基づいて、処理を中止する(ステップS27)。つまり、同期通信管理部18は、ステップS21に示すような処理結果の確認を実行しない。また、同期通信管理部18は、コマンドの実行が失敗したことをユーザに通知する(ステップS28)。
なお、サーバ装置3は、コマンドデータの正常な受信ができなかったため、クライアント装置2からコマンド実行命令が送信されているものの(ステップS18)、コマンドの実行を行わない。
なお、ステップS13において、コマンドラインの正常な確認ができなかった場合においても、同期通信管理部18は同様に処理を中止し、コマンドの実行が失敗したことをユーザに通知する。
以上のように、実施の形態2の処理では、コマンドラインの確認、コマンドデータの送信、コマンドの実行の処理を1スレッドではなく複数のスレッドで分割して実行しているため、処理時間を圧縮することができる。さらに、コマンドラインの確認及びコマンドデータの送信を非同期通信で実行している。そのため、クライアント側でサーバ側へのデータ送信処理を実行した後、その処理に関するサーバ側の実行結果の受信を待つことなく、サーバ側で他の処理を実行することができる。以上のように処理を実行するため、コマンドを正常に実行した場合の動作において、コマンド実行システム1が通信に使用する時間を圧縮することができる。一例として、通信の所要時間を1/3にすることができる。
また、コマンド実行処理のみ同期通信を用いて実行されているため、クライアント側に正確な実行結果(コマンドの成功又は失敗)を表示することを保証している。
また、クライアント側には、通信機能として、MBeanサーバと通信可能なMBeanサーバ通信部19が実装されている。このため、既存のMBeanサーバを有するWebサーバ又はアプリケーションサーバに対して、本発明の適用が可能となる。
図9は、クライアント装置2の処理例の詳細を示すフローチャートである。以下、図9を参照して、クライアント装置2の処理についてさらに詳しく説明する。なお、図9の処理は、ユーザがクライアント装置2においてコマンドの実行指示を入力することに応じて開始される。
ユーザがコマンドの実行指示を行うと、クライアント機能におけるコマンドライン問い合わせ部11は、コマンドラインの問い合わせを実行する(ステップS31)。
図10は、コマンドライン問い合わせ部11及びコマンドデータ送信部12の処理の詳細を示すフローチャートである。以下、図10に沿って、コマンドライン問い合わせ部11の処理の詳細について説明する。
コマンドライン問い合わせ部11は、非同期通信管理部17に、データ(コマンドライン問い合わせ)を出力する。非同期通信管理部17は、MBeanサーバ通信部19を制御して、非同期通信でデータの送信を行う(ステップS41)。ここで、コマンドライン問い合わせ部11は、データとともに、コマンドのセッションを一意に定めるための識別子をリクエストに付与して、サーバ側に送信する。サーバ装置3は、この識別子を、コマンドセッション情報として取り扱う。
サーバ側に送信する識別子は、本実施形態では、「<ホスト名>:<MACアドレス>:<OSユーザ名>:<アプリケーションサーバユーザ名>:<16桁の任意の番号>:<機能名称>」で構成される。なお、<機能名称>とは、通信機能を判別するための名称である。この場合、コマンドライン問い合わせ部11は、ステップS41において、以下のような識別子を一例として送信する。
「Testhost:0800274F4B60:osuser:user:0000000000000001:CHK」・・・(1)
(1)において、<ホスト名>が「Testhost」、<MACアドレス>が「0800274F4B60」、<OSユーザ名>が「osuser」、<アプリケーションサーバユーザ名>が「user」、<16桁の任意の番号>が「0000000000000001」、<機能名称>が「CHK」である。なお、「CHK」は、コマンド問い合わせ機能の機能名称である。
非同期通信管理部17は、MBeanサーバ通信部19がコマンドライン問い合わせについてサーバ側からの確認結果を受信した場合、返却値が正常であるか否かを判定する(ステップS42)。つまり、非同期通信管理部17は、サーバ装置3においてコマンドラインの確認が正常にできたか否かを判定する。
返却値が正常である場合、つまりサーバ装置3においてコマンドラインの確認が正常にできた場合には(ステップS42のYes)、非同期通信管理部17は、割り込み通知部20に割り込み通知を発行させない(ステップS43)。返却値が異常である場合、つまりサーバ装置3においてコマンドラインの確認が正常にできなかった場合には(ステップS42のNo)、非同期通信管理部17は、割り込み通知部20に割り込み通知を発行させる(ステップS44)。ここで、割り込み通知部20は、割り込み受信部15及び16に対して割り込み通知を発行する。
図9に戻り、説明を続ける。コマンドライン問い合わせ部11がデータ(コマンドデータ)の送信を完了した後、コマンドデータ送信部12及びコマンド実行通信命令部13は、それぞれが有する割り込み受信部15及び16に対し、割り込み通知が発行されていたか否かを判定する(ステップS32)。なお、割り込み通知が発行されている場合とは、上述の通り、コマンドライン問い合わせの確認結果において、返却値が異常である場合をいう。割り込み通知が発行されていない場合とは、コマンドライン問い合わせの確認結果において返却値が正常であるか、又はサーバ側からコマンドライン問い合わせの確認結果を未だ受信していない場合をいう。
割り込み受信部15に割り込み通知が発行されていた場合(ステップS32のYes)、コマンド実行通信命令部13及び同期通信管理部18は、割り込みがあったと判定し、コマンド実行通信の処理を終了する。このようにして、非同期通信管理部17は割り込み通知を発行することで、同期通信管理部18の処理を中止させるように制御している。ここで、同期通信管理部18は、処理終了の際、コマンドの実行が失敗したことをユーザに通知する(ステップS33)。ステップS33の後、MBeanサーバ通信部19がコマンド実行結果を受信しても、同期通信管理部18は実行結果の判定を実行しない。
割り込み受信部16に割り込み通知が発行されていた場合には、割り込み受信部15にも割り込み通知が発行されている。このとき、コマンドデータ送信部12は、割り込みがあったと判定し、コマンドデータ送信の処理を終了する。従って、クライアント装置2からサーバ装置3へコマンドデータは送信されない。
割り込み受信部15及び16に割り込み通知が発行されていない場合(ステップS32のNo)、コマンドデータ送信部12は、非同期通信管理部17を用いて、データ(コマンドデータ)の送信を行う(ステップS34)。なお、サーバ側からコマンドライン問い合わせの確認結果を未だ受信していない場合、コマンドデータ送信部12は、サーバ側からの確認結果の返信を待たずに、ステップS34の処理を実行できる。また、コマンドライン問い合わせ部11とコマンドデータ送信部12とは、それぞれ別のスレッドで動作がなされる。
以下、図10に沿って、コマンドデータ送信部12の処理の詳細について説明する。コマンドデータ送信部12は、非同期通信管理部17に、データ(コマンドデータ)を出力する。非同期通信管理部17は、MBeanサーバ通信部19を制御して、非同期通信でデータの送信を行う(ステップS42)。ここで、コマンドデータ送信部12は、データとともに識別子をリクエストに付与してサーバ側に送信する。この識別子の詳細は、上述の通りである。なお、コマンドデータ送信部12は、識別子の<機能名称>の部分を、コマンドデータ送信機能の機能名称「DATA」として、識別子を送信する。
非同期通信管理部17は、MBeanサーバ通信部19がコマンドライン問い合わせについてサーバ側からの確認結果を受信した場合、返却値が正常であるか否かを判定する(ステップS42)。つまり、非同期通信管理部17は、サーバ装置3においてコマンドラインの確認が正常にできたか否かを判定する。
返却値が正常である場合、つまりサーバ装置3においてコマンドデータの受信が正常にできた場合には(ステップS42のYes)、非同期通信管理部17は、割り込み通知部20に対し、割り込み通知を発行させない(ステップS43)。返却値が異常である場合、つまりサーバ装置3においてコマンドデータの受信が正常にできなかった場合には(ステップS42のNo)、非同期通信管理部17は、割り込み通知部20に対し、割り込み通知を発行させる(ステップS44)。
図9に戻り、説明を続ける。コマンドデータ送信部12がデータ(コマンドデータ)の送信を完了した後、コマンドデータ送信部12及びコマンド実行通信命令部13は、それぞれが有する割り込み受信部15及び16に対し、割り込み通知が発行されていたか否かを判定する(ステップS35)。なお、割り込み通知が発行されている場合とは、コマンドライン問い合わせの確認結果及びコマンドデータについての受信結果の少なくともいずれかにおいて、返却値が異常である場合をいう。割り込み通知が発行されていない場合とは、異常な返却値を受信していない場合をいう。具体的には、以下の3つの場合が想定される。第1に、コマンドライン問い合わせの確認結果及びコマンドデータについての受信結果を受信していて、いずれの返却値も正常である場合である。第2に、コマンドライン問い合わせの確認結果について正常な返却値を受信していて、コマンドデータについての受信結果は受信していない場合である。第3に、コマンドライン問い合わせの確認結果及びコマンドデータについての受信結果を受信していない場合である。
割り込み受信部16に割り込み通知が発行されていた場合(ステップS35のYes)、コマンド実行通信命令部13及び同期通信管理部18は、割り込みがあったと判定し、コマンド実行通信の処理を終了する。このとき、同期通信管理部18は、コマンドの実行が失敗したことをユーザに通知する(ステップS33)。
同様に、コマンドライン問い合わせ部11は、コマンドライン問い合わせの処理を終了する。従って、ステップS33の後、MBeanサーバ通信部19がコマンドライン問い合わせの受信結果を受信しても、非同期通信管理部17は受信結果の判定を実行しない。
割り込み受信部15及び16に対し、割り込み通知が発行されていない場合には(ステップS35のNo)、コマンド実行通信命令部13の通信処理を開始する(ステップS36)。ここで、コマンドデータ送信部12及びコマンド実行通信命令部13は、それぞれが有する割り込み受信部15及び16に対し、割り込み通知が発行されていたか否かを判定する(ステップS37)。割り込み通知が発行されていた場合の処理(ステップS33)は、上述と同様であるため、説明を省略する。割り込み通知が発行されている場合及び発行されていない場合の詳細は、ステップS35と同様である。
割り込み通知が発行されていない場合(ステップS37のNo)、コマンド実行通信命令部13は、同期通信管理部18に、コマンド実行命令を出力する。同期通信管理部18は、MBeanサーバ通信部19を制御して、同期通信でコマンド実行命令の送信を行う(ステップS38)。なお、サーバ側からコマンドデータの受信結果を未だ受信していない場合、コマンド実行通信命令部13は、コマンドデータの受信結果の返信を待たずに、ステップS38の処理を実行できる。
ここで、コマンド実行通信命令部13は、コマンド実行命令とともに識別子をリクエストに付与してサーバ側に送信する。この識別子の詳細は、上述の通りである。なお、コマンド実行通信命令部13は、識別子の<機能名称>の部分を、コマンド実行命令通信機能の機能名称「EXE」として、識別子を送信する。
コマンドデータ送信部12及びコマンド実行通信命令部13は、それぞれが有する割り込み受信部15及び16に対し、割り込み通知が発行されていたか否かを判定する。割り込み通知が発行されている場合及び発行されていない場合の詳細は、ステップS35と同様である。さらに、同期通信管理部18は、MBeanサーバ通信部19がコマンド実行結果についてサーバ側から実行結果を受信した場合、返却値が正常であるか否かを判定する(ステップS39)。つまり、同期通信管理部18は、サーバ装置3においてコマンド実行が正常にできたか否かを判定する。
割り込み通知が発行されているか、又は返却値が異常である場合(ステップS39のNo)、コマンド実行通信命令部13及び同期通信管理部18は、サーバ装置3においてコマンド実行が正常にできなかったと判定し、コマンド実行通信の処理を終了する。このとき、同期通信管理部18は、コマンドの実行が失敗したことをユーザに通知する(ステップS33)。
割り込み通知が発行されておらず、かつ返却値が正常である場合(ステップS39のYes)、コマンド実行通信命令部13及び同期通信管理部18は、サーバ装置3においてコマンド実行が正常にできたと判定し、コマンド実行通信の処理を終了する。なお、サーバ装置3は、マンドライン問い合わせの確認結果、コマンドデータについての受信結果、コマンド実行の実行結果の順に処理結果を返信する。従って、コマンド実行の実行結果の返却値が正常であり、かつ、コマンド実行の実行結果が返信されるまで割り込み通知が発行されていない場合には、サーバ装置3においてコマンド実行が正常にできたと判定することができる。このとき、同期通信管理部18は、コマンドの実行が成功したことをユーザに通知する(ステップS40)。
以上のように、クライアント装置2において、下位の処理が実行前又は実行中に、上位の処理において異常を示す値がサーバ装置3から返信された場合には、クライアント装置2は下位の処理の実行を中止する。この措置を行うため、クライアント装置2において不要な処理を実行する必要がなくなる。
図11A及び図11Bは、サーバ装置3にリクエストが送信された場合における、サーバ装置3の処理例の詳細を示すフローチャートである。以下、図11A及び図11Bを参照して、サーバ装置3の処理についてさらに詳しく説明する。
サーバ装置3では、コマンド受付部25において、クライアント装置2から送信されたリクエストを受信する(ステップS51)。コマンド受付部25は、受信したリクエストをコマンド実行処理制御部22に受け渡す(ステップS52)。
コマンド実行処理制御部22は、コマンドセッション管理部23に対して、リクエストに付与された識別子に基づき、リクエストの問い合わせを行う(ステップS53)。
図12は、問い合わせを受けたコマンドセッション管理部23が実行する処理例を示したフローチャートである。以下、図12に沿って、コマンドセッション管理部23が実行する処理を説明する。
コマンドセッション管理部23は、受信したコマンドセッション情報(識別子)に基づいて問い合わせ処理を開始する(ステップS63)。
コマンドセッション管理部23は、受信したコマンドセッション情報において、機能名以外の部分をKey部分、機能名をValue部分に分割する(ステップS64)。このように分割した後、コマンドセッション管理部23は、セッション管理テーブル27を参照して確認を行う。ここで、セッション管理テーブル27には、Key−Value形式のテーブルが構築されている。
図13は、セッション管理テーブル27に構築されたKey−Value形式の一例である。図13においては、「Testhost1:0800274F4B60:osAuser:user:0000000000000001」のKeyに対して、Value「CHK」がセッション管理テーブル27に格納されている。また、「Testhost2:0800274F4B61:osBuser:user:0000030000000012」のKeyに対して、Value「EXE」がセッション管理テーブル27に格納されている。このように、セッション管理テーブル27は、複数のユーザ装置からのセッション情報を格納することができる。
図12に戻り、説明を続ける。ステップS64の後、コマンドセッション管理部23は、リクエスト(受信したコマンドセッション情報)のKeyに該当するセッションがセッション管理テーブル27上に格納されているか否かを確認する(ステップS65)。換言すれば、コマンドセッション管理部23は、セッション管理テーブルに、リクエストのKeyの記載があるか否かを確認する。
リクエストのKeyに該当するセッションが格納されていない場合(ステップS65のNo)、リクエストのValue(格納対象となるValue)が「CHK」であるか否かを判定する(ステップS66)。つまり、コマンドセッション管理部23は、サーバ装置3が受信したリクエストがコマンド問い合わせであるか否かを判定する。受信したリクエストがコマンド問い合わせ以外の処理であって、前の処理が正常に終了している場合には、該当するセッションがセッション管理テーブル27に格納されている。従って、受信したリクエストがコマンド問い合わせ以外の処理である場合には、受信したリクエストについて、前の処理が正常に行われていないことを意味する。
リクエストのValueが「CHK」でない場合(ステップS66のYes)、コマンドセッション管理部23は、セッション処理を中止する(ステップS67)。そして、コマンドセッション管理部23は、問い合わせの結果として、異常値を出力する(ステップS68)。
リクエストのValueが「CHK」である場合(ステップS66のYes)、コマンドセッション管理部23は、セッション管理テーブル27を更新する(ステップS69)。具体的には、コマンドセッション管理部23は、受信したコマンドセッション情報を、セッション管理テーブル27にKey−Value形式で新たに書き込む。この処理を行うことで、コマンド問い合わせがあったことが、セッション管理テーブル27に格納される。
また、コマンドセッション管理部23は、問い合わせの結果として、正常値を出力する(ステップS70)。
ステップS65において、リクエストのKeyに該当するセッションが格納されている場合(ステップS65のYes)、コマンドセッション管理部23は、格納されている該当のセッションのValueが、リクエストにおけるValueの前の機能名であるか否かを判定する(ステップS71)。
例えば、リクエストにおけるValueが「DATA」である場合、コマンドセッション管理部23は、格納されている該当のセッションのValueが「CHK」であるか否かを判定する。また、リクエストにおけるValueが「EXE」である場合、コマンドセッション管理部23は、格納されている該当のセッションのValueが「DATA」であるか否かを判定する。リクエストがあったユーザ装置に関して、前のリクエストが正常に実行されている場合、前のリクエストにおけるセッションがセッション管理テーブル27に格納される。従って、コマンドセッション管理部23は、前の処理が正常に行われたか否かを、ステップS71で判定している。
格納されている該当のセッションのValueが、リクエストにおけるValueの前の機能名でない場合(ステップS71のNo)、コマンドセッション管理部23は、セッション処理を中止するとともに(ステップS67)、異常値を出力する(ステップS68)。
格納されている該当のセッションのValueが、リクエストにおけるValueの前の機能名である場合(ステップS71のYes)、コマンドセッション管理部23は、セッション管理テーブル27に格納された該当のセッションのValueを、リクエストにおけるValueに更新する(ステップS72)。そして、コマンドセッション管理部23は、問い合わせの結果として、正常値を出力する(ステップS73)。
図11A及び図11Bに戻り、サーバ装置3の処理の説明を続ける。コマンド実行処理制御部22は、コマンドセッション管理部23が出力した値が、正常値か異常値であるか(問い合わせ結果が正常か否か)を判定する(ステップS54)。
問い合わせ結果が異常であった場合には(ステップS54のNo)、コマンド実行処理制御部22は、MBeanサーバ21を用いて、クライアント装置2に対して、異常値を含む処理結果を返信する。そして、コマンド実行処理制御部22は、処理を終了する(ステップS55)。このため、コマンド実行処理制御部22は、問い合わせたリクエストについての後続のリクエストがクライアント装置2から送信された場合であっても、処理部24における処理を実行させない。後続のリクエストに対応するセッション情報について、セッション管理テーブル27に格納された当該セッション情報が更新されていないため、コマンドセッション管理部23は、後続のリクエストの問い合わせの結果として異常値を出力するためである。
問い合わせ結果が正常であった場合には(ステップS54のYes)、コマンドセッション管理部23は、実行処理滞留キュー26に受信したリクエストを投入する(ステップS56)。実行処理滞留キュー26に投入されたリクエストは、リクエストの種類(Valueの値)に応じて、コマンド確認処理部28、コマンドデータ受信部29、コマンド実行処理部30のいずれかで処理される。具体的には、リクエストのValueの値が「CHK」であればコマンド確認処理部28で、値が「DATA」であればコマンドデータ受信部29で、値が「EXE」であればコマンド実行処理部30で、それぞれ処理される。
実行処理滞留キュー26にリクエストを投入後、コマンドセッション管理部23は、投入したリクエストが正常に完了したか否かを判定する(ステップS57)。
リクエストが正常に完了しなかった場合(ステップS57のNo)、コマンドセッション管理部23は、セッション管理テーブル27に格納された、リクエストに対応するセッションを削除する(ステップS58)。そして、コマンド実行処理制御部22は、MBeanサーバ21を用いて、クライアント装置2に対し、異常値を含む処理結果を返信して、処理を終了する(ステップS55)。
リクエストが正常に完了した場合(ステップS57のYes)、コマンドセッション管理部23は、リクエストにおけるValueが「EXE」であるか(リクエストがコマンド実行処理であるか)否かを判定する(ステップS59)。
リクエストにおけるValueが「EXE」ではない(即ち「CHK」又は「DATA」である)場合(ステップS59のNo)、コマンド実行処理制御部22は、MBeanサーバ21を用いて、クライアント装置2に対し、正常値を含む処理結果を返信する。そして、コマンド実行処理制御部22は、処理を終了する(ステップS60)。
リクエストにおけるValueが「EXE」である場合(ステップS59のYes)、コマンド実行処理制御部22は、セッション管理テーブル27から、リクエストに対応するセッションを削除する(ステップS61)。この処理を行う理由は、セッションが最後まで正常に完了したため、セッション管理テーブル27にそのセッション情報を保持する必要がないためである。そして、コマンド実行処理制御部22は、MBeanサーバ21を用いて、クライアント装置2に対し、正常値を含む処理結果を返信して、処理を終了する(ステップS60)。
クライアント装置2及びサーバ装置3が以上のように処理を実行するため、コマンド実行システム1は、図6〜図9に示す全体動作を実行することができる。
クライアントサーバモデルのシステムにおいて、大規模ユーザ向けにシステムを構築する場合、サーバの実装は、JavaEE(java Platform, Enterprise Edition)の仕様に則ったJavaプログラムで構築されることが多い。このJavaEE仕様に則ったサーバは、サーバ上でユーザが作成した任意のアプリケーションを動作するものであり、一般にアプリケーションサーバと呼称される。
このアプリケーションサーバは、アプリケーションサーバ毎にアプリケーション固有の運用操作を必要とする。この運用操作は、アプリケーションサーバが提供するクライアントを利用して行うことを想定している。実際に使用する場合、運用者はクライアントマシンにアプリケーションサーバの提供するクライアント機能をインストールして、そのクライアント機能を利用する。この使用ケースの一つに、ユーザがコマンドを実行するパターンがある。
一般に、アプリケーションサーバを運用する場合、アプリケーションサーバの運用者は、アプリケーションサーバが用意した運用管理機能を有するクライアントを利用して、アプリケーションサーバに対して設定の変更を行っていた。このクライアントとアプリケーションサーバは、対で動作する。
図14は、クライアントを有するクライアント装置101と、アプリケーションサーバを有するサーバ装置102とにおいて、ユーザがコマンドを実行する場合の処理をシーケンスで示したものである。以下、各装置が実行する処理の概略について説明する。
ユーザがクライアント装置101を操作することで、コマンドの実行が指示されると、クライアント装置101は、指示されたコマンドのコマンドラインを確認する(ステップS101)。コマンドラインの確認後、クライアント装置101は、コマンドの実行処理を開始する(ステップS102)。
コマンドの実行処理を開始後、クライアント装置101は、サーバ装置102に対して、コマンドデータを送信する(ステップS103)。サーバ装置3は、送信されたコマンドデータを受信し(ステップS104)、その受信結果をクライアント装置101に送信する(ステップS105)。
クライアント装置101は、サーバ装置3から返信された受信結果を確認し(ステップS106)、その後、サーバ装置102にコマンド実行命令を送信する(ステップS107)。サーバ装置3は、送信されたコマンド実行命令に基づいてコマンドを実行し(ステップS108)、コマンドの実行結果をクライアント装置101に送信する(ステップS109)。
クライアント装置101は、送信されたコマンドの実行結果を確認し(ステップS110)、実行結果に基づいて、ユーザにコマンドの実行が成功したか否かを通知する(ステップS111)。
以上の処理において、クライアント装置101とサーバ装置102間の通信は、同期通信を用いて実行されている。
ただし、以上のようなクライアント装置101とサーバ装置102の構成には、以下のようなデメリットがあった。図15は、サーバ装置が複数存在する場合の、サーバ装置及びクライアント装置Cの接続関係を示したイメージ図である。図15において、サーバ装置は2台のサーバ装置A及びBが存在しており、サーバ装置AにはアプリケーションサーバAが搭載されるとともに、サーバ装置BにはアプリケーションサーバBが搭載されている。このように、アプリケーションサーバが複数存在すると、クライアント装置C(運用者の環境)に、アプリケーションサーバAに対応するクライアントAと、アプリケーションサーバBに対応するクライアントBの両方を用意する必要がある。
また、図16で示される通り、アプリケーションサーバA側で修正が行われると、対応するクライアントAについても修正を行う必要がある。同様に、アプリケーションサーバB側で修正が行われると、対応するクライアントBについても修正を行う必要がある。具体的には、アプリケーションサーバの修正の度に、パッチ又はバージョンアップという形式でアプリケーションサーバの修正がなされる必要があり、クライアントも同様の修正を行う必要があった。このように、アプリケーションサーバに対応するクライアントをクライアント装置側に搭載させると、アプリケーションサーバが複数存在する場合に、クライアントの用意及び更新等の管理に手間がかかってしまっていた。クライアントの更新が頻繁に行われる場合、このデメリットはさらに大きくなる。
このため、昨今では、クライアント側には基盤となる機能しか保持させず、実際の処理機能をサーバ側に一括して持たせるように、クライアントとサーバの構成が変更されている。
図17は、クライアント装置Cに、サーバ装置A及びBに共通する共通クライアント機能(基板となる機能)のみを保持させるようにした状態を示している。サーバ装置A及びBは、クライアント装置Cからのコマンドに応じて、コマンドを実行可能なアプリケーションサーバA及びBが、それぞれ格納されている。クライアントとサーバをこのように構成することで、クライアントの共通化が図られている。
このようにクライアントとサーバを構成するとき、コマンドの実行処理は、クライアントとサーバとの間で、次の3つの処理がなされることで完了する。
(1)コマンドラインの確認
(2)コマンドデータの送信
(3)コマンドの実行
しかしながら、以上の処理を実行する際には、クライアント側にコマンドの処理機能が存在していた上述の場合と比較すると、データの送受信回数が増加する。そのため、結果として、コマンドの処理速度が遅くなることが課題となっていた。以下、この課題について詳細に説明する。
図18は、共通クライアントを有するクライアント装置101と、アプリケーションサーバを有するサーバ装置102において、ユーザがコマンドを実行する場合の処理をシーケンスで示したものである。以下、各装置が実行する処理の概略について説明する。
ユーザがクライアント装置101を操作することで、コマンドの実行が指示されると、クライアント装置101は、指示されたコマンドのコマンドラインをサーバ装置102に確認させるため、コマンドラインをサーバ装置102に送信する(ステップS112)。サーバ装置3は、送信されたコマンドラインを確認し(ステップS113)、その確認結果をクライアント装置101に送信する(ステップS114)。
クライアント装置101は、返信された確認結果を確認し(ステップS115)、その後、コマンドデータをサーバ装置102に送信する(ステップS103)。以降の処理は、図14で示した処理と同様であるため、説明を省略する。このように、アプリケーションサーバ側でコマンドラインの確認処理を行う必要があるため、その処理に伴い、クライアントとアプリケーションサーバとの間で、ステップS112及びS114の通信が発生する。この通信のため、コマンド実行において、運用操作速度の低下が生ずる。
これに対し、実施形態2にかかる発明では、クライアントとアプリケーションサーバ間の処理を、非同期/同期通信制御部14が制御して実行する。このため、(1)〜(3)の処理において、(1)及び(2)の処理を非同期で行うことが可能となる。従って、コマンドの応答速度の向上が期待される。
また、クライアント装置2は、非同期通信で送信を実行した問い合わせ又はコマンドデータについて、正常なチェック処理又は受信処理ができなかったことを示す処理結果がサーバ装置3から送信された場合に、コマンド実行通信命令部13の処理を中止できる。具体的には、処理結果に応じて割り込み処理を行うことで、コマンド実行通信命令部13の処理を中止させることができる。従って、コマンド実行処理が失敗した場合において、不要となったコマンド実行通信命令部13の処理を行うことを抑制することができる。
また、クライアント装置2は、問い合わせについて正常なチェック処理ができなかったことを示す処理結果がサーバ装置3から送信された場合に、コマンドデータ送信部12の処理を中止させることができる。従って、コマンド実行処理が失敗した場合において、不要となったコマンドデータ送信部12の処理を行うことを抑制することができる。
また、サーバ装置3は、コマンド実行処理制御部22及びコマンドセッション管理部23を用いて、クライアント側から要求されたリクエストについてのセッション情報を確認し、処理を実行するか否かを判断している。このため、不要な処理をサーバ側で実行することを抑制することができる。また、非同期通信及び同期通信が混在していても、サーバ側で順序処理を実行することができる。
また、サーバ装置3は、コマンドデータを受信した場合に、コマンドデータのコマンドについての問い合わせを以前に受信したか否かを判定する。以前に問い合わせを受信していない場合に、サーバ装置3は、正常な受信処理ができなかったことを示す処理結果をクライアント装置2に送信することができる。この処理を行うことで、クライアント側において、コマンド実行処理が失敗したことを知ることができる。
また、サーバ装置3は、コマンド実行命令を受信した場合に、コマンド実行命令のコマンドについてのコマンドデータを以前に受信したか否かを判定する。サーバ装置3は、コマンドデータを以前に受信していない場合に、正常なコマンド実行処理ができなかったことを示す処理結果をクライアント装置2に送信することができる。この処理を行うことで、クライアント側において、コマンド実行処理が失敗したことを知ることができる。
[実施の形態3]
実施の形態3では、非同期通信で行う処理内容を、実施の形態2から変更するバリエーションについて説明する。実施の形態2では、クライアント装置2において、コマンドラインの確認及びコマンドデータの送信を非同期通信を用いて実行し、コマンドの実行を同期通信を用いて実行した。しかしながら、コマンドラインの確認及びコマンドデータの送信のうち一方を非同期通信で実行し、他方を同期通信で実行してもよい。実施の形態3では、コマンドラインの確認を非同期通信を用いて実行し、コマンドデータの送信及びコマンドの実行を同期通信を用いて実行する例について説明する。
なお、以下の説明においては、実施の形態2と同一の要素については同一の符号を付して説明を行う。また、実施の形態2と同一の説明については、適宜省略する。
図19には、実施の形態3にかかるクライアント装置2のブロック図の一例が示されている。図19における矢印は、リクエストの流れを示している。ここで、実施の形態3にかかるコマンドデータ送信/コマンド実行通信命令部31は、コマンドデータの送信及びコマンド実行命令を実行する際に、非同期通信管理部17ではなく、同期通信管理部18にそのリクエストを出力する。コマンドデータの送信及びコマンド実行命令の実行処理は、実施の形態2と異なり、1つのスレッドで実行される。
コマンドデータ送信/コマンド実行通信命令部31は、実施の形態2にかかるコマンドデータ送信部12及びコマンド実行通信命令部13に対応する。また、コマンドデータ送信/コマンド実行通信命令部31は、割り込み受信部15を備える。なお、その他のクライアント装置2の構成とサーバ装置3の構成については、実施の形態2に示した通りであるため、説明を省略する。
次に、実施の形態3にかかるコマンド実行システム1が実行する処理の流れの概略について説明する。図20は、クライアント装置2の非同期/同期通信制御部14と、サーバ装置3との間の通信処理の一例を示したシーケンス図である。以下、図20に沿って処理の流れを説明する。なお、図20のステップS11、S13及びS14の処理は図6と同じであるため、説明を省略する。
MBeanサーバ通信部19は、クライアント装置2から送信されたコマンドラインの確認結果を受信する。非同期通信管理部17は、受信した処理結果が正常であるか否かを確認する(ステップS71)。
また、ユーザのコマンド実行指示に応じて、コマンドデータ送信/コマンド実行通信命令部31は、同期通信管理部18に、コマンドデータを出力する。ステップS11のコマンドラインの送信後、同期通信管理部18は、MBeanサーバ通信部19を制御して、コマンドデータを、同期通信の手法を用いてサーバ装置3に送信する(ステップS72)。ここで、コマンドラインの送信処理と、コマンドデータの送信及びコマンド実行命令の実行処理とは、異なるスレッドで実行される。また、コマンドデータの送信は、コマンドラインの問い合わせの確認結果をサーバ装置3から受信する前に(ステップS71の処理の前に)実行することもできる。
サーバ装置3のステップS15及びS16の処理は図6と同じであるため、説明を省略する。
MBeanサーバ通信部19は、クライアント装置2から送信されたコマンドデータの受信結果を受信する。同期通信管理部18は、受信した処理結果が正常であるか否かを確認する(ステップS73)。
受信した処理結果が正常である場合、コマンドデータ送信/コマンド実行通信命令部31は、同期通信管理部18にコマンド実行命令を出力する。同期通信管理部18は、MBeanサーバ通信部19を制御して、コマンド実行命令を、同期通信の手法を用いてサーバ装置3に送信する(ステップS74)。
サーバ装置3のステップS19及びS20の処理は図6と同じであるため、説明を省略する。
MBeanサーバ通信部19は、クライアント装置2から送信されたコマンド実行結果を受信する。同期通信管理部18は、その処理結果が正常であるか否かを確認する(ステップS75)。ステップS21において、処理結果が正常であると判定された場合に、同期通信管理部18は、コマンドの実行が成功したことをクライアント装置2の画面に通知する(ステップS76)。この処理を実行することで、ユーザに、コマンドの実行が成功したことを通知することができる。
図21は、ステップS13において、コマンドラインの正常な確認ができなかった場合におけるコマンド実行システム1の処理例である。サーバ装置3は、ステップS15においてコマンドデータの正常な受信ができなかった場合に、異常があることを示す確認結果をクライアント装置2に送信する(ステップS77)。
非同期通信管理部17は、受信したコマンドラインの確認結果が正常であるか否かを確認する(ステップS78)。ここで、コマンドラインの確認結果が異常であるため、非同期通信管理部17は、同期通信管理部18の処理を中止するように制御し、処理を終える(ステップS79)。同期通信管理部18は、非同期通信管理部17の中止制御に基づいて、処理を中止する(ステップS80)。
より詳細には、非同期通信管理部17は、割り込み通知部20に割り込み通知を発行させることで、割り込み受信部15に割り込み通知を受信させる。この割り込み通知の受信に応じて、コマンドデータ送信/コマンド実行通信命令部31及び同期通信管理部18は、割り込みがあったと判定し、処理を終了する。
また、同期通信管理部18は、コマンドの実行が失敗したことをユーザに通知する(ステップS81)。
以上の動作においては、コマンドデータの送信処理が非同期通信を用いて実行されるため、実施の形態2と比較すると、コマンド実行の全体の処理速度は低下する。ただし、コマンドラインの確認において問題が生じた場合、クライアント装置2におけるコマンドデータの送信及びコマンド実行の処理が両方とも中止される。また、コマンドデータの送信において問題が生じた場合、クライアント装置2におけるコマンド実行の処理が確実に中止される。そのため、コマンドラインの問い合わせ又はコマンドデータ受信のいずれかが失敗した場合に、実施の形態2と比較すると、クライアント装置2とサーバ装置3との間で通信されるデータの量を削減することが可能になる。そのため、ネットワークにかかる負荷を低減させることが出来る。
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、クライアント装置2において、コマンドラインの確認を同期通信を用いて実行し、コマンドデータの送信を非同期通信を用いて実行し、コマンドの実行を同期通信を用いて実行してもよい。
実施の形態2におけるサーバ装置は、MBeanサーバを有するWebサーバ装置又はアプリケーションサーバ装置として説明したが、サーバ装置はJavaを使用するものに限られない。
上述したクライアント装置及びサーバ装置の処理は、制御方法の1つとして、コンピュータに実行させることができる。例えば、実施の形態1に示した処理のフローを、制御プログラムとしてコンピュータに実行させてもよい。その他の処理フローについても同様にしてコンピュータに実行させることができる。
プログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non-transitory computer readable medium)を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体(例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ)、光磁気記録媒体(例えば光磁気ディスク)、CD−ROM、CD−R、CD−R/W、半導体メモリ(例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM、RAM(Random Access Memory))を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。