(57)【要約】【課題】ファイアウォールを越えたプッシュ通信において、クライアント装置とサーバ装置との間のコネクションを効率的に維持する通信システムを提供する。【解決手段】ファイアウォールを介して、インターネット上のサーバ装置と、イントラネット上の１または複数のクライアント装置とが接続される通信システムにおいて、前記クライアント装置は、前記サーバ装置とのプッシュ通信のコネクションを作成する作成手段と、前記コネクションを維持するために定期的に送信する通知の送信間隔に関する情報を前記サーバ装置から取得する取得手段と、前記取得手段にて取得した送信間隔に関する情報に基づいて前記通知を定期的に送信することにより、前記作成手段にて作成したコネクションを維持する管理手段とを有する。【選択図】図１
2013211842.tif 000002
【特許請求の範囲】
【請求項１】
ファイアウォールを介して、インターネット上のサーバ装置と、イントラネット上の１または複数のクライアント装置とが接続される通信システムであって、
前記クライアント装置は、
前記サーバ装置とのプッシュ通信のコネクションを作成する作成手段と、
前記コネクションを維持するために定期的に送信する通知の送信間隔に関する情報を前記サーバ装置から取得する取得手段と、
前記取得手段にて取得した送信間隔に関する情報に基づいて前記通知を定期的に送信することにより、前記作成手段にて作成したコネクションを維持する管理手段と
を有し、
前記サーバ装置は、
前記クライアント装置とのプッシュ通信のコネクションを用いてデータ通信を行う通信制御手段と、
前記通信制御手段によって行われたデータ通信に関する通信ステータス情報を保存する保存手段と、
前記保存手段で保存した前記通信ステータス情報に基づいて、前記プッシュ通信のコネクションを無通信で維持することが可能な間隔を決定する決定手段と、
前記決定手段が決定した間隔を当該プッシュ通信のコネクションを維持するために用いる前記送信間隔に関する情報として前記クライアント装置に通知する通知手段と
を有することを特徴とする通信システム。
【請求項２】
前記決定手段は、前記通信ステータス情報から、前記コネクションを用いて前記クライアント装置との通信が成功した通信と、当該通信の前回の成功した通信との間における無通信であった期間を少なくとも一つ算出し、算出した期間の中から、最も長い期間の値を前記間隔として決定することを特徴とする請求項１に記載の通信システム。
【請求項３】
前記定期的に送信する通知は、前記ファイアウォールに対するＫｅｅｐ−Ａｌｉｖｅの送信であることを特徴とする請求項１または２に記載の通信システム。
【請求項４】
前記サーバ装置は更に、前記サーバ装置と同一のクライアント装置との間で、異なる複数のプッシュ通信のコネクションを管理する複数接続管理手段を有することを特徴とする請求項１乃至３のいずれか一項に記載の通信システム。
【請求項５】
前記通信制御手段は、前記プッシュ通信のコネクションが切断された場合に、前記複数接続管理手段にて管理されているコネクションのうち、前記切断されたコネクションと同一の接続先に対して接続された別のコネクションを用いて、前記切断されたコネクションを復旧することを特徴とする請求項４に記載の通信システム。
【請求項６】
前記サーバ装置は更に、同一ドメインに属する複数のクライアント装置を特定する同一ドメイン判定手段を有し、
前記決定手段は、前記同一ドメイン判定手段にて同一のドメインに属すると特定された複数のクライアント装置に対して、同一の値を前記間隔として決定することを特徴とする請求項１乃至４のいずれか一項に記載の通信システム。
【請求項７】
前記クライアント装置は更に、前記サーバ装置から取得した送信間隔に関する情報が、当該クライアント装置に設定された動作条件を満たすか否かを判定する判定手段を有し、
前記判定手段にて前記動作条件を満たすと判定された場合に、前記管理手段は、前記サーバ装置から取得した送信間隔に関する情報に従って前記通知を送信することを特徴とする請求項１乃至６のいずれか一項に記載の通信システム。
【請求項８】
前記管理手段は、前記クライアント装置にて設定されている送信間隔の値と、前記サーバ装置から取得した送信間隔に関する情報との差異が、所定の閾値よりも大きい場合に、前記サーバ装置から取得した送信間隔に関する情報を用いることを特徴とする請求項１乃至７のいずれか一項に記載の通信システム。
【請求項９】
ファイアウォールを介して、インターネット上のサーバ装置と接続されるイントラネット上のクライアント装置であって、
前記サーバ装置とのプッシュ通信のコネクションを作成する作成手段と、
前記コネクションを維持するために定期的に送信する通知の送信間隔に関する情報を前記サーバ装置から取得する取得手段と、
前記取得手段にて取得した送信間隔に関する情報に基づいて前記通知を定期的に送信することにより、前記作成手段で作成した前記サーバ装置とのコネクションを維持する管理手段と
を有することを特徴とするクライアント装置。
【請求項１０】
ファイアウォールを介して、イントラネット上の１または複数のクライアント装置と接続されるサーバ装置であって、
前記クライアント装置とのプッシュ通信のコネクションを用いてデータ通信を行う通信制御手段と、
前記通信制御手段によって行われたデータ通信に関する通信ステータス情報を保存する保存手段と、
前記保存手段で保存した前記通信ステータス情報に基づいて、前記プッシュ通信のコネクションを無通信で維持することが可能な間隔を決定する決定手段と、
前記決定手段が決定した間隔を当該プッシュ通信のコネクションを維持するために行われる通信の送信間隔に関する情報として前記クライアント装置に通知する通知手段と、
を有することを特徴とするサーバ装置。
【請求項１１】
ファイアウォールを介して、インターネット上のサーバ装置と接続されるイントラネット上のクライアント装置における通信方法であって、
作成手段が、前記サーバ装置とのプッシュ通信のコネクションを作成する作成工程と、
取得手段が、前記コネクションを維持するために定期的に送信する通知の送信間隔の値を前記サーバ装置から取得する取得工程と、
管理手段が、前記取得工程にて取得した送信間隔に関する情報に基づいて前記通知を送信することにより、前記作成工程で作成した前記サーバ装置とのコネクションを維持する管理工程と、
を有することを特徴とする通信方法。
【請求項１２】
ファイアウォールを介して、イントラネット上の１または複数のクライアント装置と接続されるサーバ装置における通信方法であって、
通信制御手段が、前記クライアント装置とのプッシュ通信のコネクションを用いてデータ通信を行う通信制御工程と、
保存手段が、前記通信制御工程にて行われたデータ通信に関する通信ステータス情報を記憶部に保存する保存工程と、
決定手段が、前記保存されている通信ステータス情報に基づいて、前記プッシュ通信のコネクションを無通信で維持することが可能な間隔を決定する決定工程と、
通知手段が、前記決定工程にて決定した間隔を当該プッシュ通信のコネクションを維持するために行われる通信の送信間隔に関する情報として前記クライアント装置に通知する通知工程と
を有することを特徴とする通信方法。
【請求項１３】
コンピュータを、
ファイアウォールを介して接続されたインターネット上のサーバ装置とのプッシュ通信のコネクションを作成する作成手段、
前記コネクションを維持するために定期的に送信する通知の送信間隔に関する情報を前記サーバ装置から取得する取得手段、
前記取得手段にて取得した送信間隔に関する情報に基づいて前記通知を定期的に送信することにより、前記作成手段で作成した前記サーバ装置とのコネクションを維持する管理手段、
として機能させることを特徴とするプログラム。
【請求項１４】
コンピュータを、
ファイアウォールを介して接続されたイントラネット上のクライアント装置とのプッシュ通信のコネクションを用いてデータ通信を行う通信制御手段、
前記通信制御手段によって行われたデータ通信に関する通信ステータス情報を保存する保存手段、
前記保存した通信ステータス情報に基づいて、前記プッシュ通信のコネクションを無通信で維持することが可能な間隔を決定する決定手段、
前記決定手段が決定した間隔を当該プッシュ通信のコネクションを維持するための通信の送信間隔に関する情報として前記クライアント装置に通知する通知手段
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信システム、クライアント装置、サーバ装置、通信方法、及びプログラムに関し、特にプッシュ通信における通信コネクションの維持方法、通信方法に関する。
【背景技術】
【０００２】
従来からネットワークに不要な負荷をかけることなく持続的に通信コネクションを維持する通信方式の提案がなされている。従来技術では、定期的にパケットを送信することにより（Ｋｅｅｐ−Ａｌｉｖｅ）、コネクション切断を防ぐことが可能である。例えば、クライアントが自律的に適切なＫｅｅｐ−Ａｌｉｖｅ間隔を決定する事で、ネットワークに不要な負荷をかけることなく持続的にコネクションを維持する（例えば、特許文献１参照）。
【０００３】
一方、インターネット上のサーバからファイアウォールよりも内側にあるイントラネット上のクライアントに対して持続的にコネクションを維持する事で、プロキシサーバを越えて通信を行うプッシュ通信方式の提案がなされている（例えば非特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００３−１８２３５号公報
【非特許文献】
【０００５】
【非特許文献１】“Ｔｈｅ  ＷｅｂＳｏｃｋｅｔ  ｐｒｏｔｏｃｏｌ：ｄｒａｆｔ−ｉｅｔｆ−ｈｙｂｉ−ｔｈｅｗｅｂｓｏｃｋｅｔｐｒｏｔｏｃｏｌ−１７”，［ｏｎｌｉｎｅ］，平成２３年９月３０日，ＩＥＴＦ，［平成２３年１２月２７日検索］，インターネット＜ＵＲＬ：ｈｔｔｐ：／／ｔｏｏｌｓ．ｉｅｔｆ．ｏｒｇ／ｈｔｍｌ／ｄｒａｆｔ−ｉｅｔｆ−ｈｙｂｉ−ｔｈｅｗｅｂｓｏｃｋｅｔｐｒｏｔｏｃｏｌ−１７＞
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１では、非特許文献１で示されるようなプッシュ通信でファイアウォールを越えて通信する場合に対して、適切なＫｅｅｐ−Ａｌｉｖｅの送信を行えない。つまり、プッシュ通信では、通信経路上にファイアウォールなどの通信機器が存在するため、サーバはイントラネット上のクライアント装置に対して適切な間隔でＫｅｅｐ−Ａｌｉｖｅの送信を行えない。その結果、通信経路上にある通信装置によって、コネクションが切断され、インターネット上のサーバからクライアント装置への通信ができなくなる課題がある。
【０００７】
また、Ｋｅｅｐ−Ａｌｉｖｅの間隔が短いと過剰な通信が増えるためトラフィックが増大し通信効率が低下する。また、Ｋｅｅｐ−Ａｌｉｖｅの間隔が長いとファイアウォールによる通信遮断が発生し、コネクションが維持できないために即時データ転送が行えなくなる。
【０００８】
本発明では、上記課題を鑑み、通信経路上にファイアウォールなどの通信コネクションを切断するような通信制限が生じる場合においても、通信コネクションを継続し、データ転送が可能な通信システムを提案する。
【課題を解決するための手段】
【０００９】
上記課題を解決するために本願発明は以下の構成を有する。すなわち、ファイアウォールを介して、インターネット上のサーバ装置と、イントラネット上の１または複数のクライアント装置とが接続される通信システムであって、前記クライアント装置は、前記サーバ装置とのプッシュ通信のコネクションを作成する作成手段と、前記コネクションを維持するために定期的に送信する通知の送信間隔に関する情報を前記サーバ装置から取得する取得手段と、前記取得手段にて取得した送信間隔に関する情報に基づいて前記通知を定期的に送信することにより、前記作成手段にて作成したコネクションを維持する管理手段とを有し、前記サーバ装置は、前記クライアント装置とのプッシュ通信のコネクションを用いてデータ通信を行う通信制御手段と、前記通信制御手段によって行われたデータ通信に関する通信ステータス情報を保存する保存手段と、前記保存手段で保存した前記通信ステータス情報に基づいて、前記プッシュ通信のコネクションを無通信で維持することが可能な間隔を決定する決定手段と、前記決定手段が決定した間隔を当該プッシュ通信のコネクションを維持するために用いる前記送信間隔に関する情報として前記クライアント装置に通知する通知手段とを有する。
【発明の効果】
【００１０】
プッシュ通信方式を利用した、ファイアウォールを介したクライアント―サーバ間の通信においても、適切なＫｅｅｐ−Ａｌｉｖｅ間隔を決定する事ができる。さらに、ネットワークに不要な負荷をかけることなく持続的なコネクションを維持する通信が可能となる。
【図面の簡単な説明】
【００１１】
【図１】システムの構成例を示す図。
【図２】サーバであるホストコンピュータの構成例を示す図。
【図３】複合機の構成例を示す図。
【図４】各装置のコンポーネントの構成例を示す図。
【図５】複合機、ファイアウォール、およびサーバ間のシーケンス例を示す図。
【図６】プッシュ通信制御部の処理フロー例を示すフローチャート。
【図７】コネクション管理部の処理フロー例を示すフローチャート。
【図８】プッシュ通信制御部の処理フロー例を示すフローチャート。
【図９】通信ステータス情報の構成例を示す図。
【発明を実施するための形態】
【００１２】
以下、本発明を実施するための形態について図面を用いて説明する。尚、以下の実施例は特許請求の範囲に係る本発明を限定するものでなく、また本実施例で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。
【００１３】
＜実施例１＞
［システム構成］
本発明の実施例に係る通信システムの構成例について説明する。図１は、本発明の実施の形態に係る通信システムの利用環境を説明するシステム構成例を示す図である。
【００１４】
尚、本発明の機能が実現されるのであれば、複合機１０１でのプログラムの動作を、プリンタやスキャナやＭＦＰ（ＭｕｌｔｉＦｕｎｃｔｉｏｎ  Ｐｅｒｉｐｈｅｒａｌ）上のＣＰＵ、ＲＡＭ，ＲＯＭで実行しても良いことは言うまでもない。また、サーバ１０２でのプログラムの動作を仮想コンピュータ環境で実行しても良い。図１において、複数の複合機１０１、１０５がＬＡＮ１００に接続されている。さらに、ファイアウォール１０３、インターネット１０４を介して、サーバ１０２が接続されている。
【００１５】
複合機１０１、複合機１０５、サーバ１０２は、ＬＡＮ１００やインターネット１０４において他の通信装置と通信を行うためにＩＰアドレスを保持している。複合機１０１および複合機１０５では、プリントサーバ機能（ＬＰＤ：ＲＦＣ１１７９）やサーバ１０２と同様に各種リクエストに応答するサービスを提供している。サービスとしては、例えば、Ｗｅｂ、ファイル、ＳＮＭＰ（Ｓｉｍｐｌｅ  Ｎｅｔｗｏｒｋ  Ｍａｎａｇｅｍｅｎｔ  Ｐｒｏｔｏｃｏｌ）、ＷＳ−Ｅｖｅｎｔｉｎｇなどがある。
【００１６】
サーバ１０２は、サービスの要求元となる複合機１０１、１０５からのリクエストに応答して、サービスを提供する。サーバ１０２が提供するサービスとしては、例えば、Ｗｅｂサービス、ストレージサービス、画像処理サービス、メールサービスなどがある。また、サーバ１０２は、リクエストの要求元からのリクエストに応じて、さらに別のサーバに通信を行ってもよい。さらに、サーバ１０２は、仮想化サーバや仮想ディスクが複数の物理サーバや物理ストレージから構成されてもよい。また、図１においては、サーバ１０２は１台の構成にて示しているが、物理的に複数の装置にて処理を分散し、サービスを提供するようにしても構わない。
【００１７】
本実施例では、複合機１０１とサーバ１０２との間のプッシュ通信において、ファイアウォール１０３により通知される通信エラーをサーバ１０２で検出する。そして、サーバ１０２は、プッシュ通信のエラーの発生状況からコネクション有効時間を決定し、複合機１０１に当該決定したコネクション有効時間を通知する。そして、複合機１０１は、当該通知されたコネクション有効時間に基づいて、適切なＫｅｅｐ−Ａｌｉｖｅの通信間隔を設定する。
【００１８】
プッシュ通信は、インターネット上のサーバ装置から、ファイアウォールを越えてイントラネット上のクライアント装置に対して通信を行う通信技術である。プッシュ通信の一例としてＷｅｂＳｏｃｋｅｔプロトコルなどがある。なお、サーバ１０２が提供するサービスに関し、アドレスを利用する通信であれば、ＩＰｖ４やＩＰｖ６などのプロトコルも含め、プロトコルを限定するものではない。
【００１９】
また、複合機１０１、１０５とサーバ１０２との間の接続方式が、ＬＡＮ，インターネット以外のネットワークや、ＩＥＥＥ８０２．１１などの無線ＬＡＮなど他通信方式も、本発明を適用できることは言うまでもない。
【００２０】
本発明において、これらの通信プロトコルは、ＯＳＩ参照モデルの物理層、データリンク層、ネットワーク層、トランスポート層、コネクション層、プレゼンテーション層、アプリケーション層の各層におけるプロトコルを限定するものではない。さらに、実施例以外のネットワークデバイス、情報処理装置、通信装置が接続されていても良い。
【００２１】
［サーバの構成］
図２は、情報処理装置であるサーバ１０２に適用可能なコンピュータの構成例を示す図である。サーバ１０２において、ＣＰＵ１はシステムバス４に接続された各デバイスを統括的に制御する中央処理装置である。ＣＰＵ１は、ＲＯＭ３のプログラム用ＲＯＭ或いは外部メモリ（ＨＤ）１１に記憶されたアプリケーション（文書処理プログラム等）に基づいて、図形、イメージ、文字、表（表計算等を含む）等が混在した文書処理等の各種処理を実行する。
【００２２】
またＣＰＵ１は、例えばＲＡＭ２上に設定された表示ＲＡＭへのアウトラインフォントの展開（ラスタライズ）処理を実行し、ＣＲＴＣ（表示制御部）６を介してＣＲＴ（表示部）１０に表示する。更に、ＣＰＵ１は、ＣＲＴ１０上に表示されたマウスカーソル（不図示）等で指示されたコマンドに基づいて、登録された種々のウインドウを開き、種々のデータ処理を実行する。ユーザはクライアントアプリケーションや各種サービスを使用する際、その設定などの操作に関するウインドウを開き、設定を行うことができる。尚、表示部はＣＲＴに限らず、液晶やプラズマ等を用いても良い。
【００２３】
ＲＡＭ２は、ＣＰＵ１の主メモリ、ワークエリア等として機能する。ＲＯＭ３は、フォント用ＲＯＭ（不図示）、プログラム用ＲＯＭ（不図示）、データ用ＲＯＭ（不図示）などを備えている。フォント用ＲＯＭ或いは外部メモリ１１は、上記文書処理等の際に使用するフォントデータ等を記憶する。プログラム用ＲＯＭ或いは外部メモリ１１は、ＣＰＵ１の制御プログラムであるオペレーティングシステム（以下、ＯＳ）等を記憶する。データ用ＲＯＭ或いは外部メモリ１１は、上述の文書処理等を行う際に使用する各種データを記憶する。又、外部メモリ１１に記憶されているプログラムは、実行時にＲＡＭ２に展開されて実行される。
【００２４】
キーボードコントローラ（ＫＢＣ）５は、キーボード（ＫＢ）９やポインティングデバイス（不図示）からの入力情報を制御する。ＣＲＴＣ６は、ＣＲＴ１０への表示を制御する。ディスクコントローラ（ＤＫＣ）７は、外部メモリ１１とのアクセスを制御する。ネットワークコントローラ（ＮＷＣ）８は、双方向性インターフェース２１を介してネットワーク１０６に接続されている。
【００２５】
ＫＢ９は、各種キーを備えている。ＣＲＴ１０は、図形、イメージ、文字、表等を表示する。外部メモリ１１はハードディスク（ＨＤ）、フロッピー（登録商標）ディスク（ＦＤ）等から構成されている。外部メモリ１１は、ブートプログラム、各種のアプリケーション、フォントデータ、ユーザファイル、編集ファイル等を記憶する。
【００２６】
なお、サーバ１０２の動作を仮想コンピュータ環境で実行しても良い。
【００２７】
［複合機の構成］
図３は、クライアント装置である図１における複合機１０１、１０５の構成例を示す図である。なお本実施例における複合機１０１には、印刷、スキャナ、ＦＡＸなどの複合機能を提供する画像形成装置の他に、それらの単機能を提供する装置などにも適用可能とする。本実施例では一般的な複合機の構成例を示す。また、クライアント装置として、ＰＣなどの情報処理装置を用いても構わない。
【００２８】
フィーダ３００（原稿自動送り部）は、スキャナ部３０１でスキャンニングを行う際に紙を送る機構である。原稿のスキャナ部３０１は、紙の情報をスキャニングして電子化を行う。ＵＩ部３０２は、複合機１０１の操作入力操作を受け付ける、情報を表示する機構である。
【００２９】
給紙部３０３は、印刷の際に印刷用紙を定着部３０４に送る。定着部３０４は、給紙部３０３から送られてきた用紙にトナーを定着させて印刷を行う。排紙部３０５は、定着部３０４にて印刷された用紙を排紙する。フィニッシング装置３０６は、排紙部３０５から排紙された紙を発注情報に従ってステープルやパンチといった処理を行う。そして排紙トレイ３０７は、最終的に印刷・フィニッシングされた印刷物を保持するトレイとなる。
【００３０】
［ソフトウェア構成］
図４は、本実施例に係るシステム全体のソフトウェアの構成を説明するブロック図である。
【００３１】
クライアント装置である複合機１０１、１０５は、ＬＡＮ１００および、ファイアウォール１０３を介して、インターネット１０４上のサーバ装置であるサーバ１０２と通信を行う。ファイアウォール１０３には、クライアント装置の代理応答を行うためのプロキシサーバ機能が含まれてもよい。また、図４では示されていないが、複合機１０１、１０５とサーバ１０２との間には、ファイアウォール１０３の他に、他の通信装置であるロードバランサやリバースプロキシなどの通信装置を介する場合も同様に処理を行える。
【００３２】
先ず、複合機１０１の構成について説明する。なお、複合機１０５も同様の構成を有するものとする。ＭＦＰコントローラ４０１は、メインコントローラ４０２、送受信部４０３、コネクション管理部４０４、再送間隔取得部４０５、コネクション作成部４０６、再送間隔判定部４０７などのソフトウェアコンポーネントを含む。これらのソフトウェアコンポーネントにより複合機１０１全体の制御を行う。例えば、これらのソフトウェアコンポーネントは、図３に示すフィーダ３００、スキャナ部３０１、ＵＩ部３０２、給紙部３０３、定着部３０４、排紙部３０５、フィニッシング装置３０６、排紙トレイ３０７などのハードウエアコンポーネントを制御する。
【００３３】
メインコントローラ４０２は、複合機１０１の主制御を行う。メインコントローラ４０２は、複合機１０１が備える送受信部４０３、コネクション管理部４０４、再送間隔取得部４０５、コネクション作成部４０６、再送間隔判定部４０７などの制御や状態監視を行う。
【００３４】
送受信部４０３は、サーバ１０２との通信を行う。このとき、送受信部４０３は、メインコントローラ４０２を介して、コネクション管理部４０４、再送間隔取得部４０５、コネクション作成部４０６、再送間隔判定部４０７などから取得したデータを用いて、サーバ１０２と通信を行う。
【００３５】
コネクション管理部４０４は、複合機１０１とサーバ１０２との間のプッシュ通信に係るコネクションを管理する。再送間隔取得部４０５は、サーバ１０２から定期的にＫｅｅｐ−Ａｌｉｖｅを行うための送信間隔を取得する。プッシュ通信においてコネクションを維持するために、再送間隔取得部４０５は、サーバ１０２が決定したＫｅｅｐ−Ａｌｉｖｅを行うための送信間隔を取得する。
【００３６】
コネクション作成部４０６は、複合機１０１とサーバ１０２との間でプッシュ通信を行うためのプッシュ通信用のコネクションを作成する。再送間隔判定部４０７は、サーバ１０２から取得したＫｅｅｐ−Ａｌｉｖｅを行うための送信間隔を判定し、複合機１０１が設定可能なＫｅｅｐ−Ａｌｉｖｅの送信間隔を決定する。
【００３７】
再送間隔判定部４０７は、サーバ１０２から取得したＫｅｅｐ−Ａｌｉｖｅの送信間隔が、複合機１０１の動作条件を満たすかを判定し、Ｋｅｅｐ−Ａｌｉｖｅの送信間隔を、動作条件に合致するように変更する。再送間隔判定部４０７のより詳しい動作については、実施例４にて説明する。
【００３８】
本実施例において、メインコントローラ４０２は、これらの部位などの監視を行い、適切な通信処理をサーバ１０２と行う事で複合機１０１とサーバ１０２との間のプッシュ通信のコネクションを管理する。ファイアウォール１０３などによって通信経路の途中でコネクションが切断されることを回避し、効率的なプッシュ通信を実現する。
【００３９】
次にサーバ１０２内について説明する。サーバ１０２が備える各処理部はそれぞれＲＯＭ３もしくは外部メモリ１１などに格納されたプログラムによって実現され、各処理部の処理は必要に応じて、ＲＡＭ２を用いてＣＰＵ１にて実行されるものとする。
【００４０】
送受信部４０８は、ＮＷＣ８を用いて、複合機１０１、１０５の送受信部４０３とサーバ１０２との間の情報を送受信する。Ｗｅｂサーバ４０９は、複合機の送受信部４０３とＲＥＳＴ（Ｒｅｐｒｅｓｅｎｔａｔｉｏｎａｌ  Ｓｔａｔｅ  Ｔｒａｎｓｆｅｒ）やＳＯＡＰ（Ｓｉｍｐｌｅ  Ｏｂｊｅｃｔ  Ａｃｃｅｓｓ  Ｐｒｏｔｏｃｏｌ）などのプロトコルを用いてやり取りを行うＷｅｂサービスサーバである。なお、これらのプロトコルは、本発明を限定するものではない。複合機とサーバ１０２との間の通信は、ＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）やＵＤＰ（Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ）、ＨＴＴＰ、ＳＳＬ（Ｓｅｃｕｒｅ  Ｓｏｃｋｅｔ  Ｌａｙｅｒ）、ＴＬＳ（Ｔｒａｎｓｐｏｒｔ  Ｌａｙｅｒ  Ｓｅｃｕｒｉｔｙ）などのプロトコルを用いても良い。
【００４１】
Ｗｅｂサーバ４０９は、複合機からの要求を受け取り、プッシュ通信制御部４１０に渡す。また、プッシュ通信制御部４１０から渡ってきた応答情報を送受信部４０８に渡す役割を行う。
【００４２】
次に、本発明の特徴となる構成例を説明する。プッシュ通信制御部４１０は、複合機とプッシュ通信を行うために必要な処理部を呼び出すための全体制御を司る。プッシュ通信制御部４１０は、プッシュ通信のコネクションを維持するために、通信ステータス情報保存部４１１、再送間隔決定部４１２、同一ドメイン判定部４１３、複数接続管理部４１４、接続先識別子管理部４１５、接続先判定部４１６の制御を行う。この処理において、プッシュ通信制御部４１０は、Ｗｅｂサーバ４０９、送受信部４０８を介してデータ通信を行い、複数の複合機からのリクエストを処理する事も可能である。
【００４３】
また、これらの処理が複数の物理コンピュータで処理される場合や、仮想コンピュータ上で処理される場合も本発明を適用できる。
【００４４】
さらに、サーバ１０２に対する処理要求元となる複合機が多数存在する場合は、コネクションを長時間、かつ、多数保持する必要がある。この場合、ネットワークロードバランサ、リバースプロキシ（不図示）を含めることで、より大規模なシステムを容易に構築できる。
【００４５】
通信ステータス情報保存部４１１は、プッシュ通信制御部４１０が管理する通信ステータス情報であるコネクション情報や接続先情報、通信ステータスなどの情報を記憶する。ここで保存される情報の例について、図９に示す。図９に示す通信ステータス情報として、通信を一意に識別する“ＩＤ”、通信を行った時刻を示す“時刻”、通信の相手先を示す“Ｃｌｉｅｎｔ”、通信のデータ種別を示す“Ｄａｔａ”、通信の結果を示す“Ｓｔａｔｕｓ”を項目として有する。更に、通信が成功した場合において、それまでに無通信であった時間の情報を保存している。なお、これらの情報のより詳細な扱いについては、処理と共に後述する。
【００４６】
再送間隔決定部４１２は、通信ステータス情報保存部４１１が記憶している通信ステータスから、コネクション毎のプッシュ通信においてコネクションを維持するために必要なＫｅｅｐ−Ａｌｉｖｅの送信間隔を決定する。
【００４７】
同一ドメイン判定部４１３は、プッシュ通信制御部４１０が管理する複合機の通信ステータス情報から、プッシュ通信のコネクションの切断条件が一致する同一ドメインに属する他の複合機を判定する。同一ドメインを判定する事で、過去の通信ステータス情報に一致する複合機の情報が無い場合も、同一ドメインに属する他の複合機の通信ステータス情報から適切なＫｅｅｐ−Ａｌｉｖｅの送信間隔を決定する事が可能となる。図４で示すシステム全体のソフトウェアの構成例では、複合機１０１および複合機１０５の２台の複合機が同一ドメインに属しているものとする。同一ドメイン判定部４１３のより詳細な動作については、実施例３にて説明する。
【００４８】
複数接続管理部４１４は、サーバ１０２と１の複合機との間における複数のコネクションを保持する。複合機とのコネクションが切断された場合に、サーバ１０２からその複合機に対して、切断されていない別のコネクションによりエラーの通知を行う。これにより、切断されたコネクションを迅速に復旧する事が可能となる。複数接続管理部４１４のより詳細な動作については、実施例２にて説明する。
【００４９】
接続先識別子管理部４１５は、複数接続管理部４１４が複合機との通信を判定するために、コネクション先の複合機を管理する。複合機のコネクション管理部４０４は、複合機を一意に確定するためのクライアント識別子を発行し、サーバ１０２との通信時にクライアント識別子を渡す。接続先識別子管理部４１５は、コネクション毎に接続先のクライアント識別子を管理する。
【００５０】
プッシュ通信制御部４１０は、プッシュ通信のコネクションを維持するために、通信ステータス情報保存部４１１、再送間隔決定部４１２、同一ドメイン判定部４１３、複数接続管理部４１４、接続先識別子管理部４１５、および接続先判定部４１６の制御を行う。
【００５１】
［処理シーケンス］
図４で示すシステム全体のソフトウェアの構成例では、複数の複合機１０１、１０５が存在するため、先ず１台の複合機が適切なＫｅｅｐ−Ａｌｉｖｅ間隔を決定する。本実施形態では、複合機間で通信を行うことにより、１台の複合機を選出する。なお、ＳＬＰ (Service Location Protocol)やＳＮＭＰ（Simple Network Management Protocol）でブロードキャスト通信やマルチキャスト通信を行う事で、同一ドメインにおける複合機の探索を行うようにしてもよい。また、本実施形態では、稼働時間が長い機器、ＣＰＵ使用率の低い機器を判定する事で１台の複合機を選出する方法を用いる。ただし、その他の機器のリソースや設定値から判定するようにしてもよい。これらの優先順位は、機器に事前に設定しておく場合や、ユーザが選択を行う事が出来る。
【００５２】
また、１台の複合機を決定する他の方法として、サーバ１０２が複合機からの接続時に決定する方法を用いるようにしても構わない。サーバ１０２は、新たな複合機が接続してきた際に、既に接続している同一ドメインの複合機、および、接続中の複合機の中から稼働時間が長い機器、CPU使用率の低い機器を判定する事で１台の複合機を選出する。サーバ１０２は、その他の機器のリソースや設定値から判定してもよい。
【００５３】
上述のようにして選出された１台の複合機は、適切なＫｅｅｐ−Ａｌｉｖｅ間隔を決定するために、Ｋｅｅｐ−Ａｌｉｖｅ間隔を調整しながらプッシュ通信を行う。Ｋｅｅｐ−Ａｌｉｖｅ間隔の調整方法としては、例えば以下のような手法を用いることができる。複合機は、初期値として例えば、１時間のＫｅｅｐ−Ａｌｉｖｅ間隔を設定する。その後、プッシュ通信を行い、１時間経過後にエラーが発生しない場合は、Ｋｅｅｐ−Ａｌｉｖｅ間隔を２時間に延ばす。さらに、通信エラーが発生しない場合は、更にＫｅｅｐ−Ａｌｉｖｅ間隔を延長する（例えば、１２時間、２４時間、１６８時間と順にＫｅｅｐ−Ａｌｉｖｅ間隔を延長していく）。なお、Ｋｅｅｐ−Ａｌｉｖｅ間隔の延長時間は、事前に固定値を設定しておいてもよいし、任意のランダム値を使うようにしてもよい。これらの処理により、任意の初期値からＫｅｅｐ−Ａｌｉｖｅ間隔を延長する事が可能になる。
【００５４】
また、適切なＫｅｅｐ−Ａｌｉｖｅ間隔を決定するための他の処理として、Ｋｅｅｐ−Ａｌｉｖｅ間隔が長すぎるために、プッシュ通信エラーが発生した場合に、適切なＫｅｅｐ−Ａｌｉｖｅ間隔を決定する処理例を示す。
【００５５】
図５は、本実施例に係る、複合機１０１とサーバ１０２、およびファイアウォール１０３の間における処理シーケンスを示す。本実施例において、複合機１０１とサーバ１０２の間で、プッシュ通信を遮断する通信機器としてファイアウォール１０３を例としている。ただし、ファイアウォール１０３に限るものではなく、通信を行わない場合にタイムアウトしてコネクションを切断する他の通信機器の場合でも同様である。また、複合機１０５とサーバ１０２との通信についても同様の流れで行われる。
【００５６】
Ｓ５０１にて、複合機１０１のコネクション管理部４０４は、コネクション作成部４０６において、サーバ１０２に対してプッシュ通信を行う場合に、ファイアウォール１０３に対してプロキシサービスのユーザ認証を行う。この結果、ファイアウォール１０３が複合機１０１を許可する場合は、ファイアウォール１０３は、その結果を複合機１０１に返信する。そして、複合機１０１はサーバ１０２に対して通信を開始する。なお、プロキシサービスがユーザ認証を必要としない場合は、このユーザ認証処理を省略しても構わない。
【００５７】
ファイアウォール１０３は、ユーザ認証を行うことにより、複合機１０１のＩＰアドレスやポート番号などの情報を記憶し、複合機１０１に対し、通信相手であるサーバ１０２への通信を許可する。ファイアウォール１０３は、この後の複合機１０１とサーバ１０２との間の通信状態を確認し、通信が終了したと判断した場合に、プロキシサービスが複合機１０１とサーバ１０２との間の通信を遮断する。
【００５８】
このとき、ファイアウォール１０３での通信遮断を実行するか否かの判定は、複合機１０１による認証時からの時間や、無通信状態に移行してからのタイムアウト時間、さらに、通信ステータスを監視し、コネクションが終了してからの経過時間などを用いて判定される。
【００５９】
なお、本実施例において、通信経路上の通信機器によるコネクションの遮断方法を限定するものではない。他の理由により通信が遮断される場合も本実施に含まれることは言うまでもない。
【００６０】
続いて、Ｓ５０２にて、複合機１０１のコネクション作成部４０６は、サーバ１０２のプッシュ通信制御部４１０に対し、プッシュ通信であるＷｅｂＳｏｃｋｅｔのＯｐｅｎｉｎｇ  Ｈａｎｄｓｈａｋｅを行う（この処理についての詳細は非特許文献１等を参照）。Ｏｐｅｎｉｎｇ  Ｈａｎｄｓｈａｋｅが成功し、複合機１０１とサーバ１０２との間にＷｅｂＳｏｃｋｅｔコネクションが確立すると、サーバ１０２は複合機１０１に対して、ファイアウォール１０３を越えてプッシュ通信が可能になる。
【００６１】
このとき、サーバ１０２のプッシュ通信制御部４１０は、プッシュ通信のステータス情報を通信ステータス情報保存部４１１に保存する。通信ステータス情報の一例を図９に示す。このＳ５０２における通信では、図９に示す例の場合、ＩＤ“１”に相当する情報が保存される。また、ここでサーバ１０２とプッシュ通信を行う複合機１０１のＩＤアドレスは、“１９２．１６８．１００．２００”が設定されているものとする。
【００６２】
なお、本実施例においてプッシュ通信としてＷｅｂＳｏｃｋｅｔを利用しているが、プッシュ通信の方法としてＷｅｂＳｏｃｋｅｔに限定するものではなく、他のプッシュ通信についても同様に適用可能である。
【００６３】
Ｓ５０３にて、サーバ１０２は、ＷｅｂＳｏｃｋｅｔのデータをファイアウォール１０３よりもイントラネット側にある複合機１０１に対して送信する。この時、ファイアウォール１０３は、サーバ１０２から複合機１０１に対する送信を許可しているため、ファイアウォール１０３よりもイントラネット側にある複合機１０１に対してＷｅｂＳｏｃｋｅｔのデータを送付する事が可能である。この時、サーバ１０２のプッシュ通信制御部４１０は、サーバ１０２と複合機１０１との間の送受信の状態をログとして時刻とともに通信ステータス情報保存部４１１に記憶する。
【００６４】
ファイアウォール１０３によって通信が遮断されていなければ、サーバ１０２から複合機１０１に対するＷｅｂＳｏｃｋｅｔのデータの送信が成功する（Ｓ５０４）。この時もＳ５０３と同様に、サーバ１０２のプッシュ通信制御部４１０は、サーバ１０２と複合機１０１との間の送受信の状態をログとして時刻とともに通信ステータス情報保存部４１１に記憶する。
【００６５】
Ｓ５０５にて、プッシュ通信制御部４１０は、通信ステータス情報保存部４１１に保持されている通信間隔から、プッシュ通信で通信が成功したコネクション有効時間を算出する。例えば、Ｓ５０３とＳ５０４の通信間隔が３０分の場合、コネクション有効時間を３０分と算出する。図９に示すＩＤ“１”とＩＤ“２”の通信において、通信間隔は３０分として算出されている。なお、Ｓ５０２とＳ５０３との間においてもコネクション有効時間を算出するようにしても構わない。
【００６６】
さらに、Ｓ５０６にて、プッシュ通信制御部４１０は、Ｓ５０５で算出したコネクション有効時間と、過去の最長のコネクション有効時間から、コネクション毎のコネクション最大有効時間を記録する。ここでのコネクション最大有効時間とは、図９に示す通信ステータス情報に記録された情報において、ある通信とその通信の一つ前の通信との通信間隔が最も長い値を指す。図９に示す例の場合、コネクション最大有効時間は、２４時間となる。
【００６７】
ファイアウォール１０３は、複合機１０１とサーバ１０２との間の無通信状態が長時間にわたって継続した場合などに、ＷｅｂＳｏｃｋｅｔコネクションをタイムアウトにより遮断する（Ｓ５０７）。ファイアウォール１０３がタイムアウトを判断するためのタイマーの値は、予め定義されているものとする。なお、タイムアウトした時点では、ファイアウォール１０３が複合機１０１とサーバ１０２に対して、ＷｅｂＳｏｃｋｅｔコネクションの切断を通知しないので、複合機１０１とサーバ１０２は、コネクションの切断を認識することができない。
【００６８】
Ｓ５０８にて、サーバ１０２は、ＷｅｂＳｏｃｋｅｔデータの送信を行う。ここで、Ｓ５０７でファイアウォール１０３がＷｅｂＳｏｃｋｅｔコネクションを遮断している場合は、ファイアウォール１０３によって通信エラーとなる。ファイアウォール１０３によって通信エラーが発生するため、Ｓ５０８での送信結果として、Ｓ５０９にて、サーバ１０２は、ファイアウォール１０３から送信された通信エラーを受信する。
【００６９】
Ｓ５１０では、プッシュ通信制御部４１０は、ＷｅｂＳｏｃｋｅｔデータの通信エラーの検出を行う。通信エラーとしては、ＴＣＰのリセット（ＲＳＴ）やｐｏｒｔ  ｕｎｒｅａｃｈａｂｌｅ、タイムアウトなどが検出できる。この時、サーバ１０２のプッシュ通信制御部４１０は、サーバ１０２と複合機１０１との間の送受信の状態をログとして時刻とともに通信ステータス情報保存部４１１に記憶する。なお、図９に示す例の場合、ＩＤ“５”に示すように、通信エラーの情報（すなわち、ＮＧ）が記憶される。
【００７０】
なお、ＷｅｂＳｏｃｋｅｔのコネクションが確立されている間はサーバ１０２から複合機１０１へのプッシュ通信が行えるが、ＷｅｂＳｏｃｋｅｔのコネクションがファイアウォール１０３で切断されると、以降、サーバ１０２から複合機１０１へのプッシュ通信が行えなくなる。このとき、複合機１０１がＫｅｅｐ−Ａｌｉｖｅを行うことで、サーバ１０２から複合機１０１に対するプッシュ通信が再開できる。本実施例において、複合機１０１は、Ｋｅｅｐ−ＡｌｉｖｅとしてＯｐｅｎｉｎｇ  Ｈａｎｄｓｈａｋｅを再実行しているが、Ｋｅｅｐ−Ａｌｉｖｅの方法を限定するものではない。
【００７１】
一般に、Ｋｅｅｐ−Ａｌｉｖｅを短期間で行うと、通信機器や通信回線が過負荷となる。一方、Ｋｅｅｐ−Ａｌｉｖｅの間隔を長期間にすると、ファイアウォール１０３でコネクションが遮断されてしまうので、サーバ１０２からデータを複合機１０１にプッシュ送信できない期間が長くなる。
【００７２】
Ｓ５１１では、複合機１０１は、サーバ１０２に対して、Ｋｅｅｐ−Ａｌｉｖｅを行う。複合機１０１は、適切なＫｅｅｐ−Ａｌｉｖｅ間隔（後述するコネクション最大有効時間）をサーバ１０２から通知されていなかったために、複合機１０１のデフォルトのＫｅｅｐ−Ａｌｉｖｅ間隔で送信を行ったものとする。なお、ここでのデフォルトのＫｅｅｐ−Ａｌｉｖｅの間隔の値は、予めユーザ等によって設定された初期値から徐々に延長していくように定義され、複合機１０１にて保持されているものとする。
【００７３】
Ｓ５１２では、サーバ１０２のプッシュ通信制御部４１０は、再送間隔決定部４１２が通信ステータス情報保存部４１１で保持するコネクション最大有効時間を、Ｓ５１１に対する返信パケットに付加して複合機に返信する。図９に示す例の場合、コネクション最大有効時間の値として、“２４時間”が送信される。
【００７４】
Ｓ５１３では、複合機１０１は、再送間隔取得部４０５は、Ｓ５１２でサーバ１０２から通知されたコネクション最大有効時間の値からＫｅｅｐ−Ａｌｉｖｅ間隔として設定する値を取得する。さらに、コネクション管理部４０４において、当該取得したＫｅｅｐ−Ａｌｉｖｅ間隔の値を設定する。
【００７５】
Ｓ５１４では、複合機１０１のコネクション管理部４０４は、Ｓ５１３で設定されたＫｅｅｐ−Ａｌｉｖｅ間隔にてファイアウォール１０３に対するプロキシのユーザ認証を行う。Ｓ５１５では、ファイアウォール１０３が複合機１０１とサーバ１０２のコネクションのタイムアウトのタイマーを再セットする。
【００７６】
その後、Ｓ５１６では、複合機１０１のコネクション管理部４０４は、ファイアウォール１０３がタイムアウトによりコネクション切断を行う前に、設定されたＫｅｅｐ−Ａｌｉｖｅ間隔でプロキシのユーザ再認証を行う。これにより、複合機１０１とサーバ１０２との通信が再度許可され、ファイアウォール１０３におけるタイムアウトのタイマーが再セットされることとなる。なお、ここでユーザの再認証時におけるＫｅｅｐ−Ａｌｉｖｅ間隔の開始時点は、前回のユーザ認証時を起点としてもよいし、サーバ１０２によって最後にプッシュ通信が行われた時点を起点としてもよい。
【００７７】
Ｓ５１６のユーザ再認証は、Ｓ５１３で設定されたＫｅｅｐ−Ａｌｉｖｅ間隔で行われるので、複合機１０１とサーバ１０２のコネクションが維持されることになる。したがって、Ｓ５１７では、サーバ１０２は、複合機１０１に対してプッシュ通信を行うことができる。これは、Ｓ５１６においてタイムアウトのタイマーをリセットさせることによって、コネクション切断による通信エラーを回避するためである。
【００７８】
なお、本実施例では、Ｓ５１４およびＳ５１６において、Ｋｅｅｐ−Ａｌｉｖｅとして、プロキシのユーザ認証を行っている。しかし、これに限定するものではなく、他のプロトコルにおいて、通信経路上の通信機器の遮断を回避する場合も同様に適用できる。
【００７９】
［プッシュ通信制御部における処理フロー］
図６は、サーバ１０２のプッシュ通信制御部４１０の処理フローを示す。これは、図５のシーケンスにおいて、サーバ１０２にて行われる処理を示したものである。本処理フローは、例えば、サーバ１０２が備えるＣＰＵ１が記憶部であるＲＯＭ３等に記憶されたプログラムをＲＡＭ２に読み出して、実行することにより実現される。
【００８０】
Ｓ６０１にて、プッシュ通信制御部４１０は、複合機１０１からのプッシュ通信リクエストを受信する。これは、図５におけるＳ５０２に対応する。
【００８１】
Ｓ６０２にて、プッシュ通信制御部４１０は、通信ステータス情報保存部４１１から複合機１０１の通信ステータス情報を取得し、当該取得した過去の通信状況に基づいて、コネクション最大有効時間が確定しているか判定する。なお、Ｓ６０２では、過去の通信ステータス情報として複合機１０１の通信ステータス情報だけでなく、同一ドメインに属する複合機１０５の通信ステータス情報も含めて判定を行う。
【００８２】
コネクション最大有効時間が確定していない場合は（Ｓ６０２にてＮＯ）、過去の通信ステータス情報から判定できないため、Ｓ６０４においてサーバ１０２は、デフォルトのコネクション最大有効時間を指定してクライアント（複合機）に応答する（図５のＳ５０２）。この場合、クライアント（複合機）はデフォルトのＫｅｅｐ−Ａｌｉｖｅ間隔を設定することになる。なお、Ｓ６０２でＮＯの場合、サーバ１０２は、コネクション最大有効時間を指定せずにクライアントへ応答するようにしても構わないが、いずれにしても、複合機はデフォルトのＫｅｅｐ−Ａｌｉｖｅ間隔を設定することとする。
【００８３】
コネクション最大有効時間が確定している場合は（Ｓ６０２にてＹＥＳ）、Ｓ６０３において、プッシュ通信制御部４１０は、通信ステータス情報保存部４１１に記憶された通信ステータス情報から、複合機１０１に対するプッシュ通信のコネクション最大有効時間を取得する。
【００８４】
Ｓ６０４にて、プッシュ通信制御部４１０は、Ｓ６０１の返信として、Ｓ６０３で取得したコネクション最大有効時間をクライアント（複合機１０１）へ返信する。この場合、クライアント（複合機）は当該通知されたコネクション最大有効時間に基づいてＫｅｅｐ−Ａｌｉｖｅ間隔を設定することになる。
【００８５】
コネクションが維持されている間は、サーバから複合機へプッシュ通信を行える（図５のＳ５０３、Ｓ５０４）。
【００８６】
ファイアウォール１０３により通信が遮断されると、サーバ１０２からのプッシュ通信に対してファイアウォール１０３からエラーが通知されるので（図５のＳ５０９）、Ｓ６０５にて、プッシュ通信制御部４１０は、プッシュ通信の通信失敗を検出する（図５のＳ５１０）。
【００８７】
プッシュ通信の失敗を検出した場合（Ｓ６０５にてＹＥＳ）、Ｓ６０６において、プッシュ通信制御部４１０は、通信ステータス情報保存部４１１から複合機１０１の通信ステータス情報を取得し、過去の通信状況からコネクション最大有効時間を算出する（図５のＳ５０５）。このとき、ログに残されている全ての通信状況を参照するのではなく、所定期間内のログ（または所定回数分のログ）を参照するように構成するのが望ましい。例えば、ログに残されている直近１週間のうちで最も長い無通信時間をコネクション最大有効時間とすればよい。このように最近のログを参照し且つ古いログは参照しないようにすれば、ファイアウォール１０３のタイムアウト設定が変更されたとしても、最近の通信状況から最適なコネクション最大有効時間を算出できるようになる。
【００８８】
Ｓ６０７において、プッシュ通信制御部４１０は、Ｓ６０４でクライアント（複合機１０１）へ通知したコネクション最大有効時間（もしくはデフォルトのコネクション最大有効時間）と、Ｓ６０６で算出したコネクション最大有効時間が異なるか判定を行う。コネクション最大有効時間が異なる場合（Ｓ６０７にてＹＥＳ）、Ｓ６０８において、プッシュ通信制御部４１０は、Ｓ６０６で算出したコネクション最大有効時間を通信ステータス情報保存部４１１に記憶する。
【００８９】
なお、プッシュ通信制御部４１０は、プッシュ通信エラー発生時以外にも有効時間を随時更新するようにしてもよい。例えば、通信成功時にＳ５０６で過去の通信から算出される有効時間が以前のコネクション最大有効時間を超えた時点で、当該算出したコネクション最大有効時間を通信ステータス情報保存部４１１に記憶するように構成すれば、有効時間を随時更新できるようになる。
【００９０】
Ｓ６０９において、プッシュ通信制御部４１０は、再送間隔決定部４１２が通信ステータス情報保存部４１１で保持するコネクション最大有効時間を、複合機１０１からのリクエストに対する返信パケットに付加して返信する（図５のＳ５１２）。
【００９１】
Ｓ６１０において、プッシュ通信制御部４１０は、複合機１０１からのプッシュ通信終了リクエスト、または、サーバ１０２のプッシュ通信終了リクエストを判定する。プッシュ通信終了と判定した場合（Ｓ６１０にてＹＥＳ）は、本処理フローを終了する。
【００９２】
［コネクション管理部における処理フロー］
図７は、複合機１０１のコネクション管理部４０４の処理フローを示す。これは、図５のシーケンスにおいて、複合機１０１にて行われる処理を示したものである。本処理フローは、例えば、複合機１０１が備えるＣＰＵ（不図示）が記憶部に記憶されたプログラムをＲＡＭ（不図示）に読み出して実行することより実現される。なお、複合機１０１の代わりに複合機１０５がサーバ１０２と通信を行う場合にも同様の処理が行われる。
【００９３】
Ｓ７０１において、コネクション管理部４０４は、コネクション作成部４０６により、サーバ１０２に対するＷｅｂＳｏｃｋｅｔコネクションを確立する。サーバ１０２からデフォルトのコネクション最大有効時間が送信された場合（もしくはコネクション最大有効時間が送信されなかった場合）、Ｓ７０２において、コネクション管理部４０４は、Ｋｅｅｐ−Ａｌｉｖｅ間隔の初期値を設定する。一方、サーバ１０２からコネクション最大有効時間が送信されてきた場合（図５のＳ５１２）、Ｓ７０３において、コネクション管理部４０４は、再送間隔取得部４０５でサーバ１０２からコネクション毎のコネクション最大有効時間を取得する。
【００９４】
Ｓ７０４において、コネクション管理部４０４は、当該取得したコネクション最大有効時間が、Ｋｅｅｐ−Ａｌｉｖｅ間隔と異なるか否かを判定する。コネクション最大有効時間が異なる場合は（Ｓ７０４にてＹＥＳ）、Ｓ７０５へ進む。コネクション最大有効時間がＫｅｅｐ−Ａｌｉｖｅ間隔と同一である場合は（Ｓ７０４にてＮＯ）、Ｓ７０６へ進む。
【００９５】
Ｓ７０５において、コネクション管理部４０４は、当該取得したコネクション最大有効時間の値を用いて、プッシュ通信においてコネクションを維持するために適切なＫｅｅｐ−Ａｌｉｖｅ間隔の設定を更新する。これは、図５のＳ５１３に対応する。Ｓ７０６において、コネクション管理部４０４は、Ｓ７０５で設定されたＫｅｅｐ−Ａｌｉｖｅ間隔でプロキシのユーザ認証を行う。これは、図５のＳ５１６に対応する。そして、本処理フローを終了する。
【００９６】
これにより、サーバ１０２は、ファイアウォール１０３のタイムアウト時間を越える無通信状態の場合も、コネクション切断による通信エラーを回避してプッシュ通信を行えるようになる。
【００９７】
以上説明した実施例１によれば、ファイアウォール１０３がプッシュ通信のコネクションを切断した場合、サーバ１０２においてコネクション切断を検出する（Ｓ５１０）。そして、サーバ１０２は最近の通信状況に基づいてコネクションの最大有効時間を複合機１０１に通知する（Ｓ５１２）。さらに、クライアント（複合機１０１）は、当該通知されたコネクションの最大有効時間を用いて、適切なＫｅｅｐ−Ａｌｉｖｅ間隔を設定し直すことで、適切な時間間隔でプロキシのユーザ再認証を行うので、コネクションを維持することができる。
【００９８】
よって、通信エラーの発生し難い、効率的な通信システムを提供することが可能となる。特に、クライアントが自律的にＫｅｅｐ−Ａｌｉｖｅ間隔を決定できない、かつ、サーバ通信エラーを検出してもクライアントに即時に通信エラーを送信できない通信環境においても、通信エラーを削減できる通信システムを提供することが可能となる。
【００９９】
＜実施例２＞
実施例１において、複合機１０１とサーバ１０２との間のプッシュ通信コネクション数は、１つのコネクションの例を示した。本実施例においては、複合機１０１とサーバ１０２との間で複数のプッシュ通信コネクションを作成する場合の例を示す。
【０１００】
複数のコネクションを同一のサーバとクライアントとの間で作成する場合に、切断されていないコネクションが存在する場合は、その回線を優先して使う事により複合機からのＫｅｅｐ−Ａｌｉｖｅの送信を減らすことができる。つまり、切断されていないコネクションを利用し、切断されたコネクションの復旧を試みる。コネクションの復旧が成功した場合は、Ｋｅｅｐ−Ａｌｉｖｅの送信を減らすことが可能となる。
【０１０１】
このため、サーバ１０２のプッシュ通信制御部４１０は、管理対象の複数のコネクションから、同一の複合機のコネクション管理部４０４を判定する必要がある。そこで、複合機のコネクション管理部４０４は、サーバ１０２へのコネクション作成時に、一意となる複合機のコネクション管理部４０４の識別子を通知する。
【０１０２】
サーバ１０２のプッシュ通信制御部４１０は、複合機のコネクション管理部４０４の識別子を複数接続管理部４１４で管理する。識別子としてはＵＵＩＤ（Ｕｎｉｖｅｒｓａｌｌｙ  Ｕｎｉｑｕｅ  Ｉｄｅｎｔｉｆｉｅｒ）のような一意となる識別子で管理する。このとき、各複合機それぞれにおいてコネクション管理部４０４は一つが設けられているものとする。なお、複数のコネクションが同一の接続先とのコネクションであることを特定できれば、どのように識別子を割り振っても構わない。
【０１０３】
複数接続管理部４１４は、コネクション毎の接続先を管理する接続先識別子管理部４１５に接続先となる識別子を登録する。複数接続管理部４１４は、接続先識別子管理部４１５のデータから接続先判定部４１６で同一の複合機の判定を行う。
【０１０４】
サーバ１０２のプッシュ通信制御部４１０は、複数接続管理部４１４の管理する接続先の情報から同一の接続先へのコネクションを判定する。プッシュ通信制御部４１０は、同一の接続先へのコネクションが存在する場合は、コネクション切断によるプッシュ通信回線の通信エラーが発生した場合、同一の接続先への別のコネクションを利用して、切断されたコネクションを復旧し、データ転送を行う。なお、復旧方法については、例えば、切断されていないコネクションを介して、再度ＷｅｂＳｏｃｋｅｔ  Ｏｐｅｎｉｎｇ  Ｈａｎｄｓｈａｋｅを複合機１０１に行わせるようにしても構わない。また、他の方法を用いても構わない。
【０１０５】
また、冗長化するプッシュ通信の回線は、同一プロトコルである必要はない。サーバ１０２のプッシュ通信制御部４１０から、複合機のコネクション管理部４０４に通信可能な回線を事前に設定しておくことにより、他のプロトコルを使う事も可能である。
【０１０６】
例えば、Ｅメール、ＸＭＰＰ（Ｅｘｔｅｎｓｉｂｌｅ  Ｍｅｓｓａｇｉｎｇ  ａｎｄ  Ｐｒｅｓｅｎｃｅ  Ｐｒｏｔｏｃｏｌ：ＲＦＣ６１２１）、ＳＩＰ（Ｓｅｓｓｉｏｎ  Ｉｎｉｔｉａｔｉｏｎ  Ｐｒｏｔｏｃｏｌ：ＲＦＣ３２６１）などのプロトコルを使い、コネクションを複数用意しておくことができる。
【０１０７】
以上、コネクションが切断された場合でも、切断されていないコネクションが存在する場合には、これらのコネクションを用いることで、コネクションを復旧する。これにより、プッシュ通信のコネクションを継続的に維持し、通信エラーの発生しにくい、効率的なプッシュ通信システムを構築する事が可能となる。
【０１０８】
＜実施例３＞
本実施例３においては、同一ドメイン上に複数のプッシュ通信コネクションを作成する場合の例を示す。同一ドメインに複数の複合機（複合機１０１、複合機１０５）が接続されている例を示す。本実施例では、複合機１０１、１０５とサーバ１０２との間が同一のファイアウォール１０３の場合、コネクションを切断するネットワーク機器であるファイアウォール１０３が同一条件で切断する場合に、効率的なプッシュ通信を行うシステムを構築する例を示す。
【０１０９】
同一のファイアウォール１０３がサーバ１０２との間に存在する複数の複合機１０１、１０５に対しては、コネクション最大有効時間を同一の値として扱う。これにより、プッシュ通信のコネクションのエラーが発生する前に、複合機１０１、１０５の適切なＫｅｅｐ−Ａｌｉｖｅ間隔を決定できる。
【０１１０】
複数の複合機１０１、１０５のドメインが同一の場合は、サーバ１０２との通信経路上に同一のファイアウォール１０３が存在する可能性が高い。そのため、コネクションを切断するネットワーク機器であるファイアウォール１０３が、同一であることにより、同一の条件（タイムアウト時間など）で切断する可能性が高い。
【０１１１】
サーバ１０２の同一ドメイン判定部４１３は、複数の複合機が同一のドメインに属するか否かの判定を行う。これによりドメインが一致した場合には、ファイアウォール１０３が同一であると判定し、同一のドメインのコネクション最大有効時間を再送間隔決定部４１２に通知する。
【０１１２】
例えば、ｘｘｘ００１．ｙｙｙ．ｃｏ．ｊｐの複合機Ａと、ｘｘｘ００２．ｙｙｙ．ｃｏ．ｊｐの複合機Ｂとが存在するとする。このとき、複合機Ａがサーバ１０２に対して、ＷｅｂＳｏｃｋｅｔのＯｐｅｎｉｎｇ  Ｈａｎｄｓｈａｋｅを行う場合、同一ドメイン判定部４１３は、複合機Ｂが、同一ドメインｙｙｙ．ｃｏ．ｊｐであると判定する。さらに、ｘｘｘ００２．ｙｙｙ．ｃｏ．ｊｐのコネクション最大有効時間が６０分である場合、同一ドメイン判定部４１３は、この値を再送間隔決定部４１２に通知する。このため、プッシュ通信制御部４１０は、複合機１０１に対して、６０分のＫｅｅｐ−Ａｌｉｖｅ間隔を通知する。再送間隔取得部４０５は、６０分以内でＫｅｅｐ−Ａｌｉｖｅの送信を行う。
【０１１３】
［プッシュ通信制御部における処理フロー］
図８は、サーバ１０２のプッシュ通信制御部４１０における同一ドメイン制御フローを示す。本処理フローは、例えば、サーバ１０２が備えるＣＰＵ１が記憶部であるＲＯＭ３等に記憶されたプログラムをＲＡＭ２に読み出して、実行することにより実現される。
【０１１４】
本処理は、実施例１のＳ６０２のコネクション最大有効時間が確定しているか判定を行う処理で行うことも可能である。
【０１１５】
Ｓ８０１では、プッシュ通信制御部４１０は、同一ドメイン判定部４１３において、同一ドメインの過去の接続履歴を取得する。そして、Ｓ８０２にて、プッシュ通信制御部４１０は、同一ドメイン判定部４１３において、同一ドメインに属する他の複合機の接続履歴があるか検索する。同一ドメインに属する他の複合機の接続履歴がある場合には（Ｓ８０２にてＹＥＳ）、Ｓ８０３へ進む。一方、接続履歴が無い場合には（Ｓ８０２にてＮＯ）、Ｓ８０４へ進む。
【０１１６】
Ｓ８０３では、プッシュ通信制御部４１０は、再送間隔決定部４１２において、デバイス初期値情報でＫｅｅｐ−Ａｌｉｖｅ間隔の値を設定する。そして、Ｓ８０５へ進む。
【０１１７】
Ｓ８０４では、プッシュ通信制御部４１０は、同一ドメイン判定部４１３において、同一ドメインの履歴情報から取得されたコネクション最大有効時間の値を用いてＫｅｅｐ−Ａｌｉｖｅ間隔の値を設定する。そして、Ｓ８０５へ進む。
【０１１８】
Ｓ８０５では、プッシュ通信制御部４１０は、複合機１０１に対して、コネクション最大有効時間の送信を行う。そして、本処理フローを終了する。
【０１１９】
なお、本処理は、例えば、同一の複合機に対するコネクションにおけるコネクション最大有効時間が更新された場合などに実行するようにしても構わない。
【０１２０】
以上、本実施例によれば、ファイアウォール１０３がプッシュ通信のコネクションを切断した場合に、サーバ１０２が同一ドメインに属する他の複合機の情報からコネクション最大有効時間を検出する。そして、この値を用いて適切なＫｅｅｐ−Ａｌｉｖｅ間隔でプロキシのユーザ再認証を行うことできる。このため、効率的な通信システムを提供することが可能となる。
【０１２１】
＜実施例４＞
本実施例では、クライアント装置である複合機１０１の動作条件に従って、Ｋｅｅｐ−Ａｌｉｖｅの再送間隔を決定する構成について説明する。複合機１０１の再送間隔判定部４０７は、サーバ１０２から取得したＫｅｅｐ−Ａｌｉｖｅを行うための送信間隔を判定し、複合機１０１が設定可能な送信間隔を決定する。再送間隔判定部４０７は、サーバ１０２から取得したＫｅｅｐ−Ａｌｉｖｅの送信間隔が、複合機１０１の動作条件に合致しない場合は、複合機１０１の動作条件に従ってＫｅｅｐ−Ａｌｉｖｅの送信間隔を変更する。
【０１２２】
複合機１０１の動作条件としては、電力消費設定ポリシーや、通信設定ポリシーなどによって決定する。また、複合機１０１の動作条件を優先するのか、サーバ１０２のコネクション最大有効時間を優先するのかの動作条件設定は、複合機１０１の管理ソフトウエア（不図示）やＵＩ部３０２などで設定を行う。
【０１２３】
例えば、複合機１０１が省電力動作中でＫｅｅｐ−Ａｌｉｖｅの送信間隔を１時間よりも長くする設定がなされているとする。その場合に、サーバ１０２から取得したコネクション最大有効時間が１５分である場合には、複合機１０１は、動作条件である送信間隔を優先し、１時間よりも長く設定する。そのため、サーバ１０２のコネクション最大有効時間である１５分に対して、複合機１０１は、Ｋｅｅｐ−Ａｌｉｖｅの送信間隔を１時間に設定する。
【０１２４】
また、コネクション最大有効時間に対して、Ｋｅｅｐ−Ａｌｉｖｅの送信間隔を変更する判断を複合機１０１の管理ソフトウェアやＵＩ部３０２などで設定を行う。例えば、コネクション最大有効時間とＫｅｅｐ−Ａｌｉｖｅの送信間隔の差異が所定の閾値よりも小さい場合は、複合機１０１のＫｅｅｐ−Ａｌｉｖｅの送信間隔の変更を行わないなどの設定を行えるようにしてもよい。例えば、所定の閾値を３０分として設定することで、送信間隔の変更を判断することができる。
【０１２５】
以上、本実施例によれば、実施例１の効果に加え、複合機の動作条件に応じたＫｅｅｐ−Ａｌｉｖｅ間隔の設定が可能となる。このため、クライアントの動作設定に従った効率的な通信システムを提供することが可能となる。
【０１２６】
＜その他の実施形態＞
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
2013211842.tif 000003
【図２】
2013211842.tif 000004
【図３】
2013211842.tif 000005
【図４】
2013211842.tif 000006
【図５】
2013211842.tif 000007
【図６】
2013211842.tif 000008
【図７】
2013211842.tif 000009
【図８】
2013211842.tif 000010
【図９】
2013211842.tif 000011