以下、図面を参照して、本発明の実施形態を説明する。
図1に、実施形態の印刷制御システムの一例を示す。図1に例示するシステムは、複数の印刷サーバ100、データ記憶装置102、及びロードバランサ106を有する。
印刷サーバ100は、プログラムを実行可能なコンピュータ上で、印刷サービス機能を表すプログラムを実行することにより構成される装置である。ここでいうコンピュータは、物理的に存在する装置に限定されるものではなく、仮想マシンであってもよい。例えば、サーバ100は、IaaS(Infrastructure as a Service)タイプ等のクラウドコンピューティングサービス(以下単に「クラウド」と呼ぶ)が提供する仮想マシン(VM:Virtual Machine)であってもよい。以下では、印刷サーバ100がクラウド上の仮想マシンである場合を代表例にとって説明する。ただし、本実施形態の仕組みは、印刷サーバ100が物理的に実在する装置である場合にも適用可能である。
図示の例では、印刷サーバ100は、1以上の論理プリンタ1002及び1以上の物理プリンタ1004を生成し、動作させることが可能である。論理プリンタ1002及び物理プリンタは、印刷システムの業界標準の1つであるDPA(Document Printing Application)(ISO/IEC 10175)に規定された仮想プリンタのオブジェクトである。これら2種類のプリンタ・オブジェクトにより印刷のための制御処理を分担する。大略的には、論理プリンタ1002はユーザからの印刷指示の受付処理を行い、物理プリンタ1004は、その印刷指示に応じた印刷のために実プリンタ104を制御する。実プリンタ104は用紙等の媒体に対して実際に印刷を行う、物理的に実在するプリンタである。論理プリンタ1002と物理プリンタ1004の機能分担は、実施形態の制御にとって本質的なことではないので、これ以上の説明は省略する。なお、以下では、論理プリンタ1002と物理プリンタ1004の区別の必要がない場合は、それらを仮想プリンタと総称する。
物理プリンタ1004は、1以上の実プリンタ104に対応づけられており、それら対応する1以上の実プリンタ104を制御して印刷処理を実現する。図示例では各物理プリンタ1004はそれぞれ1つの実プリンタ104に対応づけられているが、これはあくまで一例にすぎない。
論理プリンタ1002は、1以上の物理プリンタ1004に対応づけられている。図1では、互いに対応する論理プリンタ1002と物理プリンタ1004との間を線で結ぶことで、その対応関係を示している。ここでいう「対応関係」は、一方が他方を制御又は管理するといった主従関係があることまでは要求しない(もちろんそのような主従関係がある実装形態も考え得る)。この「対応関係」は、論理プリンタ1002が受け付けた印刷指示に応じた印刷処理をその論理プリンタ1002と線でつながる物理プリンタ1004が担当するという、同じ印刷指示についてのジョブを担当するという意味での対応関係である。なお、ここでいうジョブとは、印刷制御システム又はその各構成要素が、クライアントから受けた印刷指示に応じて行う処理のことである。
なお、印刷サーバ100は、図1に示した論理プリンタ1002及び物理プリンタ1004の他に、論理プリンタ1002及び物理プリンタ1004による印刷制御処理を管理するための各種機能を有するが、これについては後で説明する。
データ記憶装置102は、システム内の複数の印刷サーバ100によって共用される記憶装置である。各印刷サーバ100(及び当該サービスが管理する論理プリンタ1002,物理プリンタ1004等のオブジェクト)は、クライアントからの印刷指示に応じた印刷を実現するために必要なデータをデータ記憶装置102に格納する。また各印刷サーバ100は、データ記憶装置102に記憶されたデータを必要に応じて参照し、印刷を実現するための処理を実行する。
データ記憶装置102に記憶されるデータには、各論理プリンタ1002や各物理プリンタ1004を定義する定義情報(後述するプリンタテーブル)が含まれる。
また、論理プリンタ1002や物理プリンタ1004が実行しているジョブの処理情報をデータ記憶装置102に記憶してもよい。ジョブの処理情報とは、論理プリンタ1002又は物理プリンタ1004が当該ジョブのための一連の処理の中で処理の対象とする情報、処理の途中又は最終の結果として出力する情報、及びそれら一連の処理の管理のための情報等の総称である。なお、一連の処理の途中の処理結果は、その一連の処理の中の後の処理での処理対象となる場合もある。
例えば、クライアントから印刷指示に付随して受け取った印刷データ(印刷すべき文書をPDL等で記述したデータ)は、ジョブにおける処理の対象となるデータであり、ジョブの処理情報に含まれる。なお、PDLとはPage Description Languageの略であり、ページ記述言語を意味する。PDF(Portable Document Format)もPDLの一種として用いられる。
また、印刷サーバ100がPDLで記述された印刷データを解釈することにより生成される印刷可能データは、ジョブの一連の処理のうちの解釈処理の結果のデータであると共に、実プリンタ104での印刷処理の対象となるデータであり、ジョブの処理情報に含まれる。この印刷可能データは、実プリンタ108で印刷処理が可能なデータ形式であればよく、実プリンタ108で解釈可能なPDL形式のデータやラスター画像データ等のデータである。また、印刷サーバ100がPDLの印刷データをいったん中間形式のデータに変換し、その中間形式データをラスター画像データに変換する方式を採用している場合、中間形式データもジョブの処理情報の一例である。なお、中間形式とは、印刷対象の文書をPDLとラスター画像の中間の粒度で表現するデータ形式であり、例えばディスプレイリストがその一例である。
また、クライアントから印刷指示に伴って受け取った印刷属性(印刷部数、用紙サイズ、片面印刷か両面印刷か、カラー印刷かモノクロ印刷か等)及びその印刷指示のためのジョブに付与した一意なジョブID(識別情報)等を含むジョブの管理情報も、データ記憶装置102に記憶される処理情報の一例である。
データ記憶装置102に記憶されるジョブの処理情報は、ジョブの進捗に合わせて更新されるようにしてもよい。データ記憶装置102内のジョブの処理情報の更新は、例えば、別のサーバ100へと移動(配置換え)されるために論理プリンタ1002や物理プリンタ1004等の仮想プリンタが停止される際に実行される。例えば、仮想プリンタが上位の管理装置(例えば配置管理装置)からの命令に応じて停止する場合に、それまで実行していた処理の結果のデータ(例えば停止指示を受けた時点でPDLデータを中間形式データへ変換し終わっていればその中間形式のデータ)をデータ記憶装置102に格納する等である。
また、ジョブを構成する各処理が完了するごとに、完了した処理の処理結果を反映するようデータ記憶装置102内の当該ジョブの処理情報を更新するという方式も可能である。例えば、クライアントからをPDLデータを受け付ける処理が完了した段階、PDLデータを中間形式データに変換する処理が完了した段階、及び中間形式データを(またはPDLデータを直接)印刷可能データに変換する処理が完了した段階等といった段階ごとに、データ記憶装置102に対してそれら各段階の処理結果のデータ(PDL、中間形式、ラスター画像等の印刷可能データなど)を格納する等である。また、既に受付済みのジョブについての印刷属性の変更指示をクライアントから受け取った場合に、その指示に応じて、データ記憶装置102内の当該ジョブの管理情報を変更するようにしてもよい。
データ記憶装置102は、1つの例では、クラウド上のVM(仮想マシン)又は、クラウド上のストレージサービスとして実現される。また、データ記憶装置102は、物理的に実在する装置であってももちろんよい。データ記憶装置102としては、冗長化技術等により高い故障耐性を持つものを用いてもよい。
ロードバランサ106は、クライアントから本システムに対して到来する各種の要求を、本システム内の複数の印刷サーバ100に振り分けることで、それら複数の印刷サーバ100の間の負荷分散を実現する。ロードバランサ106が用いる振り分け方式には、特に限定はない。ラウンドロビン方式等の単純な方式を用いてもよいし、より高度な方式を用いてもよい。
例えば、クラウドサービスが提供する一般的なロードバランサは、クラウド上に実現される個別のアプリケーションシステム(本実施形態では、印刷制御システム)に依存しない要求振り分け方式を採用している。すなわち、そのような一般的なロードバランサは、アプリケーションシステムにおいてやりとりされる要求の中身を考慮せずに、ラウンドロビン等の単純な方式で振り分けを行う。例えば、クライアントから到来する印刷指示のデータは、その指示の宛先である論理プリンタ1002を特定する情報を含んでいるが、そのような一般的なロードバランサは、印刷指示の中身である宛先の情報を見ず、その宛先情報とは無関係にその印刷指示の転送先を決定する。したがって、印刷サーバ100(又はその中の論理プリンタ1002等の要素)が受け取った要求が自分宛ではなく、他の印刷サーバ100等に宛てたものである場合もある。自分宛でない要求を受け取った印刷サーバ100は、配置管理装置への問合せによりその要求の宛先が存在するサーバ100を特定し、特定したサーバ100に対してその要求をリダイレクトする。
次に、図2を参照して、印刷サーバ100及びデータ記憶装置102の内部構成の一例を説明する。
印刷サーバ100は、論理プリンタ1002、物理プリンタ1004、要求受付解析部1006、要求処理部1008、リダイレクト処理部1010、セッション維持時間決定部1112及び応答部1114を有する。論理プリンタ1002及び物理プリンタ1004は、印刷サーバ100内に複数実行されてもよいし、1つも実行されなくてもよい。印刷サーバ100は、システム管理者からの指示やあらかじめインストールされた管理プログラムの実行により、印刷サーバ100内に論理プリンタ1002又は物理プリンタ1004を追加したり、印刷サーバ100内に存在する論理プリンタ1002又は物理プリンタ1004を削除したりする。
論理プリンタ1002は、例えば、ジョブの受付処理を行う。すなわち、クライアントから送られてくる印刷指示は、宛先の論理プリンタ1002の指定を含んでおり、宛先の論理プリンタ1002は、その印刷指示を受け取ると、その印刷指示に対応するジョブを生成する。ジョブの生成では、例えばそのジョブのID屋印刷属性などを含むジョブの管理情報を生成してデータ記憶装置102に格納し、その管理情報がこの印刷制御システム内(他の印刷サービスも含む)の様々な要素(当該論理プリンタ1002自身や、関連する物理プリンタ1004等)から参照できるようにする。
物理プリンタ1004は、この例では、対応する実プリンタ104の状態の監視、その実プリンタ104の制御、印刷対象のPDLデータの中間データや印刷可能データへの変換、ジョブの状態管理等を行う。
要求受付解析部1006は、クライアント(ユーザ)からの要求メッセージを、ロードバランサ106経由で受信する。そして、その要求メッセージを解析して、要求種別(すなわちコマンド)、及びそのコマンドに対応する処理パラメータを抽出する。抽出されるパラメータには、そのコマンドの操作対象となるオブジェクト(例えば論理プリンタ1002や物理プリンタ1004、ジョブ等)を特定する情報が含まれる。
例えば、クライアントからの要求とそれに対する印刷サーバ100からの応答は、HTTP(HyperText Transfer Protocol)にマップされて転送される。この場合、要求の種別は、例えばHTTPメッセージのヘッダ中の特定の要素(例えばメッセージタイプ要素)の値として指定されるようにしてもよい。これには例えば、クライアント上の印刷要求を発するアプリケーションが、印刷サーバ100に対するコマンドを、HTTPメッセージのヘッダ中に特定の要素の値として書き込むようにすればよい。要求受付解析部1006は、HTTP要求のヘッダ中の特定の要素の値を、要求種別として認識する。なお、要求種別は、HTTPボディ内のアプリケーションデータ中から抽出するようにしてもよい。
印刷サーバ100に対する要求の種別(コマンド)には、例えば図8に示すようなものがある(ただしこれはあくまで例にすぎない)。図8に例示した各コマンドは、それぞれ「操作対象クラス」の欄に示されるオブジェクトクラスへの操作を示す。例えば、コマンド「CreateLogicalPrinter」は、印刷サーバ100に対して新たな論理プリンタ1002の生成(追加)を要求するコマンドである。また、コマンド「CreateJob」は、パラメータで指定した宛先の論理プリンタ1002に対して、新たなジョブの生成を要求するコマンドであり、コマンド「CancelJob」は、パラメータで指定されたジョブの削除を要求するコマンドである。コマンド「CreateContent」は、印刷データ(例えばPDLデータ)をクライアントから印刷サーバ100に転送し、印刷サーバ100内に印刷ジョブのコンテントとして登録することを要求するコマンドである。
要求のパラメータは、例えばHTTPメッセージのボディ中の印刷要求本体のデータに含まれる。要求受付解析部1006は、HTTP要求のボディを解析することで、要求種別に対応するパラメータの値を認識する。1つの例では、パラメータは、HTTPメッセージのボディ中に、XML(eXtensible Markup Language)でシリアライズされた印刷要求データの一部として含まれる。この場合、要求受付解析部1006は、ボディ中のXMLデータを解析することで、指定された要求種別に対応するパラメータを得る。
要求の操作対象はパラメータ内に記述されており、例えば操作対象クラスごとに識別方法が異なる。操作対象クラスが論理プリンタまたは物理プリンタの場合にはプリンタ名により操作対象を識別する。操作対象クラスがジョブの場合には、ジョブID(識別情報)で操作対象を識別する。
要求処理部1008は、要求受付解析部1006から、解析結果であるコマンドとパラメータを受け取り、パラメータに含まれる操作対象オブジェクトの処理を担当する印刷サーバ100を、図示省略した配置管理装置に問い合わせる。配置管理装置は、各印刷サーバ100における論理プリンタ1002や物理プリンタ1004の生成、削除を監視(例えば印刷サーバ100が仮想プリンタの生成や削除を配置管理装置に通知するなどの方法を用いればよい)しており、その監視に従ってデータ記憶装置102内の論理プリンタテーブル1021や物理プリンタテーブル1022上の各エントリの内容をメンテナンスしている。配置管理装置は、その問合せに応じて、それらテーブルから、パラメータに示された論理プリンタ1002又は物理プリンタ1004の配置先サーバを求め、求めた配置先サーバを要求処理部1008に応答する。要求処理部1008は、この応答に示される配置先サーバが自サーバであれば、自サーバ100にてそのコマンドを実行する。その応答に示される配置先サーバが自サーバでなければ、リダイレクト処理部1010にリダイレクト処理を依頼する。リダイレクト処理部1010は、その配置先サーバに対して、その要求をリダイレクトすると共に、その要求を処理したその配置先サーバからの応答を受け取り、その応答を要求処理部1008に渡す。要求処理部1008は、リダイレクト処理部1010から受け取った応答を応答部1114に渡す。
より具体的な例を挙げると、要求処理部1008は、要求受付解析部1006の解析結果から、コマンド、操作対象クラス、操作対象オブジェクトを得る。そして、操作対象クラスが、論理プリンタ又は物理プリンタの場合には、配置管理装置に対して操作対象オブジェクトの識別情報(論理プリンタ又は物理プリンタのID)を含んだ問合せを送る。この問合せに対し、配置管理装置は、論理プリンタテーブル1021又は物理プリンタテーブル1022からその識別情報に対応するオブジェクトの配置先サーバのIDを求め、更にサーバテーブル1024からその配置先サーバのIPアドレスを求め、配置先サーバのIDとIPアドレスを含んだ応答を要求処理部1008に返す。その応答に含まれるサーバIDが自サーバのIDと一致する場合には、操作対象オブジェクトである論理プリンタ又は物理プリンタは自サーバ内にある。この場合、要求処理部1008は、要求受付解析部1006の解析結果から得た操作対象オブジェクト(自サーバ内にある)に対して、そのコマンドを実行する。一方、配置管理装置からの応答に示される配置先サーバのIDが自サーバのIDと一致しない場合、その応答に含まれる配置先サーバのIPアドレスと、要求受付解析部1006による要求の解析結果(コマンド、操作対象クラス、操作対象オブジェクト等)をリダイレクト処理部1010に渡し、リダイレクト処理を実行させる。リダイレクト処理部1010は、その解析結果を含むHTTP要求メッセージをそのIPアドレス(配置先サーバ)にリダイレクトし、その配置先サーバからそのHTTP要求メッセージに対する応答を受け取る。そして、受け取った応答を要求処理部1008に渡す。
なお、要求受付解析部1006の解析結果に示される操作対象クラスがジョブやコンテント(印刷データ等)である場合、要求処理部1008は、自サーバ内の、そのクラスに対応する処理部(図示省略)にその操作対象オブジェクトを処理させる。
セッション維持時間決定部1112は、要求受付解析部1006が受け取った要求に対して返信する応答データに設定するセッション維持時間を決定する。本実施形態では、その要求を自サーバ内で処理したか、他の印刷サーバ100にリダイレクトしたかに応じて、セッション維持時間の長さを切り換える。セッション維持時間は、ロードバランサ106がセッション維持処理を行う時間の長さである。
本実施形態では、要求受付解析部1006が受け取った要求を自サーバで処理した場合のセッション維持時間を、要求を他の印刷サーバ100にリダイレクトした場合よりも長い、あらかじめ定められた値に設定する。
応答部1114は、要求処理部1008から得た処理結果を含んだ応答を作成し、その応答をロードバランサ106に返す。リダイレクト処理部1010により要求をリダイレクトした場合も、その要求に対するリダイレクト先の印刷サーバ100からの応答がリダイレクト処理部1010及び要求処理部1008を介して応答部1114に伝達され、応答部1114はその応答の内容を含んだ応答を作成する。ここで応答部1114は、セッション維持時間決定部1112が決定したセッション維持時間をその応答に設定する。
セッション維持時間決定部1112及び応答部1114によるセッション維持制御については、後で詳しく説明する。
データ記憶装置102は、論理プリンタテーブル1021、物理プリンタテーブル1022、対応づけテーブル1023、サーバテーブル1024、ジョブテーブル1025、及び印刷データ1026を記憶している。以下、図3〜図7を参照して、それら各テーブルの具体例を説明する。
論理プリンタテーブル1021は、印刷制御システム内の各論理プリンタ1002の定義情報を保持する表である。図3に論理プリンタテーブル1021のデータ内容の一例を示す。図3に示すように、論理プリンタテーブル1021には、論理プリンタごとに、その論理プリンタのプリンタ名(ID)、アクセス制御情報、及び配置先サーバといった項目が登録される。項目「プリンタ名」は、当該論理プリンタの識別情報である。項目「アクセス制御情報」は、その論理プリンタに対するユーザからのアクセスを制御するために用いる情報である。アクセス制御情報としては様々な形の情報を用いることができる。例えばその論理プリンタを利用可能なユーザやグループの識別情報(ID)のリスト(アクセス制御リスト)であってもよいし、その論理プリンタにアクセス可能なユーザを認証する認証方法(例えばパスワード認証)を規定する情報であってもよい。項目「配置先サーバ」は、その論理プリンタが現在配置されているサーバ100の識別情報である。
物理プリンタテーブル1022は、印刷制御システム内の各物理プリンタ1004の定義情報を保持する表である。図4に物理プリンタテーブル1022のデータ内容の一例を示す。図4に示すように、物理プリンタテーブル1022には、物理プリンタごとに、その物理プリンタのプリンタ名、実プリンタ、及び配置先サーバといった項目が登録される。項目「実プリンタ」は、その物理プリンタが管理している実プリンタ104を特定する情報である。図示例では、実プリンタ104を特定する情報として、その実プリンタ104のIPアドレスが用いられている。物理プリンタが複数の実プリンタ104を管理する場合、項目「実プリンタ」には、それら複数の実プリンタの情報が登録される。その他の項目は、論理プリンタの定義情報における同名の項目と同じである。
対応づけテーブル1023は、論理プリンタ1002と物理プリンタ1004の対応関係の情報を保持する。対応付けテーブル1023のデータ内容の一例を図5に示す。図に例示した対応付けテーブル1023には、論理プリンタ1002のプリンタ名に対応づけて、その論理プリンタ1002に対応づけられた物理プリンタ1004のプリンタ名のリストが登録されている。論理プリンタ1002が受け付けた印刷ジョブは、その論理プリンタ1002に対応する物理プリンタ1004に割り当てられる。
サーバテーブル1024は、本システム内の印刷サーバ100の情報を管理するテーブルである。図6に示すように、サーバテーブル1024には、印刷サーバ100毎に、そのサーバの識別情報(サーバID)、IPアドレスの各項目が登録されている。IPアドレスの情報は、印刷サーバ100間での通信を行う場合に利用される。IPアドレスは、そのサーバと通信するために用いられる情報の一例であり、同様の役割を果たす別の情報に代えてもよい。
ジョブテーブル1025は、印刷指示に応じて生成されたジョブの管理情報を保持するテーブルである。図7に例示するジョブテーブル1025は、ジョブID、ジョブ名、状態、受付プリンタ、データパス、ユーザ、部数、ステープル、カラーの項目を含んでいる。
項目「ジョブID」は、印刷サーバ100等により付与された当該ジョブの識別情報である。項目「ジョブ名」は、当該ジョブの名称であり、例えば印刷指示を発行したユーザやクライアントが付与したものである。項目「状態」は、当該ジョブの状態を示す情報である。ジョブの状態には、例えば、「受付中」、「アサイン(割当)待ち」、「アサイン済み」、「処理中」、「処理済み」等がある。項目「データパス」は、当該ジョブの印刷データ1026のデータ記憶装置102内での保存場所(例えばあらかじめ定めた基準ディレクトリに対する相対パス名)を示す情報である。項目「部数」、「ステープル」、「カラー」は、当該ジョブに対する印刷部数、ステープル止めの有無、及びカラー/白黒のモードの指定値を示す。これらは、そのジョブに対して指定された印刷属性の一例として図示したものであり、他の印刷属性がジョブテーブル1025に登録されてももちろんよい。
データ記憶装置102に記憶される印刷データ1026は、例えば、クライアントから印刷指示と共に受け取ったPDLデータである。また、物理プリンタ1004によるPDLデータの中間形式データや印刷可能データへの変換が行われる毎に、データ記憶装置102に記憶される印刷データ1026をその変換結果のデータ(中間形式又はラスター形式等の印刷可能データ)に置き換えてもよい。また、このように置き換える代わりに、各段階の変換結果のデータをデータ記憶装置102に追加記憶してもよい。
以上、データ記憶装置102内に記憶される情報の例について説明した。印刷サーバ100等のシステム構成要素は、データ記憶装置102及びその中の各情報の所在場所を示す情報(IPアドレスやURL等)を有しており、処理を進める際、必要に応じてデータ記憶装置102内の情報を参照したり、データ記憶装置102内の情報を更新したり、データ記憶装置102内に新規情報を登録したりする。
図2の例では、論理プリンタテーブル1021〜印刷データ1026のすべての情報が1つのデータ記憶装置102に記憶されているが、これは必須のことではない。それら各情報が印刷サーバ100により共有されている形であれば、それら個々の情報がネットワーク又はクラウド内の別々の場所に格納されていてもよい。
以下、セッション維持時間決定部1112及び応答部1114によるセッション維持制御について説明する。
セッション維持時間決定部1112は、要求を他の印刷サーバ100にリダイレクトした場合、要求を自サーバ内で処理した場合よりも、セッション維持時間を短い値とする。例えば、要求を他の印刷サーバ100にリダイレクトした場合、セッション維持時間は、セッション維持時間を0とする。この場合セッション維持は行われない。これに対し、要求を自サーバ内で処理した場合は、セッション維持時間を、リダイレクトした場合よりも長いあらかじめ定めた長さに決定する。
応答部1114は、要求に対する自サーバ又はリダイレクト先の他の印刷サーバ100による処理結果を要求処理部1008から受け取り、その処理結果を含む応答を生成する。応答部1114は、例えばその処理結果をXMLデータに変換したものを、HTTP応答メッセージのボディ部にコンテントデータとして組み込む。ここで、応答部1114は、セッション維持時間決定部1112が決定したセッション維持時間をその応答に設定する。そして、生成した応答メッセージをロードバランサ106に返す。
応答部1114が生成する応答がHTTPメッセージの形である場合、セッション維持時間の情報は、そのメッセージのヘッダに対して例えばクッキーの形で設定する。セッション維持時間の情報を含んだクッキーのデータ内容の一例を以下に示す。
「Set-Cookie: NPPSSCK=NV; expires=Fri, 1-Mar-2013 21:00:00 GMT」
この例のうち「expires=Fri, 1-Mar-2013 21:00:00 GMT」が、そのクッキーの有効期限を示している。その有効期限は、現在時刻に対してセッション維持時間を加えた時刻である。なお、「NPPSSCK」は、印刷サーバ100を作成した者(例えばプログラマ)が任意に名付けたそのクッキーの名称であり、名称自体に特段の意味はない。ただし、ロードバランサ106には、その名称「NPPSSCK」を持つクッキーが、印刷サーバ100のセッション維持用のクッキーであることを何らかの形で認識させる(例えばそのことを設定情報としてロードバランサ106に設定する)
印刷サーバ100の応答部1114からセッション維持時間の情報を含んだ応答を受け取ったロードバランサ106は、その応答に含まれるセッション維持期間の情報を用いてセッション維持のための制御を実行する。例えば、印刷サーバ100からの応答メッセージに含まれるセッション維持のためのクッキー(上述の「NPPSSCK」)からセッション維持の有効期限を取得し、その有効期限内に同じクライアントから到来する要求は、その印刷サーバ100に振り分ける。
以下、更に詳しい例を説明する。例えば、本システムをクラウドサービスAmazon EC2を用いて構成する場合、ロードバランサ106として、Amazon社が提供する負荷分散サービスであるAmazon ELB (Elastic Load Balancing)を用いることができる。Amazon ELBは、負荷分散処理に当たって、HTTPなどの標準的なプロトコルのデータ(例えばクッキー)は参照するが、印刷サービス等のアプリケーションのデータ内容は参照しない。
Amazon ELBは、セッション維持のために、「AWSELB」という名前のクッキーを使用する。クッキー「AWSELB」の有効期限は、アプリケーションが使用するクッキーの有効期限に連動させることができる。すなわち、クッキー「AWSELB」の有効期限を、アプリケーション(この場合は印刷サーバ100)からの応答メッセージに含まれる特定の名前のクッキーの有効期限に連動させる(例えば同じ値とする)よう、Amazon ELBに対して設定することができる。そこで、クッキー「AWSELB」の有効期限を、印刷サーバ100の応答部がセッション維持に用いるクッキー(上述の例では「NPPSSCK」)の有効期限に連動させるよう設定を行っておくことで、Amazon ELB(ロードバランサ106)によるセッション維持を印刷サーバ100から制御することが可能となる。
この仕組みを用いたセッション維持制御の流れを、図9を参照して説明する。クライアント150から本システム宛のHTTP要求10は、ロードバランサ106(Amazon ELB)により受信される。ロードバランサ106は、そのHTTP要求10を、あらかじめ定められた負荷分散アルゴリズムに従って、システム内のいずれかの印刷サーバ100に振り分ける。これを受け取った印刷サーバ100は、その要求の宛先が自サーバ内であればその要求を自サーバで処理し、処理結果を求める。そうでなければその要求を宛先の印刷サーバ100にリダイレクトし、リダイレクト先の印刷サーバ100から処理結果を受け取る。次に印刷サーバ100は、自サーバ又はリダイレクト先の印刷サーバ100によるその要求に対する処理結果、を含むHTTP応答12を作成し、その応答12のヘッダにセッション維持用のクッキー設定命令14(クッキー名「NPPSSCK」)を組み込む。このとき、そのクッキー設定命令14に設定する有効期限を、要求10をリダイレクトした場合は現在時刻に、要求10の宛先が自サーバ内の要素である場合は現在時刻にあらかじめ定められた時間を加えた時刻に、それぞれ設定する。そして、クッキー設定命令14を設定した応答12をロードバランサ106に返す。ロードバランサ106は、その応答12から印刷サーバ100が設定したセッション維持用のクッキー設定命令14を検出し、そのクッキー設定命令14の中の有効期限を認識する。そして、その有効期限と同じ有効期限を設定した、ロードバランサ106自身のセッション維持用のクッキー設定命令16(クッキー名「AWSELB」)を作成し、そのクッキー設定命令16を印刷サーバ100からのHTTP応答12に組み込む。図示は省略したが、このクッキー設定命令16には、応答12の返信元である印刷サーバ100を特定するための情報が含まれる。ロードバランサ106は、このようにして生成したクッキー設定命令16を含んだHTTP応答18を、HTTP要求10の送信元であるクライアント150に返信する。
クライアント150(例えばウェブブラウザ)は、受け取ったHTTP応答18に含まれるクッキー設定命令16に従い、その命令16のデータ内容(クッキー名「AWSELB」、有効期限、セッション維持対象の印刷サーバ100を特定するための情報等)を含むクッキーを、本実施形態の印刷制御システムのURL(このURLはロードバランサ106を指し示す)と対応づけて記憶する。その後、クライアント150が印刷制御システム(ロードバランサ106)にアクセスしようとする際、現在時刻が、印刷制御システムのURLに対応づけて記憶しているクッキー(クッキー設定命令16に応じて記憶したもの)の有効期限を過ぎているかどうかを判定する。有効期限を過ぎていなければ、そのクッキーをヘッダに含んだHTTP要求をロードバランサ106に送る。ロードバランサ106は、その要求に含まれるクッキーのデータが指し示す印刷サーバ100(セッション維持の対象)に対してその要求を振り分ける。これにより、セッション維持が実現される。
一方、クライアント150が印刷制御システムにアクセスしようとする際、その印刷制御システムのURLに対応づけて記憶しているクッキー(クッキー設定命令16に応じて記憶したもの)に含まれる有効期限が既に過ぎている場合は、クライアント150は、そのクッキーを含まないHTTP要求をロードバランサ106宛に送る。この要求を受け取ったロードバランサ106は、(その要求にはセッション維持用のクッキーが含まれていないので)その要求をラウンドロビン等の所定の振り分け方式で決定した印刷サーバ100に振り分ける。
この例の仕組みでは、印刷サーバ100がロードバランサ106を介してクライアント150から受け取った要求がその印刷サーバ100で処理すべきものでない場合、クライアント150への応答18に含まれるセッション維持用のクッキー設定命令16には、その印刷サーバ100がその要求に対する応答を生成した時刻が有効期限として設定される。この有効期限はクッキー設定命令16を作成した時点で既に過ぎ去っているので、その命令16に応じてクライアント150が記憶したセッション維持用のクッキーの有効期限もその時点で過ぎている。したがって、クライアント150がその後印刷制御システムに再びアクセスする時点では、そのセッション維持用のクッキーの有効期限は当然過ぎ去っているので、そのクッキーがHTTP要求に組み込まれることはない。したがって、ロードバランサ106が、そのクッキーに基づくセッション維持を行うこともない。
これに対し、印刷サーバ100がロードバランサ106を介してクライアント150から受け取った要求がその印刷サーバ100で処理すべきものであった場合、クライアント150への応答18に含まれるセッション維持用のクッキー設定命令16には、その印刷サーバ100がその要求に対する応答を生成した時刻に対して0より大きいあらかじめ定めた時間を加えた時刻が有効期限として設定される。このため、その命令16に応じてクライアント150に記憶されるクッキーを用いて、通常のセッション維持処理が実行されることとなる。
このように、この例では、ロードバランサ106の振り分けが「外れた」(すなわち要求を担当すべき印刷サーバ100でない印刷サーバ100にその要求を振り分けた)場合には、セッション維持は行われず、振り分けが「当たった」場合にはセッション維持が行われる。
上述の例は、「外れ」の場合のセッション維持時間を0にするという極端なものであったが、0でなくても、「当たり」の場合のセッション維持時間よりも短い時間とすれば、「外れ」の場合は、「当たり」の場合よりもセッション維持が効きにくくなる。
仮に、ロードバランサ106の振り分けの当たり外れによらず、常にセッション維持が行われるようにすると、振り分けが外れた場合でもロードバランサ106のセッション維持が働き、その外れの後の要求も、また同じ外れの印刷サーバ100に振り分けられることになる。この結果、その外れの印刷サーバ100から、正しい担当の印刷サーバ100へと再び要求がリダイレクトされることになる。このように常にセッション維持が働くようにすると、リダイレクトが頻繁に起こることになる。
逆にセッション維持を全く行わないこととした場合、せっかく振り分けが当たってもセッション維持が行われないので、次の要求が「当たり」の印刷サーバ100に振り分けられない可能性が高い。したがって、この場合もリダイレクトが頻繁に生じる。
これらに対し、本実施形態の仕組みでは、ロードバランサ106の振り分けが「外れた」の場合、「当たった」の場合よりもセッション維持が実行されにくいので、常にセッション維持を行う場合よりもリダイレクトの発生確率が低くなる。また振り分けが「当たった」場合にはセッション維持が働くので、セッション維持を全く行わない場合よりもリダイレクトの発生確率は低くなる。
また本実施形態の変形例として、印刷サーバ100がロードバランサ106から受け取った要求をリダイレクトしなかったの場合(「当たり」)に、その要求の種類に応じてセッション維持時間を切り換えるようにしてもよい。同じクライアントからの要求に対してセッション維持を行う必要度合いが、要求の種類によって異なることがあるからである。例えば、クライアントから印刷サーバ100への印刷データの転送を必要とする要求(例えば前述の「CreateContent」)の場合、他の種類の要求に比べてセッション維持の必要度合いが高い。すなわち、印刷データは比較的小サイズの転送単位に分割され、転送単位毎に順にクライアントから印刷サーバ100に転送される。したがって、印刷サーバ100がコマンド「CreateContent」を実行した場合、その後に同じクライアントから印刷データの転送要求が続いて到来する可能性が高い。そこで、印刷サーバ100が十区押した要求が、印刷データの転送を必要とする要求である場合には、実行した要求が印刷データの転送を必要としない要求(例えば論理/物理プリンタやジョブの状態の閲覧)の場合よりも、応答に対して設定するセッション維持時間を長い値とする。例えば、印刷データの転送を必要としない要求についてのセッション維持時間は数分程度に定めておき、印刷データの転送を必要とする要求についてのセッション維持時間を数十分程度に定めておく等である。このようにすることで、同じクライアントから同じ印刷サーバ100への要求が引き続き到来する可能性が高い場合に、セッション維持が機能する確率が高くなる。
以上に例示した印刷サーバ100は、例えば、汎用のコンピュータに当該装置の各機能モジュールの処理を表すプログラムを実行させることにより実現してもよい。ここで言うコンピュータは、例えば、ハードウエアとして、CPU等のマイクロプロセッサ、ランダムアクセスメモリ(RAM)およびリードオンリメモリ(ROM)等のメモリ(一次記憶)、HDD(ハードディスクドライブ)やSSD(ソリッドステートドライブ)、フラッシュメモリ等の二次記憶を制御する二次記憶コントローラ、各種I/O(入出力)インタフェース、無線又は有線のネットワークとの接続のための制御を行うネットワークインタフェース等が、たとえばバスを介して接続された回路構成を有する。また、そのバスに対し、例えばI/Oインタフェース経由で、CDやDVD、ブルーレイディスクなどの可搬型ディスク記録媒体に対する読み取り及び/又は書き込みのためのディスクドライブ、フラッシュメモリなどの各種規格の可搬型の不揮発性記録媒体に対する読み取り及び/又は書き込みのためのメモリリーダライタ、などが接続されてもよい。上に例示した各機能モジュールの処理内容が記述されたプログラムがCDやDVD等の記録媒体を経由して、又はネットワーク等の通信手段経由で、フラッシュメモリ等の二次記憶装置に保存され、コンピュータにインストールされる。二次記憶装置に記憶されたプログラムがRAMに読み出されCPU等のマイクロプロセッサにより実行されることにより、上に例示した機能モジュール群が実現される。また、コンピュータは、仮想マシンであってもよい。