図1は、本実施の形態のサーバシステム1の概要図である。
図1に示されるように、本サーバシステム1は、サーバラック11を有する。
サーバラック11は、内部に、ブレードサーバなど複数のシステムボード101a〜n、ディスク装置102a,b、ファン103a,b、電源装置104、及び、サーバ管理装置105を収容している。(便宜上、これらを総称する場合は「機器」と称する。)
また、サーバ管理装置105は、バスの一種であるI2C(Inter−Integrated Circuit)106を介して各機器と通信を行なう。
このうち、システムボード101a〜nは、それぞれ、CPU1014a〜n、及び、該CPU1014a〜nの温度を検出する温度センサ1011a〜nを有する。また、システムボード101a〜nは、各々、I2C106を経由してサーバ管理装置105との通信を行なう通信インターフェース1012a〜nを有する。通信インターフェース1012a〜nは、各々、I2C106を使用して、サーバ管理装置105から受信した指示に基づき、検出した温度センサ1011a〜nからの温度情報をサーバ管理装置105へ送信する。また、システムボード101a〜nは、メインネットワーク2を経由して、実処理の為の通信を行なうネットワークアダプタ1013a〜nを有している。
また、ディスク装置102a,bは、それぞれ、ディスク装置102a、b本体の温度を検出する温度センサ1021a,bを有する。また、ディスク装置102a,bも、I2C106を経由してサーバ管理装置105との通信を行なう通信インターフェース1022a,bを有する。通信インターフェース1022a,bは、各々、I2C106を経由してサーバ管理装置105から受信した指示に基づき、温度センサ1021a,bによって検出された温度情報を、I2C106を経由してサーバ管理装置105へ送信する。また、ディスク装置102a,bは、メインネットワーク2を経由して、処理系の通信を行なうためのネットワークアダプタ1023a,bを有している。
また、ファン103a,bは、サーバラック11内の換気を行なうためのファンである。それぞれのファン103a,bには、それぞれ、ファン103a、bの回転速度を検出する速度センサ1031a,bを有する。また、ファン103a,bも、I2C106を経由してサーバ管理装置105との通信を行なう通信インターフェース1032a,bを有する。通信インターフェース1032a,bは、各々、I2C106を経由してサーバ管理装置105から受信した指示に基づき、速度センサ1031a,bからの速度情報をI2C106を経由してサーバ管理装置105へ送信する。
更に、電源装置104は、外部電源3に接続し、サーバラック内の各機器へ電力を供給するための電源回路1044を搭載している。電源装置104は、外部電源3の給電電圧を検出する電圧センサ1041を有する。また、電源装置104も、I2C106を経由してサーバ管理装置105との通信を行なう通信インターフェース1042を有する。通信インターフェース1042は、各々、I2C106を経由してサーバ管理装置105から受信した指示に基づき、電圧センサ1041が検出した電圧情報を、I2C106を経由してサーバ管理装置105へ送信する。
なお、本実施の形態では、説明の便宜上、各機器に1つのセンサを有しているものとしたが、例えば、ハードディスク装置の場合、ディスクの回転速度や通電時間など、1つの機器に複数のセンサが設けられても良い。
サーバ管理装置105は、監視者向けネットワーク3を経由して、上位装置の一種である監視者端末4a、もしくは、4bから送られてきた要求(リクエスト10590:後述)に応じた指示を、I2C106を介して、サーバラック11内の各機器へ送信する。また、サーバ管理装置105は、I2C106経由で受信した各機器からの情報を収集してレスポンス10801を収集し、監視者向けネットワーク3を経由して、リクエスト10590を送信した監視者端末4aまたは4bに収集結果を送信する。
このサーバ管理装置105について、図2を用いて、以下説明する。
図2は、サーバ管理装置105のハードウエアの概要図である。
図2に示すように、サーバ管理装置105は、内部バス1052を有する。この内部バス1052は、通信インターフェース1051,ネットワークアダプタ1053,CPU(中央処理装置)1054,RAM(読み書き兼用メモリ)1055,ROM(読み出し専用メモリ)1056,及び,ハードディスク装置1057が接続されている。
このうち、通信インターフェース1051は、I2C106と接続されており、図1で示したサーバラック11内の各機器との通信を行なう。また、ネットワークアダプタ1053は、監視者向けネットワーク3に接続されており、この監視者向けネットワーク3を介して、監視者端末4aもしくは4bとの通信を行なう。
CPU1054は、ハードディスク装置1057に格納されている各種プログラムを実行する。また、CPU1054は、ハードディスク装置1057に格納されている各種プログラムの実行に伴い、適宜、ハードディスク装置1057へのアクセスや、RAM1055へのデータの書込み・読み出し、及び、ROM1056からのデータ読み出しを行なう。更に、CPU1054は、これらのプログラム実行に伴い、適宜ネットワークアダプタ1053や通信インターフェース1051の通信制御を行なう。
ハードディスク装置1057に格納されているプログラムは、ネットワーク通信処理プログラム1058、デバイス通信処理プログラム1059、コマンド処理プログラム1060、及び、セッション管理プログラム1061を含む。
CPU1054が、これらのプログラムを処理することで、図3の機能ブロック図に示される各種処理部として機能する。
例えば、CPU1054は、ネットワーク通信処理プログラム1058を実行する事により、ネットワークアダプタ1053を制御して、監視者向けネットワーク3を経由して監視者端末4aや4bと通信するネットワーク通信処理部1058aとして機能する。
また、CPU1054は、デバイス通信処理プログラム1059を実行することにより、通信インターフェース1051を制御し、I2C106を経由して図1のサーバラック11内の各機器との通信を行なうデバイス通信処理部1059aとして機能する。
このネットワーク通信処理部1058aは、受信キュー10581,受信処理部10582、送信キュー10583,及び,送信処理部10584を有する。
受信処理部10582は、ネットワークアダプタ1053が受信した監視者向けネットワーク3からのリクエスト10590を、受信キュー10581に蓄積させる。また、送信処理部10584は、ネットワークアダプタ1053を制御して、送信キュー10583に蓄積されているレスポンス10591を、監視者端末4aもしくは4bへ送信する。受信キュー10581及び送信キュー10583は、共に、FIFO(First―In First−Out)方式によるデータの入出力を行なう。
更に、CPU1054は、コマンド処理プログラム1060を実行することにより、コマンド処理部1060aとして機能する。このコマンド処理部1060aは、ネットワーク通信制御部1058aの受信キュー10581からリクエスト10590を取り出し、デバイス通信処理部1059aを制御して、取り出したリクエスト10590に対応するサーバラック11内の機器へリクエスト(指示)を送信する。また、コマンド処理部1060aは、I2C106を経由して通信インターフェース1051が受信した各種情報をネットワーク通信処理部1058aへ送る制御を行なう。
監視者端末4a、4bよりサーバ管理装置105へ送信されるリクエストの例について、図4を用いて説明する。監視者端末4a、4bから送信されるリクエスト10590は、送信先アドレス10590aを含む。この送信先アドレス10590aは、送信先であるサーバ管理装置105のネットワークアダプタ1053のネットワークアドレスである。また、リクエスト10590は、送信元アドレス10590bを含む。この送信元アドレス10590bは、送信元である監視者端末4aもしくは4bのネットワークアドレスである。更に、リクエスト10590は、監視者端末4aもしくは4bとサーバ管理装置105との間で確立したセッションのセッションID10590cを含む。また、リクエスト10590は、監視者端末4aもしくは4bがリクエスト10590毎にユニークに付与するシーケンスID10590d、そして、コマンド10590eの情報を含む。このように、監視者端末4a、4bは、リクエスト10590を行なう毎にユニークなシーケンスID10590dを付与して、サーバ管理装置105へ送信する。なお、このリクエスト10590をサーバ管理装置105のネットワークアダプタ1053が受信すると、受信処理部10582が受信キュー10581へ記憶させている。
なお、セッションID10590cは、監視者端末4aもしくは4bとの間の通信を確立するためのものである。よって、送信先のネットワークアドレス10590aや送信元のネットワークアドレス10590bが異なる場合、セッションID10590の値は、異なる。
次に、サーバ管理装置105が監視者端末4a、4bへ送信するレスポンスの例について、図5を用いて説明する。
サーバ管理装置105が監視者端末4a、4bへ送信するレスポンス10591は、送信先アドレス10591aを含む。この送信先アドレス10591aは、送信先である監視者端末4aもしくは4bのネットワークアドレスである。また、レスポンス10591は、送信元アドレス10591bを含む。この送信元アドレス10591bは、送信先であるサーバ管理装置105のネットワークアダプタ1053のネットワークアドレスである。更に、レスポンス10591は、監視者端末4aもしくは4bとサーバ管理装置105との間で確立したセッションのセッションID10591cを含む。また、レスポンス10591は、監視者端末4aもしくは4bがリクエスト毎にユニークに付与するシーケンスID10591d、そして、レスポンス本体10591eの情報を含む。このシーケンスID10591dは、監視者端末4aもしくは4bからのリクエスト10590に含まれるシーケンスID10590dに対応している。即ち、監視者端末4aもしくは4bにおいて、シーケンスID10591dを確認することで、どのリクエスト10590に対応するレスポンス10591かを確認できることが可能となっている。
また、このレスポンス10591は、コマンド処理部1060aが、サーバラック11内の各機器から収集した各種センサの情報を元に生成し、送信キュー10583に格納する。そして、送信処理部10584が送信キュー10583に格納されているレスポンス10591を取り出し、ネットワークアダプタ1053を制御して、リクエスト10590を送信してきた監視者端末4aもしくは4bへ送信されることとなる。
また、コマンド処理部1060aは、取得したリクエスト10590のシーケンスID10590dを管理するためのシーケンスID管理テーブル10601を有する。このシーケンスID管理テーブル10601は、図6に示されるように、受信キュー10581より取得したリクエスト10590に含まれるシーケンスID10590d、及び、送信元アドレス10590bを対応付けて記憶する記憶領域10601a,bを有する。(以下、記憶領域10601aをシーケンスID記憶領域10601a、記憶領域10601bを送信元アドレス記憶領域10601bとして説明する。)また、シーケンスID管理テーブル10601は、取得したリクエストのコマンド10590eを記憶するコマンド記憶領域10601c有する。更に、シーケンスID管理テーブル10601は、前回のシーケンスID記憶領域10601dを有する。また、コマンド処理部1060aは、各機器からのレスポンス10801を格納するレスポンス記憶部10603を有する。
更に、CPU1054は、セッション管理プログラム1061を実行することにより、セッション管理部1061aとして機能する。セッション管理部1061aは、監視者端末4aまたは4bとの間のセッションの管理を行なう。このセッション管理部1061aは、図3に示されるように、セッションタイマ10611とセッション管理テーブル10612とを有する。
セッション管理部1061aは、コマンド処理部1060aからのリクエスト10602があると、セッションタイマ10611を、リセットすると共に、セッションタイマ10611の値が20分を経過するとセッションを開放する処理(セッションタイムアウト処理)を行なう。セッション管理部1061aの詳しい処理については、後述する。
また、セッション管理テーブル10612は、図7に示されるように、セッションID記憶領域10612a,セッションフラグ記憶領域10612b,リクエスト内容記憶領域10612c,及び,シーケンスID記憶領域10612dを有する。
セッションID記憶領域10612aは、確立中のセッションのセッションIDを記憶する領域である。また、セッションフラグ記憶領域10612bは、セッション確立中か否かを判別するためのフラグを記憶する領域である。本実施の形態において、セッションフラグ記憶領域10612bに記憶されているフラグが「1」であればセッション確立中、「0」であれば、セッション未確立であることを示している。セッション管理部1061aは、セッション開始時に、セッションIDを生成し、セッションID記憶領域10612aに記憶させると共に、セッションフラグ記憶領域10612bに記憶している値を「1」に更新する。また、セッション管理部1061aは、セッションタイムアウト処理、もしくは、コマンド処理部からのセッション終了のリクエスト10602を受信した場合、セッションID記憶領域10612aのセッションIDを削除する。そして、セッション管理部1061aは、セッションフラグ記憶領域10612bに記憶している値を「0」に更新する。
リクエスト内容記憶領域10612cは、コマンド処理部1060aから受信したリクエスト10602を記憶する領域である。また、シーケンスID記憶領域10612dは、リクエスト毎に付されるユニークなID(シーケンスID)を記憶する領域である。
次に本実施の形態の上位装置である監視者端末4aについて説明する。なお、本実施の形態における監視者端末4a、4bは、同じ構成であるので、以下に説明する監視者端末4aの構成要件は、監視者端末4bも有することとする。
図8は、監視者端末4aの、ハードウエアの概念図である。
図8に示されるように、監視者端末4aは、CPU41、RAM42、ROM43、キーボード等の入力部44、ハードディスク装置46、ネットワークアダプタ47、及び、表示部49の表示制御を行なうディスプレイ制御ユニット48を有し、各々が内部バス45によって接続されている。
このうち、ネットワークアダプタ47は、監視者向けネットワーク3に接続されており、この監視者向けネットワーク3を介して、サーバ管理装置105との通信を行なう。
CPU41は、ハードディスク装置46に格納されている通信制御プログラム461を実行する。また、CPU41は、ハードディスク装置46に格納されている通信制御プログラム461の実行に伴い、適宜、ハードディスク装置46内のデータへのアクセスや、RAM42へのデータの書込み・読み出し、及び、ROM43からのデータ読み出しを行なう。更に、CPU41は、これらのプログラム実行に伴い、適宜ディスプレイ制御ユニット48による表示部49の表示制御やネットワークアダプタ47の通信制御を行なう。
また、ハードディスク装置46は、セッションIDを記憶するセッションID記憶領域463,シーケンスIDを記憶するシーケンスID記憶領域462を有する。
また、CPU41が、通信制御プログラム461を処理することで、図9の機能ブロック図に示される通信制御処理部461aとして機能する。この通信制御処理部461aは、タイマ4611aを有する。
次に、上記したコマンド処理部1060aの処理について、図10以降のフローチャートを用いて説明する。
図10のフローチャートに於いて、まず、コマンド処理部1060aは、受信キュー10581より、監視者端末4aもしくは4bより受信したリクエスト10590を取り出す(S2001)。そしてコマンド処理部は、取り出したリクエスト10590のコマンド10590eの内容を解読する(S2002)。
そして、コマンド処理部1060aは、シーケンスID管理テーブル10601のコマンド記憶領域10601eに格納されているコマンドと、受信キュー10581から取り出したリクエスト10590のコマンド10590eとを比較する(S2003)。
コマンド処理部1060aは、S2003の処理にてコマンドが異なると判定した場合、シーケンスID管理テーブル10601の前回のシーケンスID記憶領域10601dの情報を、不定を示す“Null”に更新する。また、コマンド処理部1060aは、シーケンスID記憶領域10601aの値を、解読したリクエスト10590に含まれるシーケンスIDの値に更新する。同様にコマンド処理部1060aは、送信元アドレス記憶領域10601bの値を、解読したリクエスト10590に含まれる送信元アドレス10590bの値に更新する。更に、コマンド処理部1060aは、コマンド記憶領域10601cの値を、解読したリクエスト10590に含まれるコマンド10590eに更新する(S2004)。このS2004の処理結果の例を、図11に示す。
次に、S2003の処理にてコマンドが同じと判定した場合について説明する。まず、コマンド処理部1060aは、シーケンスID管理テーブル10601の前回のシーケンスID記憶領域10601dに格納しているシーケンスIDを、シーケンスID記憶領域10601aに記憶されているシーケンスIDの値に更新する。また、コマンド処理部1060aは、シーケンスID記憶領域10601aの値を、S2002の処理で解読したリクエスト10590に含まれるシーケンスID10590dの値に更新する。同様にコマンド処理部1060aは、送信元アドレス記憶領域10601bの値を、S2002の処理で解読したリクエスト10590に含まれる送信元アドレス10590bの値に更新する。更に、コマンド処理部1060aは、コマンド記憶領域10601cの値を、S2002の処理で解読したリクエスト10590に含まれるコマンド10590eの値に更新する(S2005)。このS2005の処理結果の例を、図12に示す。
本実施の形態は、このように処理を行なうことで、コマンド処理部1060aは、シーケンスID管理テーブル10601の前回のシーケンスID記憶領域10601dが“Null”か否かを判定することにより、前回と同じ内容のリクエスト10590を受信したかを判断出来る。更に、前回と同じ内容のリクエスト10590が送られてきた場合、今回のリクエスト10590のシーケンスID10590dがシーケンスID記憶領域10601a、前回のシーケンスIDが前回のシーケンスID記憶領域10601dに記憶されることになる。
なお、本実施の形態のでは、監視者端末4a、4bのアドレスをそれぞれ“4AA”,“4BB”、サーバ管理装置105の監視者向けネットワーク3におけるアドレスを“555”として説明する。(例えば、図11に示すリクエスト10590の場合、送信元アドレス10590bの値は、“4AA”であるので、このリクエスト10590は、監視者端末4aが送信元である事を示している。)
ここで、コマンド処理部1060aは、S2002の処理で解読したリクエスト10590のコマンド10590eに、セッションID取得のリクエスト10590を示す”Get Session”が格納されているかを確認する(S2006)。ここで、”Get Session”が格納されていた場合、コマンド処理部1060aは、セッション管理部1061aへ、セッションの取得依頼を送信する(S2007)。
(なお、セッションID取得のリクエスト10590は、セッションIDの取得要求であるため、この時点では、セッションIDは不定である。よって、図13に示されるように、リクエスト10590のセッションID10590cの値は、不定を示す“Null”となっている。)
このリクエスト10590を受信したコマンド処理部1060aは、図14に示される様に、受信キュー10591から取得したリクエスト10590から、セッションID10590c、シーケンスID10590d、及び、コマンド10590eを抽出して、各々、セッションID10602a、シーケンスID10602b、及び、コマンド10602cとしたリクエスト10602を生成する。そして、コマンド処理部1060aは生成したリクエスト1061aをセッション管理部1061aへ送信する事によりセッションID取得依頼を行う。(S2007)
その後、コマンド処理部1060aは、セッション管理部1061aより、このセッションID取得依頼に対応するレスポンス10613を受信する(S2008、S2009)。このレスポンス10613は、図15に示されるように、セッションID10613a、シーケンスID10613b、及び、レスポンス本体10613cを含んでいる。
そして、コマンド処理部1060aは、シーケンスID管理テーブル10601を参照し、このレスポンス10613に含まれるシーケンスID10613bの値である“0001”に対応する送信元アドレスを抽出する。上記したように、本実施の形態では、シーケンスID管理テーブル10601には、シーケンスID10601aの値“0001”と、送信元アドレス記憶領域10601bの“4AA”とが対応付けられて記憶されており、このうち、送信元アドレス記憶領域10601bの値“4AA”を抽出する。
そして、コマンド処理部1060aは、図16に示す様に、セッション管理部1061aから取得したレスポンス10613に、抽出した送信元アドレス記憶領域10601bの値“4AA”を送信先アドレス10591aとして付加する。更にコマンド処理部1060aは、このレスポンス10613にサーバ管理装置105のアドレス“555”を送信元アドレス10591bとして付加することで、監視者端末4a宛のレスポンス10591を生成する(S2010)。
そして、コマンド制御部1060aは、生成したレスポンス10591を送信キュー10583へ格納し(S2011)、S2001の処理へ移行する。
次に、コマンド処理部1060aは、S2006の処理において、解読したリクエスト10590がセッション取得リクエストではないと判定した場合、該リクエスト10590がセッション確立のリクエスト10590か否かを判定する(図17:S2012)。
S2012の処理に於いて、コマンド処理部1060aは、セッション確立リクエストであると判断すると、セッション管理部1061aへセッション確立依頼を行なう(S2013)。なお、このセッション確立のリクエスト10590は、セッションIDを取得した監視者端末4a、4bが、取得したセッションIDに基づくセッションを開始する命令を示すリクエストである。
このセッション確立リクエストの例を図18に示す。図18に示されるように、このセッション確立のリクエスト10590は、コマンド10590eに、セッション確立を示す”Active Session”を含むリクエスト10590である。上記したように、このセッション確立のリクエスト10590は、セッションIDを取得した監視者端末4aもしくは4bより送信されたリクエストであるので、このリクエスト10590に含まれるセッションID10590cの値は不定を示す“Null”ではなく、“52A0h”という値になっている。
また、コマンド処理部1060aからセッション管理部1061aに送信されるセッション確立依頼について補足する。このセッション確立依頼は、図19に示される様に、リクエスト10590から、セッションID、シーケンスID、及び、コマンドを抽出して生成したリクエスト10602を、セッション管理部1061aへ送信する事により行われる。
その後、セッション管理部1061aより、この取得依頼に対応するレスポンス10613を受信する(S2014、S2015)。このレスポンス10613は、図20に示されるように、セッションID10613a、シーケンスID10613b、及び、レスポンス本体10613cを含んでいる。
次に、コマンド処理部1060aは、上記したS2010と同様の処理を行なうことで、図21に示される監視者端末4a宛のレスポンス10591を生成する(S2016)。
そして、コマンド制御部1060aは、生成したレスポンス10591を送信キュー10583へ格納し(S2017)、図10のS2001の処理へ移行する。
なお、図20,図21に示で示したレスポンス10613、10591のレスポンス本体10613c、10591eに含まれる“Ready”は、各々セション確立の許可を示す情報である。
次に、コマンド処理部1060aは、S2012の処理において、解読したリクエスト10590がセッション確立を示すものではないと判定した場合、通常のリクエスト10590か否かを判定する(図22:S2018)。
なお、本実施の形態では、通常のリクエスト10590は、セッションIDの取得、確立、開放などのセッションに関係するリクエスト以外を通常セッションと規定する。また、図23に示すように、コマンド10590eに、通常コマンドの一種であるシステムボード101a〜nのCPU1014a〜nの温度検出のコマンドを意味する”Detect = System Board Temperature”を含んでいた場合を例に以下説明を行なう。
コマンド処理部2060aは、S2002の解読処理の結果、図23に示されるリクエスト10590のように通常コマンドを含むと判定した場合(S2018)、セッション監視部1061aに対し、セッション確認のリクエスト10602を送信する(S2019)。
その後、コマンド処理部1060aは、セッション管理部1061aからレスポンス10613を受信すると(S2020,S2021)、該レスポンス10591がセッション有効を示しているかを確認する(S2022)。S2023の処理において、該レスポンス10591がセッション有効を示している場合、コマンド処理部2060aは、シーケンスID管理テーブル10601を参照し、前回のリクエスト10590に含まれるコマンドと同じか否かを確認する(S2025)。コマンド処理部2061aは、図10のS2003〜S2005の処理において、前回と同じコマンドであれば、シーケンスID管理テーブル10601の前回のシーケンスID記憶領域10601dに前回のシーケンスIDを記憶している。また、コマンド処理部2061aは、前回と同じコマンドでなければ、シーケンスID管理テーブル10601の前回のシーケンスID記憶領域10601dに“Null”を記憶している。よって、S2025の処理において、コマンド処理部1060aは、前回のシーケンスID記憶領域10601dにシーケンスIDが格納されていた場合、前回と同じコマンドと判断し、“Null”が記憶されている場合、前回とは異なるコマンドと判断する。
S2025の処理において、コマンド処理部2060aが、前回と異なるコマンドと判断した場合、コマンド処理部2060aは、通信インターフェース1051を制御し、I2C106を経由して、対象機器へ処理依頼10701を送信し(S2026)、図10のS2001の処理へ移行する。S2026の処理において対象機器へ送信する処理依頼10701の例を、図25に示す。図25は、図23に示される監視者端末4aからのリクエスト10590に対応したシステムボード101aへの処理依頼10701を示したものである。
この対象機器への処理依頼10701は、監視者端末4aからのリクエスト10590に含まれるシーケンスID10701a、送信先10701b(この場合はシステムボード101a)、及び、監視者端末4aからのリクエスト10590に含まれるコマンド10701cが含まれる。
なお、上記はシステムボード101aについてのみ説明したが、コマンド処理部1060aは、対象となる他のシステムボード101b〜nにも同様のリクエスト10701を送信する。そして、各々のシステムボード101b〜nは、このリクエスト10701を受け、システムボードaと同様の処理及びレスポンス10801の送信を行なう。
また、S2025の処理において、前回のリクエスト10590に含まれるコマンドと同じコマンドが送信されたと判断された場合は、S2026の処理を行わず、S2001の処理へ移行する。
更に、S2022の処理において、セッション管理部1061からのレスポンス10613がセッション無効を示すものであった場合、シーケンスID管理テーブル10601内のデータを削除する(S2023)。そして、セッション無効のレスポンス10591を送信キュー10583へ格納し(S2024)、S2001の処理へ移行する。
また、コマンド処理部2060aは、S2018において、受信キュー10581から取り出したリクエスト10590が通常のコマンドを含んでいないと判断すると、セッション開放のリクエスト10590かを判断する(図26:S2027)。
ここで、セッション開放リクエストではないと判断された場合、コマンド処理部1060aは、リクエスト10590を送信してきた監視者端末4aもしくは4bへのリクエストエラー通知を生成し、送信キュー10583へ格納し(S2028)、S2001の処理へ移行する。
また、S2027にてセッション開放リクエストと判断すると、コマンド処理部1060aは、セッション管理部1061aへセッション開放依頼を行なう(S2029)。
その後、セッション管理部1061aより、セッション開放完了のレスポンス10613を受信すると(S2030,S2031)、セッション開放を完了したことを示すレスポンス10591を送信キュー10583へ格納する(S2032)。そして、コマンド処理部1060aは、シーケンスID管理テーブル10601内のデータを削除し(S2033)、S2001の処理へ移行する。
次に図22のS2026の処理にて、処理対象となる各機器へ処理依頼を送信した後、各機器からのこの処理依頼に対応するレスポンス10801を受信した場合の処理について、図27のフローチャートを例に説明する。
なお、本実施の形態では、上記の処理で例示した図25で示される処理依頼が送信された場合を例に説明する。
システムボード101aの通信インターフェース1012aは、I2C106経由でこの処理依頼を受信する。そして通信インターフェース1012aは、温度センサ1011aから温度情報を取得し、I2C106を経由して、サーバ管理装置105へ取得した温度情報を含むレスポンス10801を送信する。このレスポンス10801の例を図28に示す。この図28に示されるように、処理依頼10701でのシーケンスID10801a、送信先10801b、及び、取得した温度情報を格納するレスポンス本体10801cが含まれる。
通信インターフェース1051がこの様なレスポンス10801をいずれかの機器から受信すると、通信インターフェース1051は、コマンド処理部1060aに割り込み指示を行なう。この割込みに伴い、図27に示される処理を実行する。
まず、コマンド処理部1060aは、レスポンス10801のシーケンスID10801aの値が、シーケンスID管理テーブル10601のシーケンスID記憶領域10601a若しくは前回のシーケンスID記憶領域10601dに記憶されているか判断する(S2034,S2035)。
ここで、いずれかの記憶領域に記憶されていると判断された場合、コマンド処理部1060aは、レスポンス記憶部10603に、受信したレスポンス10801を記憶する(S2036)。そして、コマンド処理部1060aは、レスポンス記憶部10603に蓄積される各機器からのレスポンス10801を確認し、リクエスト10590に対応する対象機器からのレスポンス10801を全て受信したかを確認する(S2037)。
もし、対象となる全て機器からのレスポンス10801が受信出来ていなければ、コマンド処理部2060aは、割り込み処理を終了する。
また、対象となる全て機器からのレスポンス10801が受信出来ていれば、コマンド処理部2060aは、シーケンスID管理テーブル10601内のシーケンスID記憶領域10601aに記憶されているシーケンス番号を付したレスポンス10591を作成する(S2038)。そして、コマンド処理部1060aは、作成したレスポンス10591を送信キュー10583へ格納し(S2039)、シーケンスID管理テーブル10601,レスポンス記憶部10603のデータを削除した上で(S2040)、割り込み処理を終了する。
なお、S2035の処理において、リクエストのシーケンスIDが記憶されていないと判断された場合、コマンド処理部2060aは、受信したレスポンス10591を無効にするなどのエラー処理を行い(S2041)、割り込み処理を完了する。
次に、セッション管理部1061aの処理について、図29のフローチャートを用いて説明する。
セッション管理部1061aは、コマンド処理部1060aからのリクエスト受信処理を行い(S3001)、コマンド処理部1060aからのリクエスト10602を受信できたかを判断する(S3002)。
ここで、リクエスト10602の受信ができた場合、セッション管理部1061aは、受信したリクエスト10602がセッションID取得依頼を示すリクエスト10602かを確認する(S3003)。
ここで、セッション管理部1061aは、セッションID取得依頼であった場合、ユニークなセッションIDを生成する(S3003)。そしてセッション管理部1061aは、そのセッションIDをセッション管理テーブル10612に記憶するとともに、セッションフラグ記憶領域10612bの値を「1」に更新する(S3004)。加えて、セッション管理部1061aは、セッションタイマ10611を起動し、タイムカウントを開始する(S3005)。
そして、セッション管理部1061aは、コマンド処理部1060aへ、セッションIDを含むレスポンス10613を送信する(S3006)。このレスポンス10613は、コマンド処理部1060aにおいて、図15にて説明したレスポンスである。
そして、セッション処理部1061aは、S3001の処理に移行する。
また、セッション管理部1061aは、S3002の処理において、コマンド処理部1060aからのリクエスト10602を受信できなかった場合は、セッションタイマ10611の値を確認する(S3007)。セッション管理部1061a、この確認の結果、タイムアウト(本実施の形態の場合、20分)を経過したと判断した場合は、セッション管理テーブル10612に記憶されているセッションIDを削除し、かつアクティブフラグを「0」に更新した上で(S3009)、S3001の処理に移行する。なお、セッション管理部1061aは、S3008の処理において、タイムアウトではないと判断した場合は、S3009の処理は行わず、S3001へ処理を移行する。
セッション管理部1061aは、S3003の処理において、コマンド処理部1060aからのリクエスト10602が、セッションID取得依頼ではないと判断すると、セッション開放要求かを判断する(図30:S3011)。
そして、セッション管理部1061aは、セッション開放要求かを判断した場合、セッション管理テーブル10612からセッションIDなどのデータを削除する(S3012)。
そして、セッション管理部1061aは、セッションを開放したことを示すレスポンス10613を、コマンド処理部1060aへ送信し(S3013)、S3001の処理へ移行する。
更に、セッション管理部1061aは、S3011の処理において、コマンド処理部1060aからのリクエスト10602が、セッション開放要求ではない判断すると、該リクエスト10602が、セッション有効性の問い合わせを示すリクエスト10602かを判断する(S3014)。
ここで、セッション管理部1061aは、該リクエスト10602が、セッション有効性の問い合わせのリクエスト10602であると判断すると、セッションIDが、セッション管理テーブル10612に記憶されているかを確認する(S3015)。ここで、セッション管理部1061aは、セッション管理テーブル10612に記憶されていると判断すると、セッションタイマ10611をリセット、即ち、値を「0」にセットしなおす(S3016)。そして、セッション管理部1061aは、コマンド処理部1060aへセッションの有効性を示すレスポンス10613を送信し(S3017)、S3001の処理へ移行する。セッション管理部1061aは、S3015の処理において、セッションIDを記憶していないと判断すると、コマンド処理部1060aへ、セッション無効のレスポンス10613を送信し、S3001の処理へ移行する。
更に、セッション管理部1061aは、S3014の処理において、コマンド処理部1060aからのリクエスト10602がセッション有効性の問い合わせでないと判断した場合、即ち、その他の問い合わせであった場合、そのリクエスト10602に合わせた処理を行い(S3019)、S3001の処理に移行する。
次に、監視者端末4aの通信制御処理部461aの処理について図31,図32のフローチャートを用い、説明する。
まず監視者が、入力部44に対し、処理要求を入力すると(S501)、通信制御処理部461aは、シーケンスID記憶領域462に記憶されているシーケンスIDを「0」に更新する(S502)。
次に、通信制御処理部461aは、シーケンスID記憶領域462に記憶されているシーケンスIDの値を「1」加算して更新する(S503)。そして、通信制御処理部461aは、ネットワークアダプタ47を制御して、シーケンスID記憶領域462に記憶されているシーケンスIDを付加したセッションID取得依頼のリクエスト10590を、サーバ管理装置105へ送信する(S504)。このリクエスト10590は、図13に示されるリクエスト10590である。S502の処理からS503の処理へ移行する場合は、シーケンスIDは「0」であるので、S503の処理によって、シーケンスID記憶領域462の値は「1」となる。そして、通信制御処理部461aは、タイマ4611aをリセットする(S505)。
その後、通信制御処理部461aは、ネットワークアダプタ47を介して、ネットワーク管理装置105より、レスポンス10591が受信できたかを確認する(S506)。S506の処理において、レスポンス10591が受信できない場合、通信制御処理部461aは、タイマ4611aの値が所定時間以上となったか(タイムアウトしたか)を確認する(S507)。本実施の形態では、この所定時間は、1分とする。即ち、本実施の形態のS507の処理において、通信制御処理部461aは、タイマ4611aが1分以上となったかを確認している。
通信制御処理部461aは、S507の処理において、タイムアウトしていないと判定した場合、S506の処理へ移行する。また、通信制御処理部461aは、S507の処理にて、タイムアウトしたと判定した場合、S503の処理へ移行する。
S503の処理は、上記したように、シーケンスIDを1加算する処理であるので、S507からS503へ移行した場合、S504のセッションID取得依頼のリクエスト10590は、コマンド10590eの内容自体は同じ「Get Session」であるが、前に送信したシーケンスIDの値より「1」大きい値のシーケンスIDが付与される事になる。
通信制御処理部461aは、S506の処理にて、ネットワーク管理装置105よりレスポンス10591を受信したと判定した場合、レスポンス10591に含まれるシーケンスID10591dを確認する(S508)。この処理は、最後に送信したリクエスト10590に対応したレスポンス10591以外は無効であるとして処理を行うことを目的として成される処理である。
ここで、受信したレスポンス10591に含まれるシーケンスID10591dがシーケンスID記憶領域462に記憶されているシーケンスIDと異なっていれば、通信制御処理部461aは、S506の処理へ移行する。
また、S508の処理において、受信したレスポンス10591に含まれるシーケンスID10591dがシーケンスID記憶領域462に記憶されているシーケンスIDと同じであれば、通信制御処理部461aは、S510の処理へ移行する。すなわち、通信処理制御部461aは、レスポンス10591に含まれるセッションID10591cを、セッションID記憶領域463に記憶する。
次に、通信制御処理部461aは、シーケンスID記憶領域462に記憶されているシーケンスIDの値を「1」加算して更新する(S511)。そして、通信制御処理部461aは、ネットワークアダプタ47を制御して、シーケンスID記憶領域462に記憶されているシーケンスID、及び、セッションID記憶領域463に記憶されているセッションIDを付加したセッションID確立のリクエスト10590を、サーバ管理装置105へ送信する(S512)。このリクエスト10590は、図18に示されるリクエスト10590である。そして、通信制御処理部461aは、タイマ4611aをリセットする(S513)。
その後、通信制御処理部461aは、ネットワークアダプタ47を介して、ネットワーク管理装置105より、レスポンス10591が受信できたかを確認する(S514)。S514の処理において、レスポンス10591が受信できない場合、通信制御処理部461aは、タイマ4611aの値が所定時間以上となったか(タイムアウトしたか)を確認する(S515)。本実施の形態では、この所定時間は、1分とする。即ち、本実施の形態のS515の処理において、通信制御処理部461aは、タイマ4611aが1分以上となったかを確認している。
通信制御処理部461aは、S515の処理において、タイムアウトしていないと判定した場合、S514の処理へ移行する。また、通信制御処理部461aは、S515の処理にて、タイムアウトしたと判定した場合、S511の処理へ移行する。
S511の処理は、上記したように、シーケンスIDを1加算する処理であるので、S515からS511へ移行した場合、S512のセッションID確立のリクエスト10590は、コマンド10590eの内容自体は同じ「Active Session」であるが、前に送信したシーケンスIDの値より「1」大きい値のシーケンスIDが付与される事になる。
通信制御処理部461aは、S514の処理にて、ネットワーク管理装置105よりレスポンス10591を受信したと判定した場合、レスポンス10591に含まれるシーケンスIDを確認する(S516)。この処理は、S508の処理同様、最後に送信したリクエスト10590に対応したレスポンス10591以外は無効であるとして処理を行うことを目的として成される処理である。
ここで、受信したレスポンス10591に含まれるシーケンスID10591dがシーケンスID記憶領域462に記憶されているシーケンスIDと異なっていれば、通信制御処理部461aは、S514の処理へ移行する。
また、S516の処理において、受信したレスポンス10591に含まれるシーケンスID10591dがシーケンスID記憶領域462に記憶されているシーケンスIDと同じであれば、通信制御処理部461aは、図32のS518の処理へ移行する。S518の処理において、通信制御処理部461aは、シーケンスID記憶領域462に記憶されているシーケンスIDの値を「1」加算して更新する(S518)。そして、通信制御処理部461aは、ネットワークアダプタ47を制御して、シーケンスID記憶領域462に記憶されているシーケンスID、及び、セッションID記憶領域463に記憶されているセッションIDを付加し、S501の入力に対応するコマンド(通常コマンド)のリクエスト10590を、サーバ管理装置105へ送信する(S519)。このリクエスト10590は、図23に示されるリクエスト10590である。そして、通信制御処理部461aは、タイマ4611aをリセットする(S520)。
その後、通信制御処理部461aは、ネットワークアダプタ47を介して、ネットワーク管理装置105より、レスポンス10591が受信できたかを確認する(S521)。S521の処理において、レスポンス10591が受信できない場合、通信制御処理部461aは、タイマ4611aのタイマが所定時間以上となったか(タイムアウトしたか)を確認する(S522)。本実施の形態では、この所定時間は、1分とする。即ち、本実施の形態のS522の処理において、通信制御処理部461aは、タイマ4611aが1分以上となったかを確認している。
通信制御処理部461aは、S522の処理において、タイムアウトしていないと判定した場合、S521の処理へ移行する。また、通信制御処理部461aは、S522の処理にて、タイムアウトしたと判定した場合、S518の処理へ移行する。
S518の処理は、上記したように、シーケンスIDを1加算する処理であるので、S522からS518へ移行した場合、S519の通常コマンドのリクエスト10590は、コマンド10590eの内容自体は同じであるが、前に送信したシーケンスIDの値より「1」大きい値のシーケンスIDが付与される事になる。
通信制御処理部461aは、S521の処理にて、ネットワーク管理装置105よりレスポンス10591を受信したと判定した場合、レスポンス10591に含まれるシーケンスID10591dを確認する(S523)。この処理は、S508の処理同様、最後に送信したリクエスト10590に対応したレスポンス10591以外は無効であるとして処理を行うことを目的として成される処理である。
ここで、受信したレスポンス10591に含まれるシーケンスID10591dがシーケンスID記憶領域462に記憶されているシーケンスIDと異なっていれば、通信制御処理部461aは、S521の処理へ移行する。
また、S523の処理において、受信したレスポンス10591に含まれるシーケンスID10591dがシーケンスID記憶領域462に記憶されているシーケンスIDと同じであれば、通信処理制御部461aは、S524の処理へ移行する。すなわち、通信処理制御部461aは、受信したレスポンス10591の内容がセッションタイムアウトを示すものかを確認する(S524)。
ここで、セッションタイムアウトを示すレスポンス10591と判断した場合、S533の処理へ移行する。S533の処理は、セッションID記憶領域463に記憶されているセッションIDを削除する事で、セッションIDを破棄する処理である。
S524において、セッションタイムアウトではないと判断した場合、通信制御処理部461aは、ディスプレイ制御ユニット48を制御し、ディスプレイ49に、レスポンス10591に含まれる処理結果を表示する(S525)。
そして、通信制御処理部461aは、シーケンスID記憶領域462に記憶されているシーケンスIDの値を「1」加算して更新する(S526)。そして、通信制御処理部461aは、ネットワークアダプタ47を制御して、シーケンスID記憶領域462に記憶されているシーケンスID、及び、セッションID記憶領域463に記憶されているセッションIDを付加し、セッション開放のリクエスト10590を、サーバ管理装置105へ送信する(S527)。そして、通信制御処理部461aは、タイマ4611aをリセットする(S528)。
その後、通信制御処理部461aは、ネットワークアダプタ47を介して、ネットワーク管理装置105より、レスポンス10591が受信できたかを確認する(S529)。S529の処理において、レスポンス10591が受信できない場合、通信制御処理部461aは、タイマ4611aのタイマが所定時間以上となったか(タイムアウトしたか)を確認する(S530)。本実施の形態では、この所定時間は、1分とする。即ち、本実施の形態のS530の処理において、通信制御処理部461aは、タイマ4611aが1分以上となったかを確認している。
通信制御処理部461aは、S530の処理において、タイムアウトしていないと判定した場合、S529の処理へ移行する。また、通信制御処理部461aは、S530の処理にて、タイムアウトしたと判定した場合、S526の処理へ移行する。
S526の処理は、上記したように、シーケンスIDを1加算する処理であるので、S530からS526へ移行した場合、S527の通常のリクエスト10590は、コマンド10590eの内容自体は同じであるが、前に送信したシーケンスIDの値より「1」大きい値のシーケンスIDが付与される事になる。
通信制御処理部461aは、S529の処理にて、ネットワーク管理装置105よりレスポンス10591を受信したと判定した場合、レスポンス10591に含まれるシーケンスID10591dを確認する(S531)。この処理は、S508の処理同様、最後に送信したリクエスト10590に対応したレスポンス10591以外は無効であるとして処理を行うことを目的として成される処理である。
ここで、受信したレスポンス10591に含まれるシーケンスID10591dがシーケンスID記憶領域462に記憶されているシーケンスIDと異なっていれば、通信制御処理部461aは、S5529の処理へ移行する。
また、S531の処理において、受信したレスポンス10591に含まれるシーケンスID10591dがシーケンスID記憶領域462に記憶されているシーケンスIDと同じであれば、通信処理制御部461aは、S533の処理へ移行する。S533の処理は、セッションID記憶領域463に記憶されているセッションIDを削除する事で、セッションIDを破棄する処理である。
以上の処理でわかるように、本実施の形態の監視者端末4aは、リクエスト10590を送信するごとにシーケンスID10590dの値を1ずつ加算する。また、監視者端末4aは、タイムアウトがあれば、シーケンスID10590dの値が異なる同じリクエスト10590を送信する。加えて、最後に送信したリクエスト10590に含まれるシーケンスID10590dと同じ値を含むレスポンス10591のみを有効とする処理を行なう。
以上の様な処理を実行する、監視者端末4a、4b、コマンド処理部1060a、及び、セッション管理部1061aを含む状態サーバ管理装置105を有した、本実施の形態のサーバシステム1の処理について、図33以降のタイムチャートを使用して、以下説明する。なお、以下の処理では、監視者端末4aとのセッションを例に説明する。
まず、監視者端末4aの監視者が、処理要求を入力すると(S4001)、監視者向けネットワーク3を経由して、セッションID取得依頼のリクエスト10590を、サーバ管理装置105へ送信する(S4003)。このS4001〜S4003の処理は、図31に示すS501〜S505の処理に基づく。
このリクエスト10590をネットワークアダプタ1053経由で受信したネットワーク通信処理部1058aの受信処理部10582は(S4004)、該リクエスト10590を受信キュー10581に格納する(S4005)。
コマンド処理部1060aは、受信キュー10581より、このセッションID取得依頼のリクエスト10590を取り出すと、セッション管理部1061aへ、セッションID取得依頼を送信する(S4006)。このコマンド処理部2060aのS4005の処理は、図10で示した、S2006〜S2008の処理に基づくものである。
このセッションID取得依頼を受信したセッション管理部1061aは、セッションタイマ10611を起動する処理を行なう(S4007)とともに生成したセッションIDを含むレスポンスコマンド処理部1060aへ送信する(S4008)。このセッション管理部1061aの処理は、図29のS3003〜S3006の処理に基づくものである。
コマンド処理部2060aは、このセッションIDを含むレスポンス10613を受信すると、受信したセッションIDを含む監視者端末4a宛のレスポンス10591を生成し(S4009)、送信キュー10583へ格納する(S4010)。この処理は、図10のS2009〜S2011の処理に基づくものである。
そして、ネットワーク通信処理部1058aの送信処理部10584は、このレスポンス10591を送信キュー10583から取り出し、ネットワークアダプタ1053を制御して、監視者ネットワーク3を介し、監視者端末4aへ送信する(S4011)。
このレスポンス10591を受信した監視者端末4aは(S4012)、以降、このレスポンス10591に含まれるセッションID10591cの値を含むリクエスト10590を送信する。また、監視者端末4aは、リクエスト10590毎にユニークなリクエストID10590dを付加して送信している。
また、このレスポンス10591を受信した監視者端末4aは(S4012)、監視者向けネットワーク3を介して、サーバ管理装置105へセッション確立のリクエスト10590を送信する(S4013)。これらS4012、S4013の処理は、図31のS506〜S513の処理に基づく。
このリクエスト10590を、ネットワークアダプタ1053を介して受信したネットワーク通信処理部1058aの受信処理部10582は(S4014)、該リクエスト10590を受信キュー10581へ格納する(S4015)。
その後、コマンド処理部1060aは、このリクエスト10590を取り出し(S4016)、セッション確立のリクエスト10590である事を判断すると、セッション管理部1061aへセッション確立依頼を送信する(S4017)。この処理は、図17のS2012〜S2013の処理に基づく処理である。
この依頼を受信したセッション監視部1061aは、セッションの有効性を確認した後(S4018)、タイマーをリセットし(S4019)、コマンド処理部1060aへ、レスポンス10613を送信する(S4020)。
このレスポンス10613を受信したコマンド処理部1060aは(S4021)、セッション確立許可のレスポンス10591を送信キュー10583に格納する(S4022)。この処理は、図17のS2014〜S2017の処理に基づくものである。
そして、ネットワーク通信処理部1058aの送信処理部10584は、このレスポンス10591を送信キュー10583から取り出し、ネットワークアダプタ1053を制御して、監視者ネットワーク3を介し、監視者端末4aへ送信する(S4023)。
このレスポンス10591を受信した監視者端末4aは(S4024)、監視者向けネットワーク3セッション確立のリクエスト10590を、サーバ管理装置105へ通常のリクエスト10590を送信する(図34:S4025)。これらS4023、S4024の処理は、図31,32のS514〜S520の処理に基づく。
このリクエスト10590を、ネットワークアダプタ1053を介して受信したネットワーク通信処理部1058aの受信処理部10582は(S4026)、該リクエスト10590を受信キュー10581へ格納する(S4027)。
コマンド処理部1060aは、受信キュー10581より、このリクエスト10590を取り出すと(S4028)、セッション管理部1061aへ、セッション有効性の確認要求のリクエスト10602を送信する(S4029)。この処理は、図22のS2018〜S2019の処理に基づく。
そして、このリクエスト10602を受信したセッション管理部1061aは、セッションの有効性の確認処理を行なう(S4030)とともに、セッションが有効であれば、セッションタイマ10611のリセットを行い(S4031)、該確認結果のレスポンス10613をコマンド処理部1060aへ送信する(S4032)。この処理は、図30のS3014〜S3018の処理に基づくものである。
このレスポンス10613を受信したコマンド処理部1060aは、監視者端末4aから前回と異なるリクエスト10590を受信したと判断すれば、該リクエスト10590に対する、各機器への指示を行なう(S4032)。S4032の処理の段階では、それ以前に同一リクエスト10590が送信されていないため、コマンド処理部1060aは、各機器へリクエスト10590に応じた指示を行なう。この処理は、図22のS2020〜S2022,S2025,S2026の処理に基づく。
監視者端末4aは、所定時間内(本実施の形態では1分以内)にネットワーク通信処理部1058aからのレスポンス10591を受信できない場合、S4025の処理で送信したリクエスト10590を再送信する処理を行なう機能を有している。
このため、コマンド処理部1060aが、リクエスト10590に対する処理に時間がかかり、1分以内に監視者端末4aへレスポンス10591を送信できなかった場合、監視者端末4aは、S4025の処理にて送信したリクエスト10590を再送信する(S4035・S4036)。これらの処理は、図32のS518〜S522の処理に基づく。
この再送信されたリクエスト10590を、ネットワークアダプタ1053を介して受信したネットワーク通信処理部1058aの受信処理部10582は(S4037)、該リクエスト10590を受信キュー10581へ格納する(S4038)。
コマンド処理部1060aは、このリクエスト10590を取り出し(S4039)、セッション管理部1061aへセッション確認要求のリクエスト10602を行なう(S4040)。またコマンド処理部1060aは、取り出したリクエスト10590を前回のリクエスト10590と同じと判断すると、そのリクエスト10590の処理は実行しない(S4041)。これらの処理は、図22のS2018〜S2022,S2025の処理に基づく。
セッション管理部2061は、S4030〜S4032の処理と同様、セッションの有効性確認、及び、セッションタイマ10611のリセットを行なう(S4042)。
その後、コマンド処理部1060aにおいて、S4025で監視者端末4aから送信されたリクエスト10590に対応する処理が完了すると(S4045)、コマンド処理部1060aは、シーケンスID管理テーブル10601の記憶内容を削除した後、再送信のシーケンスIDを付して該処理結果のレスポンス10591を生成する(S4044)。そして、コマンド処理部1060aは、生成したレスポンス10591を送信キュー10583へ格納する(S4045)。この処理は、図27の処理に基づく。
その後も、監視者端末4aから、セッション開放のリクエスト10590が送信されるまで、同様のコマンド処理が実行される事となる。
このように、コマンド処理部1060aは、監視者端末4aからのリクエスト10590が再送と判断した場合、セッション管理部1061aに、セッション1061bが有効かの確認要求のリクエスト10602を行なうものの、そのリクエスト10590に対応した処理は実行しない。セッション管理部1061aは確認要求のリクエスト10602を受信するたびにセッションタイマ10611をリセットするため、監視者端末4aもしくは4bが、セッションタイムアウトの時間より短い間隔で再送を行なえば、セッションタイムアウトになることはない。
そして、コマンド処理部1060aは、前回のシーケンスID及び今回のシーケンスIDの双方をシーケンスID管理テーブル10601に記憶させておき、各機器からのレスポンス10591のシーケンスID10591dが、記憶されているそのシーケンスIDのいずれかと一致すればそのレスポンス10591は有効としている。更に各機器から情報が全て収集された場合、監視者端末4a、もしくは、4bからの最新のリクエスト10590に付されたシーケンスID10590dを含むレスポンス10591を送信する。
これら一連の処理によって、監視者端末4aもしくは4bからリクエスト10590が再送された場合は、その再送に対しては処理を行わず、その前の同一リクエスト10590に対する各機器からの情報を元に、監視者端末4a若しくは4bへのレスポンス10591を生成する事になる。
以上によってサーバ管理装置105は、既に処理中のリクエスト10590が再送された場合、再送されたリクエスト10590の処理を行わないようにすることで、各機器へリクエスト10590の送信及びそのリクエスト10590による各機器の処理を増やすことがなくなる。
また、単に再送リクエスト10590による重複した処理を回避するだけであるのなら、再送のリクエスト10590から送られてきた時点で、現状の処理を中止し、新たに再送リクエスト10590の処理を開始することが考えられる。しかしながら、上記したように再送のリクエスト10590は、前回のリクエスト10590と同じリクエスト10590である。即ち、監視者端末4aのタイムアウトが発生してしまうほど時間を要するリクエスト10590の場合、再送されるリクエスト10590を受けて処理を行なったとしても、該再送されたリクエスト10590の処理が再びタイムアウトなる可能性が高い。
これに対し、本実施の形態は、再送リクエスト10590に対し、前回のリクエスト10590に基づいてレスポンス10591を送信するので、見かけ上の再送のリクエスト10590に対する応答速度を早くし、コマンド処理部1060aの処理中に再度再送のリクエスト10590が送られてしまう可能性を低くすることが可能となる。
更にシーケンスID管理テーブル10601に、前回監視者端末4a、もしくは、4bから送られるリクエスト10590のコマンドの記憶領域を設けておき、監視者端末4a若しくは4bを受信したリクエスト内のコマンドと比較して、再送を判別している。
これにより、本実施の形態では再送されるリクエスト10590に再送を識別する情報が付されていないとしても、監視者端末4a、もしくは、4bから送られてきたリクエスト10590が再送か否かを判断することが可能となる。
なお、本実施の形態では、各機器に設置されているセンサの検出を監視者端末4aもしくは4bに送信する例を示した。しかしながら、これに限らず、例えば、監視者端末4a若しくは4bから電源装置104の起動など、各機器への制御指示のリクエスト10590を受信し、サーバ管理装置105が、各機器へ該制御指示を行ない、その制御結果を監視者端末4a、4bへ行う場合に適用しても良い。
また、本実施の形態では、同一種類の機器・センサの検出の例を示したが、複数のセンサの結果を収集した場合において適用してもよい。この場合、サーバ管理装置105が、各センサからの検出結果自体を直接監視者端末4a若しくは4bへ送信するのではなく、複数のセンサの検出結果を分析し、その分析結果を出力しても良い。