(57)【要約】【課題】  全パケット、全メッセージに対するテナントＩＤの書き込みおよび読み出しの処理が不要となることで性能向上を図る中継装置を提供する。【解決手段】  クライアントから共有サーバ２００への要求メッセージを受信したときに、クライアントが属するテナントのテナントＩＤを取得するテナント識別部１と、共有サーバ２００とのコネクションを一意に識別可能なコネクションＩＤと、クライアントとのコネクションを一意に識別可能なコネクションＩＤと、テナントＩＤとの対応関係を作成するコネクション識別部２と、共有サーバ２００との間のコネクションを作成した後に、テナントＩＤと作成したコネクションとを対応付けさせるため共有サーバ２００へテナントＩＤを１回送信し、その後、要求メッセージを共有サーバ２００へ送信するコネクション作成部３を有する中継装置を提供する。【選択図】図３
2010219845.tif 000002
【特許請求の範囲】
【請求項１】
中継装置のクライアント側のインタフェースを特定する情報と、前記クライアントが属するネットワークであって組織や企業単位のネットワークであるテナントを識別するためのテナント識別子との対応関係である第１対応関係を記憶し、
前記中継装置とサーバとの間のコネクションに係る情報である第１コネクション情報と、前記テナント識別子と、前記コネクションの使用の有無を示す使用情報との対応関係である第２対応関係を記憶し、
クライアントと前記中継装置との間のコネクションに係る情報である第２コネクション情報と、前記第１コネクション情報との対応関係である第３対応関係を記憶する、
記憶部を有する中継装置に、
クライアントから要求メッセージを受けると、前記要求メッセージを受けた中継装置のクライアント側のインタフェースを特定する情報を検索キーにして、前記第１対応関係を読み出してテナント識別子を得るテナント識別子取得手順と、
得たテナント識別子が前記第２対応関係にない場合、前記第１コネクション情報を作成し、作成した第１コネクション情報と得たテナント識別子と、使用情報を使用中とした情報との対応関係を前記対応関係２に書き出す手順と、
前記要求メッセージを送信したクライアントのアドレスから前記第２コネクション情報を作成し、作成した第１コネクション情報と作成した第２コネクション情報を前記第３対応関係に書き出す手順と、
作成した第１コネクション情報から、前記中継装置と前記サーバとの間にコネクションを設定する手順と、
得たテナント識別子を前記サーバに送付する手順と、
受けた要求メッセージを、設定されたコネクションを経由して前記サーバに送信する手順と、
受けた要求メッセージに対する応答メッセージを前記サーバから受けると、前記使用情報を未使用中に設定する手順と、
を実行させるためのテナント管理プログラム。
【請求項２】
前記中継装置に、
前記クライアントと異なるクライアントから要求メッセージを受けると、前記テナント識別子取得手順で得たテナント識別子が前記第２対応関係に有り、かつ、前記使用情報が未使用中の場合、
前記使用情報を使用中に設定して前記第２対応関係に書き出す手順と、
前記クライアントのアドレスから前記第２コネクション情報を作成し、作成した第１コネクション情報と作成した第２コネクション情報を前記第３対応関係に書き出す手順と、
受けた要求メッセージを、前記コネクションを経由して前記サーバに送付する手順と、
受けた要求メッセージに対する応答メッセージを前記サーバから受けると、前記使用情報を未使用中に設定する手順と、
をさらに実行させるための請求項１記載のテナント管理プログラム。
【請求項３】
前記中継装置に、
前記クライアントと異なるクライアントである第２クライアントから要求メッセージを受けると、前記テナント識別子取得手順で得たテナント識別子に対応する前記使用情報が未使用中のエントリである第１エントリが前記第２対応関係になく、かつ、得たテナント識別子と異なるテナント識別子であって前記使用情報が未使用中のエントリである第２エントリがある場合、
前記第２エントリの使用情報を使用中に設定し、得たテナント識別子を設定して前記第２対応関係に書き出す手順と、
前記第２クライアントのアドレスから前記第２コネクション情報を作成し、作成した第１コネクション情報と作成した第２コネクション情報を前記第３対応関係に書き出す手順と、
前記テナント識別子取得手順で得たテナント識別子を前記サーバに送信する手順と、
前記第２クライアントから受けた要求メッセージを、前記コネクションを経由して前記サーバに送付する手順と、
前記第２クライアントから受けた要求メッセージに対する応答メッセージを前記サーバから受けると、前記使用情報を未使用中に設定する手順と、
を実行させるための請求項１または２記載のテナント管理プログラム。
【請求項４】
前記中継装置に、
得たテナント識別子を前記サーバに送付する前記手順は、未作成である旨の使用情報がある場合、得たテナント識別子を要求メッセージに埋め込み、前記サーバに送付することを特徴とする請求項１乃至請求項３のいずれかに記載のテナント管理プログラム。
【請求項５】
前記保持部は、さらに、前記テナント識別子と、該テナント識別子のテナントが使用可能なコネクションの上限値との対応関係である第４対応関係を有している場合、
中継装置に、
要求メッセージを送信したクライアントが属するテナントのテナント識別子を検索キーとして、前記第４対応関係を検索し、コネクションの上限値を取得する手順と、
前記要求メッセージを送信したクライアントが属するテナントが使用しているコネクションの数が取得した上限値まで達している場合、エラー処理を行う手順と、
を実行させるための請求項１乃至請求項４記載のテナント管理プログラム。
【請求項６】
前記保持部は、前記中継装置内ではなく外部の関連管理サーバに備えられていることを特徴とする請求項１乃至請求項５記載のテナント管理プログラム。
【請求項７】
中継装置であって、
前記中継装置のクライアント側のインタフェースを特定する情報と、前記クライアントが属するネットワークであって組織や企業単位のネットワークであるテナントを識別するためのテナント識別子との対応関係である第１対応関係を記憶し、
前記中継装置とサーバとの間のコネクションに係る情報である第１コネクション情報と、前記テナント識別子と、前記コネクションの使用の有無を示す使用情報との対応関係である第２対応関係を記憶し、
クライアントと前記中継装置との間のコネクションに係る情報である第２コネクション情報と、前記第１コネクション情報との対応関係である第３対応関係を記憶する記憶部と、
クライアントから要求メッセージを受けると、前記要求メッセージを受けた中継装置のクライアント側のインタフェースを特定する情報を検索キーにして、前記第１対応関係を読み出してテナント識別子を得るテナント識別部と、
前記テナント識別部によって得たテナント識別子が前記第２対応関係にない場合、前記第１コネクション情報を作成し、作成した第１コネクション情報と得られたテナント識別子と、使用情報を使用中とした情報との対応関係を前記対応関係２に書き出し、
前記要求メッセージを送信したクライアントのアドレスから前記第２コネクション情報を作成し、作成した第１コネクション情報と作成した第２コネクション情報を前記第３対応関係に書き出すコネクション識別部と、
作成された第１コネクション情報から、前記中継装置と前記サーバとの間にコネクションを作成し、得られたテナント識別子を前記サーバに送付し、受けた要求メッセージを、作成したコネクションを経由して前記サーバに送信するコネクション作成部と、を備え、
前記コネクション識別部は、さらに、受けた要求メッセージに対する応答メッセージを前記サーバから受けると、前記使用情報を未使用中に設定することを特徴とする中継装置。
【請求項８】
前記コネクション識別部は、さらに、前記クライアントと異なるクライアントから要求メッセージを受けると、前記テナント識別部によって得られたテナント識別子が前記第２対応関係に有り、かつ、前記使用情報が未使用中の場合、前記使用情報を使用中に設定して前記第２対応関係に書き出し、前記要求メッセージを送信したクライアントのアドレスから前記第２コネクション情報を作成し、作成した第１コネクション情報と作成した第２コネクション情報を前記第３対応関係に書き出し、
コネクション作成部は、前記受けた要求メッセージを、前記コネクションを経由して前記サーバに送付することを特徴とする請求項７記載の中継装置。
【請求項９】
前記コネクション識別部は、さらに、前記クライアントと異なるクライアントである第２クライアントから要求メッセージを受けると、前記テナント識別部によって得たテナント識別子に対応する前記使用情報が未使用中のエントリである第１エントリが前記第２対応関係になく、かつ、得られたテナント識別子と異なるテナント識別子であって前記使用情報が未使用中のエントリである第２エントリがある場合、前記第２エントリの使用情報を使用中に設定し、得られたテナント識別子を設定して前記第２対応関係に書き出し、前記第２クライアントのアドレスから前記第２コネクション情報を作成し、作成した第１コネクション情報と作成した第２コネクション情報を前記第３対応関係に書き出し、
前記コネクション作成部は、さらに、前記テナント識別部によって得られたテナント識別子を前記サーバに送信し、前記第２クライアントから受けた要求メッセージを、前記コネクションを経由して前記サーバに送付することを特徴とする請求項７または８記載の中継装置。
【発明の詳細な説明】
【技術分野】
【０００１】
複数の異なるテナントそれぞれを収容し、共有アプリケーションを実行する共有サーバまで中継する中継装置、テナント管理プログラムに関する。
【背景技術】
【０００２】
ＳａａＳ（Software as a Service）などの、複数の組織や企業ごとに構成されるネットワーク（以降、テナントと称す）に対して、アプリケーションを提供するサーバアプリケーションでは、各テナントに提供するアプリケーションを共通化し、サーバリソースを共用させることで効率的にサーバリソースを活用したいという要件がある。このため、ＳａａＳ対応のアプリケーションは、複数のテナントからアクセス可能な共有ネットワーク（例えばInternet上のサーバなど）に配置される。
【０００３】
ここで、マルチテナント対応の共有アプリケーションを備えた共有サーバ、各テナント内のクライアント、およびテナントと共有サーバ間のデータを中継するゲートウェイ装置（以降、ＧＷと称す）を有する従来のシステムの構成を図２３に示す。ＧＷは、複数の異なる独立なネットワークを収容することができるマルチテナント対応のＶＰＮ装置などの装置であり、各テナント間で相互に直接通信できないように、論理的には分割したネットワークとして扱う要件を満たすものである。
【０００４】
各テナント内のクライアントは自己が所属するテナントを意識することなく通信を行う。即ち各テナント内のクライアントは、共有サーバへのリクエストメッセージなどを送受信する際、自己が属するテナントを識別するための情報（以降、テナントＩＤと称す）等の付与を行わない。なお、アプリケーション間でやり取りするデータの単位や、複数のパケットから構成されるデータをメッセージと称す。
【０００５】
一方、従来のマルチテナント対応のＧＷは、各テナントの通信を別々に扱うために、ＧＷの持つＩＰアドレス（図２３の例ではテナントＡのセグメントに接続するためのＩＰアドレスやテナントＢのセグメントに接続するためのＩＰアドレス）やＶＬＡＮなどで、いずれからデータが送信されたかの別で、テナントを認識し、テナントＩＤをリクエストメッセージに付与した後、共有サーバへデータを送信する。
【０００６】
従来の共有サーバは、受信した処理対象のリクエストメッセージおよびテナントＩＤが届くと、指定されたテナントＩＤを認識することで、いずれのテナントに対する処理であるかを認識し、共有アプリケーションを実行することが可能となる。
【０００７】
メッセージとテナントＩＤを関連付ける実現方式として、２つの従来方式が考えられる。
【０００８】
第１の従来方式は、メッセージにテナントＩＤを入れる方式である。図２４に第１の従来方式の模式図を示す。この場合、ＧＷが各テナントからメッセージを受信すると、テナントのＩＤをメッセージ中に埋め込んで共有サーバに伝播させる。共有サーバはメッセージ中に埋め込まれたテナントのＩＤを読み出し、テナントを判別する。逆方向も同様にメッセージ中にテナントＩＤを埋め込むことで、共有サーバからＧＷにテナントの情報を伝える。
【０００９】
第２の従来方式は、パケットにテナントＩＤを入れる方式である。図２５に第２の従来方式の模式図を示す。メッセージに入れ込む第１の従来方式と同様に、ＧＷが各テナントからのパケットにテナントのＩＤを埋め込んでサーバに伝播させる。
【００１０】
第１の従来方式、第２の従来方式共通の機能ブロック図を図２６に示す。ＧＷ、共有サーバともに、メッセージ内またはパケット内にテナント識別部によって識別されたテナントＩＤの入れ込みまたは読み出しを行うテナントＩＤ挿抜部を備える構成となる。
【００１１】
なお、テナントＩＤを埋め込んで通信をする従来技術としては、例えばＳＩＰを用いた通信に関する技術が開示されている。
【先行技術文献】
【特許文献】
【００１２】
【特許文献１】特開２００７−１５７０８５号公報
【発明の概要】
【発明が解決しようとする課題】
【００１３】
前述のような全メッセージや全パケットに毎回テナントＩＤを埋め込む方式では、埋め込み及び読み出しの処理により、処理負荷が高くなり、ＧＷおよび共有サーバの性能低下につながる。さらに、上記第２の従来方式においては、通常はサーバ内のＴＣＰ／ＩＰ層を経由する際にパケットヘッダが削除されるため、サーバ側のアプリケーションにテナントの情報を伝えることが困難になる。
【００１４】
本発明は上述した問題点を解決するためになされたものであり、全メッセージや全パケットごとに行うテナントＩＤの埋め込みおよび取り出しの処理による性能低下を防ぐことができる中継装置、テナント管理プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１５】
テナント管理プログラムは、中継装置のクライアント側のインタフェースを特定する情報と、前記クライアントが属するネットワークであって組織や企業単位のネットワークであるテナントを識別するためのテナント識別子との対応関係である第１対応関係を記憶し、前記中継装置とサーバとの間のコネクションに係る情報である第１コネクション情報と、前記テナント識別子と、前記コネクションの使用の有無を示す使用情報との対応関係である第２対応関係を記憶し、クライアントと前記中継装置との間のコネクションに係る情報である第２コネクション情報と、前記第１コネクション情報との対応関係である第３対応関係を記憶する、記憶部を有する中継装置に、クライアントから要求メッセージを受けると、前記要求メッセージを受けた中継装置のクライアント側のインタフェース名を検索キーにして、前記第１対応関係を読み出してテナント識別子を得るテナント識別子取得手順と、得たテナント識別子が前記第２対応関係にない場合、前記第１コネクション情報を作成し、作成した第１コネクション情報と得たテナント識別子と、使用情報を使用中とした情報との対応関係を前記対応関係２に書き出す手順と、前記要求メッセージを送信したクライアントのアドレスから前記第２コネクション情報を作成し、作成した第１コネクション情報と作成した第２コネクション情報を前記第３対応関係に書き出す手順と、作成した第１コネクション情報から、前記中継装置と前記サーバとの間にコネクションを設定する手順と、得たテナント識別子を前記サーバに送付する手順と、受けた要求メッセージを、設定されたコネクションを経由して前記サーバに送信する手順と、受けた要求メッセージに対する応答メッセージを前記サーバから受けると、前記使用情報を未使用中に設定する手順と、を実行させる。
【００１６】
また、中継装置は、前記中継装置のクライアント側のインタフェースを特定する情報と、前記クライアントが属するネットワークであって組織や企業単位のネットワークであるテナントを識別するためのテナント識別子との対応関係である第１対応関係を記憶し、前記中継装置とサーバとの間のコネクションに係る情報である第１コネクション情報と、前記テナント識別子と、前記コネクションの使用の有無を示す使用情報との対応関係である第２対応関係を記憶し、クライアントと前記中継装置との間のコネクションに係る情報である第２コネクション情報と、前記第１コネクション情報との対応関係である第３対応関係を記憶する記憶部と、クライアントから要求メッセージを受けると、前記要求メッセージを受けた中継装置のクライアント側のインタフェース名を検索キーにして、前記第１対応関係を読み出してテナント識別子を得るテナント識別部と、前記テナント識別部によって得たテナント識別子が前記第２対応関係にない場合、前記第１コネクション情報を作成し、作成した第１コネクション情報と得られたテナント識別子と、使用情報を使用中とした情報との対応関係を前記対応関係２に書き出し、前記要求メッセージを送信したクライアントのアドレスから前記第２コネクション情報を作成し、作成した第１コネクション情報と作成した第２コネクション情報を前記第３対応関係に書き出すコネクション識別部と、作成された第１コネクション情報から、前記中継装置と前記サーバとの間にコネクションを作成し、得られたテナント識別子を前記サーバに送付し、受けた要求メッセージを、作成したコネクションを経由して前記サーバに送信するコネクション作成部と、を備え、前記コネクション識別部は、さらに、受けた要求メッセージに対する応答メッセージを前記サーバから受けると、前記使用情報を未使用中に設定することを特徴とする。
【発明の効果】
【００１７】
全パケット、全メッセージに対するテナントＩＤの書き込みおよび読み出しの処理が不要となることで性能向上が可能となる。
【図面の簡単な説明】
【００１８】
【図１】本実施の形態に係るコネクションの状態区分の一例を示す図である。
【図２】本実施の形態に係るシステム構成の一例を示す図である。
【図３】本実施の形態に係る実施例１の機能ブロックの一例を示す図である。
【図４】本実施の形態に係る実施例１のクライアント、ＧＷ、共有サーバ間のシーケンスを示す図である。
【図５】本実施の形態に係る実施例１で使用するデータ構成の一例を示す図である。
【図６】本実施の形態に係る実施例１のテナント／コネクション関連テーブルの変化例を示す図である。
【図７】本実施の形態に係る実施例１のコネクション関連付けテーブルの変化を示す図である。
【図８】本実施の形態に係る実施例１のＧＷの処理例を示すフローチャートである。
【図９】本実施の形態に係る実施例１の共有サーバの処理例を示すフローチャートである。
【図１０】本実施の形態に係る実施例２の機能ブロックの一例を示す図である。
【図１１】本実施の形態に係る実施例２のＧＷの処理例を示すフローチャートである。
【図１２】本実施の形態に係る実施例２の共有サーバの処理例を示すフローチャートである。
【図１３】本実施の形態に係る実施例２のリクエストメッセージの構成例を示す図である。
【図１４】本実施の形態に係る実施例３の機能ブロックの一例を示す図である。
【図１５】本実施の形態に係る実施例３のＧＷの処理例を示すフローチャートである。
【図１６】本実施の形態に係る実施例３のコネクション上限テーブルの構成例を示す図である。
【図１７】本実施の形態に係る実施例４の機能ブロックの一例を示す図である。
【図１８】本実施の形態に係る実施例４のＧＷの処理例を示すフローチャートである。
【図１９】本実施の形態に係る実施例４の共有サーバの処理例を示すフローチャートである。
【図２０】本実施の形態に係る実施例４の関連管理サーバの処理例を示すフローチャートである。
【図２１】本実施の形態に係るＧＷ、共有サーバ、関連管理サーバのハードウェア構成の一例を示す図である。
【図２２】本実施の形態に係るＧＷ、共有サーバ、関連管理サーバ内部のハードウェア構成の一例を示す図である。
【図２３】共有サーバ、各テナント内のクライアント、およびテナントと共有サーバ間のデータを中継するＧＷを有する従来のシステムを示す図である。
【図２４】第１の従来方式を説明するための図である。
【図２５】第２の従来方式を説明するための図である。
【図２６】第１の従来方式、第２の従来方式共通の機能ブロックを示す図である。
【発明を実施するための形態】
【００１９】
本実施の形態は、共有サーバ及びＧＷ間で利用するＬ４コネクションとテナントＩＤ（テナント識別子）を関連付け、通常の通信処理で利用されるＬ４コネクションの識別情報をテナントＩＤの伝播の代わりとすることで、メッセージごとにテナントＩＤを埋め込むことを回避する。なお、Ｌ４コネクションの識別情報は、送信元ＩＰアドレス、宛先ＩＰアドレス、送信元Ｐｏｒｔ番号、宛先Ｐｏｒｔ番号の組を差し、以降、コネクションＩＤと称す。そのために、本実施の形態のＧＷと共有サーバに、通信開始時に共有サーバとＧＷの間で利用されるコネクションＩＤ（第１コネクション情報）をテナントＩＤと関連付ける機能、および通信時にテナントＩＤとコネクションＩＤの変換を行うための機能を、追加する。なお、以降の説明ではＬ４コネクションを単にコネクションと称す。
【００２０】
また、コネクションとテナントＩＤの関連付けを静的に設定しようとすると、全体のコネクション数に余裕があっても枯渇が起きる。複数の共有サーバや共有アプリケーションがあったときに、共有アプリケーションごとに事前に割り当てた上限値（例えば、ＧＷ全体で65535個÷アプリケーション数）までしかコネクションを同時利用できない。そして、特定のアプリケーションにアクセスが偏ると、コネクションが枯渇してしまう。そのため、通信に必要なコネクションを必要なだけ動的に割り当て、削除する方法が必要である。
【００２１】
さらに、動的に設定しようとしても、性能劣化、およびコネクション枯渇が起きる。どのコネクションがどのテナントＩＤなのか、コネクションを作成する側（ＧＷ）では判断可能だが、共有サーバ側では判断できないため、関係を伝える必要がある。しかし、メッセージごとにテナントＩＤを埋め込むと、従来技術と同様に性能劣化の課題が発生してしまう。また、タイマで関連付けを削除すると、タイムアウト値よりも短い間隔で頻繁にアクセスがあると、全体のコネクション数に余裕があっても枯渇が起きる。
【００２２】
本実施の形態では、これらの問題を解決するため、従来技術よりも少ない処理量で動的に関連付けをする仕組みと、コネクションを最大限利用できるコネクション割当ての仕組みを提供する。
【００２３】
ここで、本実施の形態での動的に関連付けをする仕組み、およびコネクション割当ての仕組みの考え方について説明する。
【００２４】
動的に関連付けをする仕組みに対しては、一度作成したコネクションを流用することでテナントＩＤ伝搬の負荷を削減することができる。コネクションを流用する場合、特定のテナント内のクライアントがコネクションを使用している最中に他のテナント内のクライアントがデータの送信を行った場合、送信データの切れ目が分からなくなり、いずれのクライアントからの送受信データであるかの判別が困難となるので、現在使用中のコネクションは使用しないようにする。そのため、テナントＩＤとコネクションＩＤを関連付けるテナント／コネクション関連テーブル中に「使用中フラグ」（使用情報）を設け、１つのコネクション中に同時に複数のクライアントからのデータが流れないように制御する。具体的には、ＧＷとサーバとの間のコネクション状態を以下の３つに分割する（図１も参照）。
・使用中状態  ：  コネクション作成済みの状態であり、特定のテナント内のクライアントが通信中の状態である（図１（Ａ）参照）。
・非使用状態  ：  コネクション作成済みの状態であるが、当該コネクションは現在使われておらず別の通信による流用待ちの状態である（図１（Ｂ）参照）。
・未作成状態  ：  コネクション未作成の状態である（図１（Ｃ）参照）。
ＧＷがクライアントから新規コネクションを受け付けた時に、非使用状態もしくは未作成状態のコネクションが使用される。
【００２５】
本実施の形態のコネクション割当ての仕組みは、非使用状態のコネクションを選択し、関連付けの再割り当てをすることで、解放待ちのような無駄に確保されたコネクションを減らす仕組みを提供する。具体的には、あるテナントの通信において、非使用状態および未作成状態のコネクションが不足したときに、別テナント用の非使用中コネクションを割り当てる仕組みを追加する。
【００２６】
以降、上記を踏まえた具体的な実施例を説明する。
【００２７】
（実施例１）
ここで、システム全体構成、および各ユニットのＩＰアドレス、接続Ｐｏｒｔ番号の関係の一例を図２に示す。本システムは、テナントＡに属するクライアントＡ１、クライアントＡ２を有し、またテナントＢに属するクライアントＢ１を有する。また本システムは、テナントＡ、テナントＢと接続されたＧＷ１００（中継装置）および共有アプリケーション８を有する共有サーバ２００（サーバ）を有する。なお、ＧＷ１００はネットワークのインタフェース（例えば、ＶＬＡＮ、物理ポート）やＩＰアドレス等により、メッセージの送信元テナントを判断可能であるものとする。
【００２８】
クライアントＡ１のＩＰアドレスは20.0.10.1であり、クライアントＡ２のＩＰアドレスは20.0.10.2である。またクライアントＢ１のＩＰアドレスは30.0.10.1である。ＧＷ１００はテナントＡに対して20.0.0.1のＩＰアドレスで接続されており、またテナントＢに対して30.0.0.1のＩＰアドレスで接続されている。テナントＡ、Ｂ内の各クライアントは、ＧＷ１００のＰｏｒｔ番号８０に対し接続するものとする。
【００２９】
ＧＷ１００は、共有ネットワーク上ＩＰアドレス10.0.0.1で共有サーバ２００と接続しており、共有サーバ２００は共有ネットワーク上ＩＰアドレス10.0.0.2でＧＷ１００と接続している。またＧＷ１００は、共有サーバ２００のＰｏｒｔ番号８０に接続するものとする。
【００３０】
実施例１のＧＷ１００内、および共有サーバ２００内の機能ブロックの一例を図３に示す。ＧＷ１００は、テナント識別部１、コネクション識別部２、コネクション作成部３、テナント／コネクション関連テーブル４を有する。
【００３１】
テナント識別部１は、クライアントの所属するテナントとコネクションのＩＤの変換を行う機能部であり、各テナント内のクライアントからリクエストメッセージを受信し、送信元のテナントを識別し、テナントＩＤを決定する。またテナント識別部１は、コネクション識別部２から受信したテナントＩＤに該当するテナントに共有サーバ２００からのレスポンスメッセージを送信する。
【００３２】
コネクション識別部２は、共有サーバ２００との間で利用するコネクションのコネクションＩＤを決定し、テナントＩＤと共有ネットワーク上のコネクションとの対応を管理する機能部である。コネクション識別部２は、リクエスト受信時に、テナントＩＤをもとに、テナント／コネクション関連テーブル４を検索し、該当するコネクションＩＤを得る。該当するコネクションがない場合は、確保するコネクションＩＤを決定し、テナント／コネクション関連テーブル４にエントリを追加、更新する。またコネクション識別部２は、レスポンス受信時に、コネクションＩＤをもとに、テナント／コネクション関連テーブル４を検索し、該当するテナントＩＤを得る。
【００３３】
コネクション作成部３は、コネクション識別部２によって決定されたコネクションＩＤを共有サーバ２００との間で作成し、コネクションとテナントＩＤの関連を共有する機能部である。コネクション作成部３は、リクエスト受信時に、コネクション識別部２によって決定されたコネクションＩＤのコネクションが未作成であれば作成し、テナントＩＤとコネクションＩＤの関係を共有サーバ２００へ伝える。コネクション作成部３は、作成したコネクションを利用して、リクエストメッセージを共有サーバに送信する。またコネクション作成部３は、レスポンス受信時に、受信したレスポンス及びコネクションＩＤをコネクション識別部２に渡す。
【００３４】
テナント／コネクション関連テーブル４は、コネクションＩＤとテナントＩＤの関連を保持するテーブルである。
【００３５】
共有サーバ２００は、コネクション識別部５、コネクション作成部６、テナント／コネクション関連テーブル７、共有アプリケーション８（図面中、共有アプリと表記）の機能ブロックを有する。
【００３６】
コネクション識別部５は、コネクションＩＤとテナントＩＤの変換を行う機能部であり、リクエストメッセージ受信時に、コネクションＩＤをもとに、テナント／コネクション関連テーブルを検索し、該当するテナントＩＤを得る。またコネクション識別部５は、レスポンスメッセージ送信時に、テナントＩＤをもとに、テナント／コネクション関連テーブル７を検索し、該当するコネクションＩＤを得る。
【００３７】
コネクション作成部６は、ＧＷ１００との間でコネクションを作成し、コネクションとテナントＩＤの関連を共有する機能部である。コネクション作成部６は、リクエストメッセージ受信前に、ＧＷ１００との間でコネクションを作成する。またコネクション作成部６は、コネクションとテナントＩＤの関連付けをＧＷ１００より通知されると、その情報をテナント／コネクション関連テーブル７に登録する。コネクション作成部６は、レスポンスメッセージ送信時に、コネクション識別部５によって指定されたコネクションＩＤのコネクションを利用して、レスポンスメッセージをＧＷ１００に送信する。
【００３８】
テナント／コネクション関連テーブル７は、コネクションのＩＤとテナントＩＤの関連を保持するテーブルである。
【００３９】
共有アプリケーション８は、テナントごとに処理を行うアプリケーションである。共有アプリケーション８は、リクエスト受信時には、指示されたテナントＩＤに対する処理を行い、レスポンス送信時には、受信時に指定されたテナントＩＤを付与して、処理結果をコネクション識別部５に渡す。
【００４０】
次に、テナント内の各クライアント、ＧＷ１００、共有サーバ２００の処理を説明する。以下、手順１としてテナントＡ内のクライアントＡ１からのメッセージを共有サーバ２００に届ける処理、および手順２として共有サーバ２００からの応答をクライアントＡ１へ返す処理について説明する。また、手順２が終了した後でテナントＡ内の別のクライアントであるクライアントＡ２からのメッセージを共有サーバ２００に届ける処理を手順３として説明し、さらに、テナントＡ内のクライアントのシーケンスが完了した後に、テナントＢ内のクライアントＢ１からのメッセージを共有サーバ２００に届ける処理を手順４として説明する。なお、手順３および手順４の応答は手順２と同様の処理のため、説明を省略する。
【００４１】
図４に、各クライアント、ＧＷ１００、共有サーバ２００の間で生ずるシーケンスについて示し、また、図５に実施例１で用いるデータ構造について示す。なお、図５（Ａ）は、テナント／コネクション関連テーブル４、７のテーブル構成例（第２対応関係）であり、図５（Ｂ）はＧＷ１００内で保持されているテナント識別用のテーブル構成例（第１対応関係）である。また図５（Ｃ）は、ＧＷ１００内で保持される、テナント内でのコネクションＩＤ（第２コネクション情報）、共有ネットワーク内でのコネクションＩＤ、およびテナントＩＤとを対応付けるテーブル（コネクション関連付けテーブル）（第３対応関係）の構成例である。
【００４２】
また、図６は、処理ごとのテナント／コネクション関連テーブル４、７の遷移を示す図であり、図７は、コネクション関連付けテーブルの処理ごとの遷移を示す図である。なお、図６、図７での「ｓｔｅｐ  ｎ」（ｎは数字）は、以降の説明上に示す「Ｓ  ｎ」（ｎは数字）に対応している。これら図６、図７については以降特に言及しないが、必要に応じ適宜参照すると理解が深まる。
【００４３】
まず、手順１であるテナントＡ内のクライアントからのメッセージを共有サーバに届ける処理について説明する。
【００４４】
（Ｓ１）クライアントＡ１が、ＧＷ１００宛に共有アプリケーション８に対するリクエストメッセージを送信する。なお＜混在しています。以下同様＞、クライアントＡ１とＧＷ１００とのコネクションをコネクション１とし、リクエストメッセージはコネクション１を介してＧＷ１００に送信されるものとする。
【００４５】
（Ｓ２）ＧＷ１００がリクエストメッセージを受信すると、テナント識別部１がテナントの識別を行う。今回はテナントＡ（宛先ＩＰアドレス＝20.0.0.1）から受信したため、テナント識別用のテーブル（図５（Ｂ））を検索し、テナントＩＤ=”A”というＩＤを取得する。なお、各テナントとテナントＩＤの関係は、例えば図５（Ｂ）のようなテーブルを事前に設定済みであるものとする。
【００４６】
（Ｓ３）コネクション識別部２は、取得したテナントＩＤ=”A”を検索キーとして、テナント／コネクション関連テーブル４を検索する。該当するエントリがないため、新たにコネクションＩＤ（ＧＷ ＩＰ=10.0.0.1, ＧＷ Ｐｏｒｔ=15438, Server ＩＰ=10.0.0.2, Server Ｐｏｒｔ=80）を決定し、テナント／コネクション関連テーブル４に上記コネクションＩＤおよびテナントＩＤ=”A”、使用中フラグ1のエントリを追加する（図５（Ａ）参照）。なお、今回新たに決定されたコネクションＩＤのコネクションをコネクション２とする。なお、コネクション２のＧＷ１００のＩＰアドレスは装置に事前設定されている固定値であり、ＧＷ１００のＰｏｒｔ番号はＧＷ１００自身が重複しない値を自律的に選択された番号である。ＧＷ１００が担当する共有サーバ２００のＩＰアドレスと、各テナントに公開しているＧＷ１００のＩＰアドレス（20.0.0.1／30.0.0.1）との対応が事前設定されており、共有サーバ２００のＩＰアドレスは受信したメッセージのパケットヘッダを元に、宛先サーバが決まるものとする。
【００４７】
（Ｓ４）コネクション識別部２は、テナントＩＤ=”A”、テナント側のコネクション１のコネクションＩＤ（Client IP=20.0.10.1, Client Port =84667, GW IP =20.0.0.1, GW Port =80）と、共有ネットワーク側のコネクション２のコネクションＩＤ（ＧＷ ＩＰ=10.0.0.1, ＧＷ Ｐｏｒｔ=15438, Server ＩＰ=10.0.0.2, Server Ｐｏｒｔ=80）の対応を記録する（図５（Ｃ）参照）。なお、上記コネクション１のＩＰアドレスおよびＰｏｒｔ番号は、クライアントＡ１から受信したメッセージのパケットヘッダから取得した値を利用する。
【００４８】
（Ｓ５）ＧＷ１００のコネクション作成部３は、指定されたコネクションＩＤを利用して共有サーバ２００との間でコネクション２を作成する。
（Ｓ６）ＧＷ１００のコネクション作成部３は、コネクション２上で、テナントＩＤ=”A”を共有サーバ２００に対して送信する。
（Ｓ７）共有サーバ２００のコネクション作成部６は、受信したテナントＩＤ=”A”およびコネクション２のコネクションＩＤ（ＧＷ ＩＰ=10.0.0.1, ＧＷ Ｐｏｒｔ=15438, Server ＩＰ=10.0.0.2, Server Ｐｏｒｔ=80）のエントリをテナント／コネクション関連テーブル７に追加する。
【００４９】
（Ｓ８）ＧＷ１００のコネクション作成部３は、コネクション２を利用してリクエストメッセージを共有サーバ２００に送信する。
（Ｓ９）コネクション作成部６は、コネクション２を介してリクエストメッセージを受信し、コネクション２のコネクションＩＤをコネクション識別部５に渡す。また、コネクション作成部６は、テナント／コネクション関連テーブル７にあるコネクション２の使用中フラグを1にする。
【００５０】
（Ｓ１０）コネクション識別部５は、受信したコネクション２のコネクションＩＤをもとに、テナント／コネクション関連テーブル７を検索し、テナントＩＤ＝”A”を取得する。なお、１回目はテナントＩＤを伝達しているため、テーブル検索をする代わりにコネクション作成部６からテナントＩＤ＝”A”を受け取っても良い。
（Ｓ１１）共有アプリケーション８は、リクエストメッセージ及びテナントＩＤ＝”A”を受け取り、テナントＡ向けの処理を行う。
【００５１】
なお、テナントＩＤの伝達には、メッセージと同じコネクションを使う代わりに、テナントＩＤ伝達用の専用コネクションを利用し、テナントＩＤとコネクションＩＤの関係を伝えても良い。
【００５２】
次に、手順２である共有サーバ２００からの応答をクライアントＡ１へ返す処理について説明する。本処理は、共有アプリケーション８が処理完了後に、受信時のコネクションを利用して、クライアントＡ１へレスポンスメッセージを返答する処理である。
【００５３】
（Ｓ１２）共有サーバ２００の共有アプリケーション８は、処理結果を含むレスポンスメッセージおよびテナントのＩＤ=”A”をコネクション識別部５に渡す。
（Ｓ１３）コネクション識別部５は、リクエストメッセージを受信したコネクション２を利用して送信させるため、コネクション２のコネクションＩＤ（ＧＷ ＩＰ=10.0.0.1, ＧＷ Ｐｏｒｔ=15438, Server ＩＰ=10.0.0.2, Server Ｐｏｒｔ=80）をコネクション作成部６に渡す。
【００５４】
（Ｓ１４）コネクション作成部６は、渡されたコネクションＩＤのコネクション（すなわちコネクション２）を利用して、レスポンスメッセージをＧＷ１００に送信する。また、コネクション作成部６は、テナント／コネクション関連テーブル７に対しコネクション２のエントリの使用中フラグを0に設定し、ＧＷ１００のコネクション作成部３へコネクションＩＤおよびレスポンスメッセージを渡す。
（Ｓ１５）コネクション作成部３は、受信したコネクション２のコネクションＩＤおよびレスポンスメッセージをコネクション識別部２に渡す。
【００５５】
（Ｓ１６）コネクション識別部２は、渡されたコネクション２のコネクションＩＤをもとに、テナント／コネクション関連テーブル４を検索し、テナントＩＤ=”A”を取得する。また、テナント／コネクション関連テーブル４に対しコネクション２のエントリの使用中フラグを0に設定する。
【００５６】
（Ｓ１７）コネクション識別部２は、記録しておいたテナント側のコネクション１（テナント=”A”, Client ＩＰ=20.0.10.1, Client Ｐｏｒｔ=84667, ＧＷ ＩＰ=20.0.0.1, ＧＷ Ｐｏｒｔ=80）と、共有ネットワーク側のコネクション２（ＧＷ ＩＰ=10.0.0.1, ＧＷ Ｐｏｒｔ=15438, Server ＩＰ=10.0.0.2, Server Ｐｏｒｔ=80）の対応を読み出し、当該エントリを削除した上でコネクション１のコネクションＩＤおよびテナントＩＤ=”A”をテナント識別部１に渡す。
【００５７】
（Ｓ１８）テナント識別部１は、渡されたテナントＩＤ=”A”のインタフェース上にある、クライアント側のコネクション１を利用してレスポンスメッセージを送信する。
【００５８】
次に、手順１、手順２のシーケンスが終了した後にテナントＡ内のクライアントＡ２からのメッセージを共有サーバに届ける処理（手順３）を説明する。ここでは、手順２までが行われた後、テナントＡ内のクライアントＡ２がメッセージを渡し、ＧＷ１００と共有サーバ２００間で作成済みのコネクション２を再利用する場合の説明を行う。
【００５９】
（Ｓ１９）クライアントＡ２が、ＧＷ１００宛に共有アプリケーション８に対するリクエストメッセージを送信する。なお、リクエストメッセージが送信されるコネクションはコネクション３であるとする。
【００６０】
（Ｓ２０）ＧＷ１００がリクエストメッセージを受信すると、テナント識別部１がテナントの識別を行う。今回はテナントＡのネットワークから受信したため、テナントＩＤ=”A”というＩＤが取得される。
【００６１】
（Ｓ２１）コネクション識別部２は、取得したテナントＩＤ=”A”を検索キーとして、テナント／コネクション関連テーブル４を検索する。ここで、未使用状態（使用中フラグ=0）のコネクション２（ＧＷ ＩＰ=10.0.0.1, ＧＷ Ｐｏｒｔ=15438, Server ＩＰ=10.0.0.2, Server Ｐｏｒｔ=80）が得られる。コネクション識別部２は、テナント／コネクション関連テーブル４に対しコネクション２のエントリの使用中フラグを1に設定する。
【００６２】
（Ｓ２２）コネクション識別部２は、テナントＩＤ=”A”、テナント側のコネクション３（Client ＩＰ=20.0.10.2, Client Ｐｏｒｔ=45817, ＧＷ ＩＰ=20.0.0.1, ＧＷ Ｐｏｒｔ=80）と、共有ネットワーク側のコネクション２（ＧＷ ＩＰ=10.0.0.1, ＧＷ Ｐｏｒｔ=15438, Server ＩＰ=10.0.0.2, Server Ｐｏｒｔ=80）の対応を図５（Ｃ）のように記録する。
【００６３】
（Ｓ２３）ＧＷ１００のコネクション作成部３は、コネクション２を利用してクライアントＡ２からのリクエストメッセージを共有サーバ２００に送信する。
（Ｓ２４）コネクション作成部６は、リクエストメッセージをコネクション２を介して受信し、コネクション２のコネクションＩＤをコネクション識別部５に渡す。また、コネクション作成部６は、テナント／コネクション関連テーブル７にあるコネクション２の使用中フラグを1にする。
【００６４】
（Ｓ２５）コネクション識別部５は、受信したコネクション２のコネクションＩＤをもとに、テナント／コネクション関連テーブル７を検索し、テナントＩＤ＝”A”を取得する。
【００６５】
（Ｓ２６）共有アプリケーション８は、リクエストメッセージ及びテナントＩＤ＝”A”を受け取り、テナントＡ向けの処理を行う。
【００６６】
次に、テナントＡでの処理が終了した後、テナントＢ内のクライアントＢ１からのメッセージを共有サーバ２００に届ける処理（手順４）について説明する。ここでは手順３までが行われた後、テナントＢ内のクライアントＢ１がメッセージを渡し、ＧＷ１００と共有サーバ２００間で作成済みのコネクション２を再利用する場合の説明を行う。つまり、未作成状態のコネクションおよびテナントＢに関する非使用状態のコネクションがないものとする。
【００６７】
（Ｓ２７）クライアントＢ１が、ＧＷ１００宛に共有アプリケーション８に対するリクエストメッセージを送信する。なお、リクエストメッセージが送信されるコネクションはコネクション４であるとする。
（Ｓ２８）ＧＷ１００がリクエストを受信すると、テナント識別部１がテナントの識別を行う。今回はテナントＢのネットワークから受信したため、テナントＩＤ=”B”というＩＤが取得される。
【００６８】
（Ｓ２９）コネクション識別部２は、取得したテナントＩＤ=”B”を検索キーとして、テナント／コネクション関連テーブル４を検索する。テナントＩＤ=”B”で、かつ未使用状態（使用中フラグ=0）のコネクションが見つからず、未作成状態のコネクションもないため、テナントＡ用の未使用状態（使用中フラグ＝0）のコネクション２を利用する。コネクション識別部２は、テナント／コネクション関連テーブル４のコネクション２の使用中フラグを1に設定し、テナントＩＤ=”B”に変更する。
【００６９】
（Ｓ３０）コネクション識別部２は、テナントＩＤ=”B”、テナント側のコネクション４（Client ＩＰ=30.0.10.1, Client Ｐｏｒｔ=73938, ＧＷ ＩＰ=30.0.0.1, ＧＷ Ｐｏｒｔ=80）と、共有ネットワーク側のコネクション２（ＧＷ ＩＰ=10.0.0.1, ＧＷ Ｐｏｒｔ=15438, Server ＩＰ=10.0.0.2, Server Ｐｏｒｔ=80）の対応を図５（Ｃ）で示したように記録する。
（Ｓ３１）ＧＷ１００のコネクション作成部３は、上記コネクション２をテナントＩＤ=”B”に変更することを共有サーバ２００に対して通知する。
【００７０】
（Ｓ３２）共有サーバ２００のコネクション作成部６は、テナント／コネクション関連テーブル７に対し、コネクション２のコネクションＩＤ（ＧＷ ＩＰ=10.0.0.1, ＧＷ Ｐｏｒｔ=15438, Server ＩＰ=10.0.0.2, Server Ｐｏｒｔ=80）のエントリを受信したテナントＩＤ=”B”に変更する。
（Ｓ３３）ＧＷ１００のコネクション作成部３は、上記コネクション２を利用してリクエストメッセージを共有サーバ２００に送信する。
【００７１】
（Ｓ３４）コネクション作成部６は、上記リクエストメッセージを受信し、コネクション２のコネクションＩＤをコネクション識別部５に渡す。また、テナント／コネクション関連テーブル７にあるコネクション２の使用中フラグを1にする。
（Ｓ３５）コネクション識別部５は、受信したコネクション２のコネクションＩＤをもとに、テナント／コネクション関連テーブル７を検索し、テナントＩＤ＝”B”を取得する。
【００７２】
（Ｓ３６）共有アプリケーション８は、リクエストメッセージおよびテナントＩＤ＝”B”を受け取り、テナントＢ向けの処理を行う。
【００７３】
なお、実施例１ではＧＷ１００がリクエストメッセージ受信時に新しくコネクションを作成する場合を記載したが、通信前にＧＷ１００と共有サーバ２００間で一定数のコネクションが作成され、テナントＩＤとコネクションＩＤの関連付けがあらかじめ保持されている方式でも構わない。その場合は、手順１のコネクション作成およびテナントＩＤの伝達処理が省略される。
【００７４】
次に、ＧＷ１００内部の処理について、図８のフローチャートを参照しつつ説明する。
【００７５】
テナント識別部１は、メッセージを受信する（Ｓ１０１）。テナント識別部１は、メッセージを受信したＧＷ１００のＩＰアドレスを検索キーとして、図５（Ｂ）のテーブルを検索することで識別し、テナントＩＤを取得する（Ｓ１０２）。またテナント識別部１は、ここで図５（Ｂ）のテーブルにエントリされていないことを条件として、取得したメッセージが共有サーバ２００からのメッセージであるかを識別する。
【００７６】
テナント識別部１は、各テナントからのアクセスか、または共有サーバ２００からのアクセスかを判定する（Ｓ１０３）。ここで、各テナントからのアクセスである場合（Ｓ１０３、Ｙ）、コネクション識別部２は、Ｓ１０２で取得されたテナントＩＤを検索キーとして、テナント／コネクション関連テーブル４を検索する（Ｓ１０４）。コネクション識別部２は、検索結果に基づき非使用状態のコネクションがあるかを判定する（Ｓ１０５）。非使用状態のコネクションがある場合（Ｓ１０５、Ｙ）、テナント／コネクション関連テーブル４に対し当該非使用状態のコネクションの使用中フラグに１を設定し（Ｓ１０６）、テナントＩＤと、テナント側のコネクションＩＤと、共有ネットワーク側のコネクションＩＤとの対応を記録する（図５（Ｃ）参照）（Ｓ１０７）。その後、コネクション作成部３は、メッセージを送信する（Ｓ１０８）。
【００７７】
Ｓ１０５でコネクション識別部２が非使用状態のコネクションは無いと判定した場合（Ｓ１０５、Ｎ）、コネクション識別部２は、次に未作成状態のコネクションがあるかを判定する（Ｓ１０９）。未作成状態のコネクションがあると判定された場合（Ｓ１０９、Ｙ）、コネクション識別部２は、コネクションＩＤを決定し（Ｓ１１０）、テナント／コネクション関連テーブル４に決定したコネクションＩＤおよびテナントＩＤ、使用中フラグ＝1のエントリを追加する（Ｓ１１１）。コネクション識別部２は、その後、図５（Ｃ）で示したアドレスの対応を記録する（Ｓ１１２）。
【００７８】
コネクション作成部３は、共有サーバ２００のコネクション作成部６との間でコネクションを作成し（Ｓ１１３）、作成したコネクション上で、テナントＩＤを通知することで、コネクションＩＤの関連付けをテナント／コネクション関連テーブル７に追加するよう通知する（Ｓ１１４）。その後コネクション作成部３は、Ｓ１０８の処理を実行する。
【００７９】
また、Ｓ１０９で未作成状態のコネクションが無いと判定された場合（Ｓ１０９、Ｎ）、コネクション識別部２は、テナント／コネクション関連テーブル４を参照することで別テナントの流用可能なコネクションを決定する（Ｓ１１５）。コネクション識別部２は、テナント／コネクション関連テーブル４に対し当該コネクションのエントリのテナントＩＤを変更し、また使用中フラグを１に設定する（Ｓ１１６）。コネクション識別部２は、図５（Ｃ）で示したアドレスの対応を記録する（Ｓ１１７）。コネクション作成部３は、当該コネクションを流用することで、テナントＩＤを通知し、コネクションＩＤの関連付けをテナント／コネクション関連テーブル７に追加するよう通知する（Ｓ１１８）。その後、Ｓ１０８の処理が実行される。
【００８０】
また、Ｓ１０３で、各テナントからのアクセスでない場合、すなわち共有サーバ２００からのアクセスである場合（Ｓ１０３、Ｎ）、コネクション識別部２は、メッセージが受信されたコネクションのコネクションＩＤでテナント／コネクション関連テーブル４を検索し、テナントＩＤを取得する（Ｓ１１９）。また、コネクション識別部２は、テナント／コネクション関連テーブル４に対し、当該コネクションのエントリの使用中フラグを0に設定する（Ｓ１２０）。
【００８１】
コネクション識別部２は、記録しておいたテナント側のコネクションＩＤと共有ネットワーク側のコネクションＩＤとの対応（図５（Ｃ））を読み出し、当該エントリを削除した上でクライアントのコネクションＩＤおよびテナントＩＤをテナント識別部１に渡す（Ｓ１２１）。
【００８２】
テナント識別部１は、渡されたテナントＩＤのインタフェース上にある、クライアント側のコネクションを利用してレスポンスメッセージを送信する（Ｓ１０８）。
【００８３】
次に、共有サーバ２００内部の処理について図９のフローチャートを参照しつつ説明する。
【００８４】
コネクション作成部６は、ＧＷ１００からメッセージを受信し（Ｓ１５１）、受信したメッセージが共有アプリケーション８へのリクエストメッセージであるかを判定する（Ｓ１５２）。
【００８５】
受信したメッセージがリクエストメッセージである場合（Ｓ１５２、Ｙ）、コネクション作成部６は、リクエストメッセージを取得したコネクションのコネクションＩＤおよびリクエストメッセージをコネクション識別部５に渡す。コネクション識別部５は、取得したコネクションＩＤをもとに、テナント／コネクション関連テーブル７を検索し、テナントＩＤを取得する（Ｓ１５３）。
【００８６】
また、コネクション作成部６は、テナント／コネクション関連テーブル７にある該当するコネクションの使用中フラグを１にする（Ｓ１５４）。コネクション識別部５は、Ｓ１５３で取得したテナントＩＤおよびリクエストメッセージを共有アプリケーション８に通知する（Ｓ１５５）。
【００８７】
共有アプリケーション８は、テナントＩＤおよびリクエストメッセージを受け取り、受け取ったテナントＩＤ用の処理を行う（Ｓ１５６）。処理終了後、共有アプリケーション８は、処理結果を含むレスポンスメッセージおよびテナントＩＤをコネクション識別部５に渡す。コネクション識別部５は、リクエストメッセージを受信したコネクションを利用して送信させるため、コネクションＩＤをコネクション作成部６に渡す。
【００８８】
コネクション作成部６は、テナント／コネクション関連テーブル７に対し、取得したコネクションＩＤで検索し、検索されたエントリの使用中フラグを0に設定する（Ｓ１５７）。コネクション作成部６は、コネクション作成部３へレスポンスメッセージを送信する（Ｓ１５８）。
【００８９】
Ｓ１５２でリクエストメッセージでないと判定された場合（Ｓ１５２、Ｎ）、コネクション作成部６は、次にメッセージがコネクション作成依頼である場合（Ｓ１５９、Ｙ）、受信したテナントＩＤおよびコネクションＩＤのエントリをテナント／コネクション関連テーブル７に追加することで、コネクションを作成する（Ｓ１６０）。
【００９０】
また、コネクション作成部６は、当該メッセージが関連付け追加の通知（Ｓ１１４の通知）である場合（Ｓ１６１、Ｙ）、テナント／コネクション関連テーブル７に関連付けエントリの追加を行う（Ｓ１６２）。またコネクション作成部６は、当該メッセージが関連付け変更の通知（Ｓ１１８の通知）である場合（Ｓ１６３、Ｙ）、テナント／コネクション関連テーブル７内の該当エントリに対し、テナントＩＤの変更を行う（Ｓ１６４）。
【００９１】
以上説明した構成および処理によって、ＧＷ１００と共有サーバ２００と間のコネクションの作成時のみテナントＩＤが通知されるため、各テナントのテナントＩＤを全メッセージに埋め込むことなく通信が可能となる。よって、全パケット／メッセージに対してテナントＩＤの書き込みおよび読み出しの処理は不要になる。これにより、ＧＷおよび共有サーバの性能向上が可能となる。
【００９２】
（実施例２）
実施例２では、ＧＷによって送信される初回のメッセージのみメッセージ中にテナントＩＤを埋め込み、共有サーバにコネクションとテナントＩＤの関係を伝え、またＧＷがコネクションとテナントの関係変更時のみメッセージ中にテナントＩＤを埋め込むことで、共有サーバにコネクションとテナントＩＤの関係を伝えるシステムについて説明する。
【００９３】
実施例２における機能構成例を図１０に示す。また、ＧＷ１０１の処理を図１１のフローチャートに示し、共有サーバ２０１の処理を図１２のフローチャートに示す。
【００９４】
実施例２のＧＷ１０１は、実施例１のＧＷ１００に対し、さらにテナントＩＤ付与部９を備え、また共有サーバ２０１は、実施例１の共有サーバ２００に対し、さらにテナントＩＤ読み出し部１０を備える（図１０参照）。
【００９５】
テナントＩＤ付与部９は、リクエスト受信時に、新しくコネクションを作成するとき、およびコネクションとテナントの関係を変更する時に、テナントＩＤおよび作成／更新の指示をリクエストメッセージ内に記載する。
【００９６】
テナントＩＤ読み出し部１０は、メッセージ中にテナントＩＤおよび作成／更新の指示があるときに、受信したコネクションＩＤおよびテナントＩＤの関係を読み出し、テナント／コネクション関連テーブル７に対し該当エントリの作成／変更処理を行う。
【００９７】
上記以外の機能ブロックは実施例１と同様のため説明を省略する。
【００９８】
以下、実施例２のテナントＡ内のクライアントＡ１からのメッセージを共有サーバに届ける処理（実施例１の手順１に対応）、およびテナントＡでの処理が終了後にテナントＢ内のクライアントＢ１からのメッセージを共有サーバに届ける処理（実施例１の手順４に対応）の説明を行う。
【００９９】
まず、実施例２のテナントＡ内のクライアントＡ１からのメッセージを共有サーバに届ける処理について説明する。
【０１００】
クライアントＡ１が、ＧＷ１０１宛に共有アプリケーション８に対するリクエストメッセージを送信する。なお、ここで使用されるコネクションをコネクション１とする。ＧＷ１０１がリクエストメッセージを受信すると、テナント識別部１がテナントの識別を行う。今回はテナントＡのネットワークから受信したため、テナントＩＤ=”A”というＩＤを取得する。なお、ネットワークとテナントＩＤの関係は、実施例１と同様例えば図５（Ｂ）のようなテーブルを事前に設定済みであるものとする。
【０１０１】
コネクション識別部２は、取得したテナントＩＤ=”A”を検索キーとして、テナント／コネクション関連テーブル４を検索する。該当するエントリがないため、コネクション識別部２は、実施例１と同様に新たにコネクションＩＤ（ＧＷ ＩＰ=10.0.0.1, ＧＷ Ｐｏｒｔ=15438, Server ＩＰ=10.0.0.2, Server Ｐｏｒｔ=80）を決定し（このコネクションＩＤのコネクションをコネクション２とする）、テナント／コネクション関連テーブル４に上記コネクションＩＤおよびテナントＩＤ=”A”、使用中フラグ1のエントリを追加する（図５（Ａ）参照）。
【０１０２】
コネクション識別部２は、テナントＩＤ=”A”、テナント側のコネクション１（Client ＩＰ=20.0.10.1, Client Ｐｏｒｔ=84667,ＧＷ ＩＰ=20.0.0.1, ＧＷ Ｐｏｒｔ=80）と、共有ネットワーク側のコネクション２（ＧＷ ＩＰ=10.0.0.1, ＧＷ Ｐｏｒｔ=15438, Server ＩＰ=10.0.0.2, Server Ｐｏｒｔ=80）の対応を記録する（図５（Ｃ）参照）。
【０１０３】
テナントＩＤ付与部９は、コネクションが新しく作成されるため、指定されたテナントＩＤ=”A”および”追加”の依頼をメッセージ中に記載する。例えば図１３に示すようにメッセージの先頭に記載用の領域が確保されている場合、テナントＩＤ付与部９は、指示内容（追加または変更）およびテナントＩＤを埋め込むものとする。
【０１０４】
ＧＷ１０１のコネクション作成部３は、指定されたコネクションＩＤのコネクション２を利用して共有サーバとの間でコネクションを作成する。ＧＷ１０１のコネクション作成部３は、コネクション２を利用してリクエストメッセージを共有サーバ２０１に送信する。共有サーバ２０１のコネクション作成部６は、リクエストメッセージを受信し、リクエストメッセージをテナントＩＤ読み出し部１０に渡す。
【０１０５】
テナントＩＤ読み出し部１０は、メッセージ中からテナントＩＤ=”A”を読み出し、テナントＩＤおよびコネクション２のコネクションＩＤ（ＧＷ ＩＰ=10.0.0.1, ＧＷ Ｐｏｒｔ=15438, Server ＩＰ=10.0.0.2, Server Ｐｏｒｔ=80）、使用中フラグ=1のエントリをテナント／コネクション関連テーブル７に追加する。
【０１０６】
コネクション識別部５は、受信したコネクション２のコネクションＩＤをもとに、テナント／コネクション関連テーブル７を検索し、テナントＩＤ＝”A”を取得する。なお、１回目はテナントＩＤを伝達しているため、テーブル検索をする代わりにコネクション作成部６からテナントＩＤ＝”A”を受け取っても良い。共有アプリケーション８は、リクエストメッセージ及びテナントＩＤ＝”A”を受け取り、テナントＡ向けの処理を行う。
【０１０７】
次に、上記テナントＡでの処理が終了した後に、テナントＢ内のクライアントＢ１からのメッセージを共有サーバに届ける処理の説明を行う。
【０１０８】
クライアントＢ１が、ＧＷ１０１宛に共有アプリケーション８に対するリクエストメッセージを送信する。なお、ここで使用されるコネクションをコネクション４とする。
ＧＷ１０１がリクエストメッセージを受信すると、テナント識別部１が図５（Ｂ）のテーブルを参照することでテナントの識別を行う。今回はテナントＢのネットワークから受信したため、テナントＩＤ=”B”を取得する。
コネクション識別部２は、取得したテナントＩＤ=”B”を検索キーとして、テナント／コネクション関連テーブル４を検索する。テナントＩＤ=”B”で、かつ未使用状態（使用中フラグ=0）のコネクションが見つからず、また未作成状態のコネクションもないため、テナントＡ用の未使用状態（使用中フラグ＝0）のコネクション２が利用される。コネクション識別部２は、テナント／コネクション関連テーブル４のコネクション２の使用中フラグを1に設定し、テナントＩＤ＝”B”に変更する。
【０１０９】
コネクション識別部２は、テナントＩＤ=”B”、テナント側のコネクション４（Client ＩＰ=30.0.10.1, Client Ｐｏｒｔ=73938, ＧＷ ＩＰ=30.0.0.1, ＧＷ Ｐｏｒｔ=80）と、共有ネットワーク側のコネクション２（ＧＷ ＩＰ=10.0.0.1, ＧＷ Ｐｏｒｔ=15438, Server ＩＰ=10.0.0.2, Server Ｐｏｒｔ=80）の対応を記録する。
【０１１０】
テナントＩＤ付与部９が、指定されたテナントＩＤ=”B”および”変更”の依頼をメッセージ中に記載する。ＧＷ１０１のコネクション作成部３は、上記コネクション２を利用してリクエストメッセージを共有サーバ２０１に送信する。
【０１１１】
共有サーバ２０１のコネクション作成部６は、リクエストメッセージを受信し、リクエストメッセージをテナントＩＤ読み出し部１０に渡す。テナントＩＤ読み出し部１０は、メッセージ中からテナントのＩＤ=”B”を読み出し、テナント／コネクション関連テーブル７のコネクション２に関するエントリ（コネクションＩＤが（ＧＷ ＩＰ=10.0.0.1, ＧＷ Ｐｏｒｔ=15438, Server ＩＰ=10.0.0.2, Server Ｐｏｒｔ=80）であるエントリ）のテナントＩＤを”B”に変更し、使用中フラグを1に設定する。
【０１１２】
コネクション識別部５は、受信したコネクション２のコネクションＩＤをもとに、テナント／コネクション関連テーブル７を検索し、テナントＩＤ＝”B”を取得する。共有アプリケーション８は、リクエストメッセージ及びテナントＩＤ＝”B”を受け取り、テナントＢ向けの処理を行う。
【０１１３】
次に、実施例２のＧＷ１０１の処理を図１１のフローチャートを参照しつつ説明する。なお、上述実施例１のＧＷ１００の処理（図８）と同一符号は同一処理であるため、説明を割愛し、実施例１と異なる処理についてのみ説明する。
【０１１４】
Ｓ１１２の処理後、テナントＩＤ付与部９は、テナントＩＤおよび追加指示をメッセージに埋め込み（Ｓ２０１）、コネクション作成部３は、共有サーバ２０１のコネクション作成部６との間でコネクションを作成する（Ｓ１１３）。
【０１１５】
また、Ｓ１１７の処理後、テナントＩＤ付与部９は、テナントＩＤおよび変更指示をメッセージに埋め込み（Ｓ２０２）、メッセージが送信される（Ｓ１０８）。
【０１１６】
引き続き、実施例２の共有サーバ２０１の処理を図１２のフローチャートを参照しつつ説明する。なお、上述実施例１の共有サーバ２００の処理（図９）と同一符号は同一処理であるため、説明を割愛し、実施例１と異なる処理についてのみ説明する。
【０１１７】
Ｓ１５２のリクエストメッセージか否かの判定で、リクエストメッセージであると判定された場合（Ｓ１５２、Ｙ）、テナントＩＤ読み出し部１０は、メッセージ中に図１３で示した指示内容の有無を判定することで、関連付けの追加または変更指示があるかを判定する（Ｓ２０３）。ここで、メッセージ中に指示がある場合（Ｓ２０３、Ｙ）、テナントＩＤ読み出し部１０は、当該指示が関連付けの追加指示であるかを判定する（Ｓ２０４）。
【０１１８】
関連付け追加指示である場合（Ｓ２０４、Ｙ）、テナントＩＤ読み出し部１０は、テナント／コネクション関連テーブル７に対し関連付けの追加を行い（Ｓ２０５）、関連付け追加の指示でない場合（Ｓ２０４、Ｎ）、テナント／コネクション関連テーブル７に対しテナントＩＤの関連付けの変更を行う（Ｓ２０６）。
【０１１９】
以上より、コネクション上で通知処理を別途行わずに、必要なタイミングのみメッセージ中にテナントＩＤを埋め込むことで、通知処理にかかるネットワーク遅延を減らしつつ、コネクションの流用による処理負荷の軽減も実現可能となる。
【０１２０】
（実施例３）
実施例３では、テナントごとにＧＷと共有サーバとの間で利用できるコネクション数の上限を設ける方法について説明する。実施例３における機能構成図を図１４に示す。なお、共有サーバの機能構成およびフローチャートは実施例１と同様である。
【０１２１】
実施例３のＧＷ１０２は、実施例１のＧＷ１００に対しさらにコネクション上限テーブル１１（第４対応関係）を有する。コネクション上限テーブル１１は、テナントごとに、ＧＷ１０２と共有サーバ２００間のコネクション上限を保持するテーブルである。
【０１２２】
コネクション識別部２が他のテナントのコネクションを流用する前に、コネクション上限テーブル１１に登録されている上限に達している場合、エラー処理を行う。なお、このエラー処理としては、リクエストメッセージを廃棄、クライアントにエラーメッセージを応答、リクエストメッセージを保持して同一テナント内の空きコネクションが出るまで待機させるなどの選択肢が考えられる。
【０１２３】
コネクション上限テーブル１１のエントリは図１６のように設定されており、既にテナントＢが上限値の100コネクションを利用している場合、実施例１の手順４が以下のように変更になる。
【０１２４】
クライアントＢ１が、ＧＷ１０２宛に共有アプリケーション８に対するリクエストメッセージを送信する。ＧＷ１０２がリクエストを受信すると、テナント識別部１がテナントの識別を行う。今回はテナントＢのネットワークから受信したため、テナントＩＤ=”B”というＩＤを取得する。コネクション識別部２は、上記取得したテナントＩＤ=”B”を検索キーとして、テナント／コネクション関連テーブル４を検索する。テナントＩＤ=”B”で、かつ未使用状態（使用中フラグ=0）のコネクションが見つからず、未作成状態のコネクションもないため、コネクション識別部２は、コネクション上限テーブル１１のエントリ（上限１００）を読み出す。
【０１２５】
コネクション識別部２は、テナント／コネクション関連テーブル４のテナントＢのエントリ数をカウントする。本例では上記上限値に達しているため、エラー処理として受信したリクエストメッセージを廃棄する。
【０１２６】
なお、特定のテナントには制限を与えたくない場合は、コネクション上限テーブル１１にそのテナントのエントリを追加しないようにすることで実現される。
【０１２７】
次に、実施例３のＧＷ１０２の処理を図１５のフローチャートに示す。なお、上述実施例１のＧＷ１００の処理と同一符号は同一処理であるため、説明を割愛する。
【０１２８】
Ｓ１０９の処理で、コネクション識別部２が未作成状態のコネクションは無いと判定した場合（Ｓ１０９、Ｎ）、コネクション識別部２は、コネクション上限まで当該テナントＩＤのコネクション数が達しているかを、コネクション上限テーブル１１を参照することで判定する（Ｓ３０１）。ここでコネクション上限まで達している場合（Ｓ３０１、Ｙ）、Ｓ１１５の処理がなされ、コネクション上限まで達していない場合（Ｓ３０１、Ｎ）、コネクション識別部２はエラー処理を実行する（Ｓ３０２）。
【０１２９】
以上より、コネクションを再利用する際に、上限値を設定可能となり、特定のテナントがコネクションを浪費しすぎることを防ぐことができる。
【０１３０】
（実施例４）
実施例４では、ＧＷ、共有サーバそれぞれにテナント／コネクション関連テーブルを有する構成ではなく、関連管理サーバを用意し、テナント／コネクション関連テーブルは関連管理サーバ内で管理する構成について説明する。
【０１３１】
実施例４における機能構成図を図１７に示す。実施例４では、実施例１のＧＷ１００内のテナント／コネクション関連テーブル４および実施例１の共有サーバ２００内のテナント／コネクション関連テーブル７を削除する。その代わりにテナント／コネクション関連テーブル１２を有する関連管理サーバ３００を用意する。なお、テナント／コネクション関連テーブル１２は、テナント／コネクション関連テーブル４、テナント／コネクション関連テーブル７と同様、コネクションＩＤとテナントＩＤの関連を保持する機能を有する（図５（Ａ）参照）。
【０１３２】
基本的な処理の流れは実施例１と同様であるが、ＧＷ１０３及び共有サーバ２０３が行うテナント／コネクション関連テーブルへの更新・参照処理は、ＧＷ１０３及び共有サーバ２０３が関連管理サーバ３００へ更新・参照処理を依頼し、関連管理サーバ３００が内部のテナント／コネクション関連テーブル１２に対し更新・参照処理を行うことで実現される。
【０１３３】
実施例ＧＷ１０３の処理を図１８のフローチャートに、共有サーバ２０３の処理を図１９のフローチャートに、関連管理サーバ３００の処理を図２０のフローチャートにそれぞれ示す。ＧＷ１０３の処理、および共有サーバ２０３の処理は、共に実施例１におけるテナント／コネクション関連テーブル４、７への更新・参照処理（図８、図９のＳ１０４、Ｓ１０６、Ｓ１１１、Ｓ１１６、Ｓ１１９、Ｓ１２０、Ｓ１５３、Ｓ１５４）が、関連管理サーバ３００へ依頼する処理（Ｓ４０１、Ｓ４０２、Ｓ４０３、Ｓ４０４、Ｓ４０５、Ｓ４０６、Ｓ４０７）となること以外、実施例１と同一であるため、ＧＷ１０３の処理、および共有サーバ２０３の処理についての説明は割愛する。
【０１３４】
関連管理サーバ３００の処理について、図２０を参照しつつ説明する。
【０１３５】
関連管理サーバ３００は、依頼メッセージをＧＷ１０３または共有サーバ２０３より受信し（Ｓ４５０）、依頼メッセージが、Ｓ４０１、Ｓ４０５もしくはＳ４０７によるテーブル検索依頼である場合（Ｓ４５１、Ｙ）、テナント／コネクション関連テーブル１２内を依頼メッセージに付されたデータを検索キーとして検索し（Ｓ４５２）、処理結果を、依頼メッセージを送信したＧＷ１０３または共有サーバ２０３へ通知する（Ｓ４５９）。
【０１３６】
依頼メッセージがＳ４０３による関連付け追加依頼である場合（Ｓ４５３、Ｙ）、関連管理サーバ３００は、テナント／コネクション関連テーブル１２に関連付けのエントリ追加処理を行うとともに、追加したエントリの使用中フラグを１に設定する（Ｓ４５４）。その後、処理完了通知がなされる（Ｓ４５９）。
【０１３７】
また依頼メッセージがＳ４０４による関連付け変更依頼である場合（Ｓ４５５、Ｙ）、関連管理サーバ３００は、テナント／コネクション関連テーブル１２に関連付けの変更処理を行う（Ｓ４５６）。その後、処理完了通知がなされる（Ｓ４５９）。
【０１３８】
依頼メッセージがＳ４０６による使用フラグの変更依頼である場合（Ｓ４５７、Ｙ）、関連管理サーバ３００は、テナント／コネクション関連テーブル１２に該当するエントリの使用フラグを変更する（Ｓ４５８）。その後、処理完了通知がなされる（Ｓ４５９）。
【０１３９】
実施例４によって、複数存在していたテーブルが１つに統合されるため、コネクション作成部３とコネクション作成部６の間で行う、テナントとコネクションの関連を伝える処理が不要になる。また、使用中フラグの更新処理は、メッセージ送信開始および受信完了のイベントが発生する、ＧＷ１０３のみから行えばよい（図９のＳ１５９、Ｎの処理と図１９のＳ１５９、Ｎの処理の違いに留意）。
【０１４０】
以上、コネクションの状態を一箇所で一括管理できるため、異常時に複数テーブル間の対応が取れなくなるような問題が発生しにくくなる。
【０１４１】
上述の実施例１から実施例４で説明した各機能を組み合わせて提供することも可能である。
【０１４２】
なお、本発明は以下に示すようなコンピュータシステムにおいて適用可能である。図２１は、本発明が適用されるコンピュータシステムの一例を示す図である。この図に示すコンピュータシステム９００は、ＣＰＵやディスクドライブ等を内蔵した本体部９０１、本体部９０１からの指示により画像を表示するディスプレイ９０２、コンピュータシステム９００に種々の情報を入力するためのキーボード９０３、ディスプレイ９０２の表示画面９０２ａ上の任意の位置を指定するマウス９０４及び外部のデータベース等にアクセスして他のコンピュータシステムに記憶されているプログラム等をダウンロードする通信装置９０５を有する。通信装置９０５は、ネットワーク通信カード、モデムなどが考えられる。
【０１４３】
上述したような、中継装置（ＧＷ１００〜１０３）を構成するコンピュータシステムにおいて上述した各ステップを実行させるプログラムを、テナント管理プログラムとして提供することができる。このプログラムは、コンピュータシステムにより読み取り可能な記録媒体に記憶させることによって、中継装置のコンピュータシステムに実行させることが可能となる。上述した各ステップを実行するプログラムは、ディスク９１０等の可搬型記録媒体に格納されるか、通信装置９０５により他のコンピュータシステムの記録媒体９０６からダウンロードされる。また、コンピュータシステム９００に少なくともテナント管理機能を持たせるテナント管理プログラムは、コンピュータシステム９００に入力されてコンパイルされる。このプログラムは、コンピュータシステム９００を、テナント管理機能を有するテナント管理システムとして動作させる。また、このプログラムは、例えばディスク９１０等のコンピュータ読み取り可能な記録媒体に格納されていても良い。ここで、コンピュータシステム９００により読み取り可能な記録媒体としては、ＲＯＭやＲＡＭ等のコンピュータに内部実装される内部記憶装置、ディスク９１０やフレキシブルディスク、ＤＶＤディスク、光磁気ディスク、ＩＣカード等の可搬型記憶媒体や、コンピュータプログラムを保持するデータベース、或いは、他のコンピュータシステム並びにそのデータベースや、通信装置９０５のような通信手段を介して接続されるコンピュータシステムでアクセス可能な各種記録媒体を含む。
【０１４４】
ここで、上述のＧＷ１００〜１０３のハードウェア構成について図２２を参照しつつ説明する。ＧＷ１００〜１０３は、演算処理装置であるＣＰＵ（Central Processing Unit）９５１、主記憶装置であるメモリ９５２、ディスク９１０等を格納し、データの読み書きを行うディスクドライブ９５３、不揮発性の記憶装置である不揮発性記憶装置９５４を備え、また外部とのデータの通信を制御するＩ／Ｏ装置９５５を備える。なお、上述したＧＷ１００〜１０３内の各機能ブロックは、ＣＰＵ９５１、メモリ９５２、不揮発性記憶装置９５４、Ｉ／Ｏ装置９５５のハードウェア資源と、不揮発性記憶装置９５４内に予め保持されているファームウェアとが協働することで実現される。
【０１４５】
本実施の形態で開示したＧＷ、共有サーバによって、全パケット、全メッセージに対するテナントＩＤの書き込みおよび読み出しの処理が不要となるため、性能向上が可能となる。また、コネクションとテナントＩＤの伝播はコネクション単位に必要な処理である。そのため１つのコネクション上で複数メッセージ／パケットを送信する場合、従来技術よりも処理頻度が減り、性能向上が可能となる。
【０１４６】
本発明は、その精神または主要な特徴から逸脱することなく、他の様々な形で実施することができる。そのため、前述の実施の形態は、あらゆる点で単なる例示に過ぎず、限定的に解釈してはならない。本発明の範囲は、特許請求の範囲によって示すものであって、明細書本文には、何ら拘束されない。更に、特許請求の範囲の均等範囲に属する全ての変形、様々な改良、代替および改質は、全て本発明の範囲内のものである。
【０１４７】
以上、本実施の形態によれば、以下の付記で示す技術的思想が開示されている。
（付記１）  中継装置のクライアント側のアドレスを特定する情報と、前記クライアントが属するネットワークであって組織や企業単位のネットワークであるテナントを識別するためのテナント識別子との対応関係である第１対応関係を記憶し、
前記中継装置とサーバとの間のコネクションに係る情報である第１コネクション情報と、前記テナント識別子と、前記コネクションの使用の有無を示す使用情報との対応関係である第２対応関係を記憶し、
クライアントと前記中継装置との間のコネクションに係る情報である第２コネクション情報と、前記第１コネクション情報との対応関係である第３対応関係を記憶する、
記憶部を有する中継装置に、
クライアントから要求メッセージを受けると、前記要求メッセージを受けた中継装置のクライアント側のアドレスを検索キーにして、前記第１対応関係を読み出してテナント識別子を得るテナント識別子取得手順と、
得たテナント識別子が前記第２対応関係にない場合、前記第１コネクション情報を作成し、作成した第１コネクション情報と得たテナント識別子と、使用情報を使用中とした情報との対応関係を前記対応関係２に書き出す手順と、
前記要求メッセージを送信したクライアントのアドレスから前記第２コネクション情報を作成し、作成した第１コネクション情報と作成した第２コネクション情報を前記第３対応関係に書き出す手順と、
作成した第１コネクション情報から、前記中継装置と前記サーバとの間にコネクションを設定する手順と、
得たテナント識別子を前記サーバに送付する手順と、
受けた要求メッセージを、設定されたコネクションを経由して前記サーバに送信する手順と、
受けた要求メッセージに対する応答メッセージを前記サーバから受けると、前記使用情報を未使用中に設定する手順と、
を実行させるためのテナント管理プログラム。
（付記２）前記中継装置に、
前記クライアントと異なるクライアントから要求メッセージを受けると、前記テナント識別子取得手順で得たテナント識別子が前記第２対応関係に有り、かつ、前記使用情報が未使用中の場合、
前記使用情報を使用中に設定して前記第２対応関係に書き出す手順と、
前記クライアントのアドレスから前記第２コネクション情報を作成し、作成した第１コネクション情報と作成した第２コネクション情報を前記第３対応関係に書き出す手順と、
受けた要求メッセージを、前記コネクションを経由して前記サーバに送付する手順と、
受けた要求メッセージに対する応答メッセージを前記サーバから受けると、前記使用情報を未使用中に設定する手順と、
をさらに実行させるための付記１記載のテナント管理プログラム。
（付記３）  前記中継装置に、
前記クライアントと異なるクライアントである第２クライアントから要求メッセージを受けると、前記テナント識別子取得手順で得たテナント識別子に対応する前記使用情報が未使用中のエントリである第１エントリが前記第２対応関係になく、かつ、得たテナント識別子と異なるテナント識別子であって前記使用情報が未使用中のエントリである第２エントリがある場合、
前記第２エントリの使用情報を使用中に設定し、得たテナント識別子を設定して前記第２対応関係に書き出す手順と、
前記第２クライアントのアドレスから前記第２コネクション情報を作成し、作成した第１コネクション情報と作成した第２コネクション情報を前記第３対応関係に書き出す手順と、
前記テナント識別子取得手順で得たテナント識別子を前記サーバに送信する手順と、
前記第２クライアントから受けた要求メッセージを、前記コネクションを経由して前記サーバに送付する手順と、
前記第２クライアントから受けた要求メッセージに対する応答メッセージを前記サーバから受けると、前記使用情報を未使用中に設定する手順と、
を実行させるための付記１記載のテナント管理プログラム。
（付記４）  前記中継装置に、
得たテナント識別子を前記サーバに送付する前記手順は、未作成である旨の使用情報がある場合、得たテナント識別子を要求メッセージに埋め込み、前記サーバに送付することを特徴とする付記１記載のテナント管理プログラム。
（付記５）  前記記憶部は、さらに、前記テナント識別子と、該テナント識別子のテナントが使用可能なコネクションの上限値との対応関係である第４対応関係を有している場合、
中継装置に、
要求メッセージを送信したクライアントが属するテナントのテナント識別子を検索キーとして、前記第４対応関係を検索し、コネクションの上限値を取得する手順と、
前記要求メッセージを送信したクライアントが属するテナントが使用しているコネクションの数が取得した上限値まで達している場合、エラー処理を行う手順と、
を実行させるための付記１記載のテナント管理プログラム。
（付記６）  前記記憶部は、前記中継装置内ではなく外部の関連管理サーバに備えられていることを特徴とする付記１記載のテナント管理プログラム。
（付記７）  中継装置であって、
前記中継装置のクライアント側のアドレスを特定する情報と、前記クライアントが属するネットワークであって組織や企業単位のネットワークであるテナントを識別するためのテナント識別子との対応関係である第１対応関係を記憶し、
前記中継装置とサーバとの間のコネクションに係る情報である第１コネクション情報と、前記テナント識別子と、前記コネクションの使用の有無を示す使用情報との対応関係である第２対応関係を記憶し、
クライアントと前記中継装置との間のコネクションに係る情報である第２コネクション情報と、前記第１コネクション情報との対応関係である第３対応関係を記憶する記憶部と、
クライアントから要求メッセージを受けると、前記要求メッセージを受けた中継装置のクライアント側のアドレスを検索キーにして、前記第１対応関係を読み出してテナント識別子を得るテナント識別部と、
前記テナント識別部によって得たテナント識別子が前記第２対応関係にない場合、前記第１コネクション情報を作成し、作成した第１コネクション情報と得られたテナント識別子と、使用情報を使用中とした情報との対応関係を前記第２対応関係に書き出し、
前記要求メッセージを送信したクライアントのアドレスから前記第２コネクション情報を作成し、作成した第１コネクション情報と作成した第２コネクション情報を前記第３対応関係に書き出すコネクション識別部と、
作成された第１コネクション情報から、前記中継装置と前記サーバとの間にコネクションを作成し、得られたテナント識別子を前記サーバに送付し、受けた要求メッセージを、作成したコネクションを経由して前記サーバに送信するコネクション作成部と、を備え、
前記コネクション識別部は、さらに、受けた要求メッセージに対する応答メッセージを前記サーバから受けると、前記使用情報を未使用中に設定することを特徴とする中継装置。
（付記８）  前記コネクション識別部は、さらに、前記クライアントと異なるクライアントから要求メッセージを受けると、前記テナント識別部によって得られたテナント識別子が前記第２対応関係に有り、かつ、前記使用情報が未使用中の場合、前記使用情報を使用中に設定して前記第２対応関係に書き出し、前記要求メッセージを送信したクライアントのアドレスから前記第２コネクション情報を作成し、作成した第１コネクション情報と作成した第２コネクション情報を前記第３対応関係に書き出し、
コネクション作成部は、前記受けた要求メッセージを、前記コネクションを経由して前記サーバに送付することを特徴とする付記７記載の中継装置。
（付記９）  前記コネクション識別部は、さらに、前記クライアントと異なるクライアントである第２クライアントから要求メッセージを受けると、前記テナント識別部によって得たテナント識別子に対応する前記使用情報が未使用中のエントリである第１エントリが前記第２対応関係になく、かつ、得られたテナント識別子と異なるテナント識別子であって前記使用情報が未使用中のエントリである第２エントリがある場合、前記第２エントリの使用情報を使用中に設定し、得られたテナント識別子を設定して前記第２対応関係に書き出し、前記第２クライアントのアドレスから前記第２コネクション情報を作成し、作成した第１コネクション情報と作成した第２コネクション情報を前記第３対応関係に書き出し、
前記コネクション作成部は、さらに、前記テナント識別部によって得られたテナント識別子を前記サーバに送信し、前記第２クライアントから受けた要求メッセージを、前記コネクションを経由して前記サーバに送付することを特徴とする付記７記載の中継装置。
（付記１０）  クライアントとサーバとの間のデータ通信を中継する中継装置であって、
クライアントからサーバへの要求メッセージを受信したときに、前記クライアントが属するネットワークであって組織や企業単位のネットワークであるテナントの識別情報を取得するテナント識別部と、
前記中継装置と前記サーバとのコネクションを一意に識別可能なコネクションＩＤであるサーバ間コネクションＩＤと、前記中継装置と前記クライアントとのコネクションを一意に識別可能なコネクションＩＤと、前記テナントの識別情報との対応関係を作成するコネクション識別部と、
前記サーバ間コネクションＩＤに基づき前記中継装置と前記サーバとの間でコネクションを作成した後に、前記テナントの識別情報と作成したコネクションとを前記サーバに対応付けさせるため、前記サーバへ前記テナントの識別情報を１回送信し、その後、前記要求メッセージを前記サーバへ送信するコネクション作成部と、
を有する中継装置。
【符号の説明】
【０１４８】
１  テナント識別部、２、５  コネクション識別部、３、６  コネクション作成部、４、７、１２  テナント／コネクション関連テーブル、８  共有アプリケーション、９  テナントＩＤ付与部、１０  テナントＩＤ読み出し部、１１  コネクション上限テーブル、１００、１０１、１０２、１０３  ＧＷ、２００、２０１、２０３  共有サーバ、３００  関連管理サーバ。
【図１】
2010219845.tif 000003
【図２】
2010219845.tif 000004
【図３】
2010219845.tif 000005
【図４】
2010219845.tif 000006
【図５】
2010219845.tif 000007
【図６】
2010219845.tif 000008
【図７】
2010219845.tif 000009
【図８】
2010219845.tif 000010
【図９】
2010219845.tif 000011
【図１０】
2010219845.tif 000012
【図１１】
2010219845.tif 000013
【図１２】
2010219845.tif 000014
【図１３】
2010219845.tif 000015
【図１４】
2010219845.tif 000016
【図１５】
2010219845.tif 000017
【図１６】
2010219845.tif 000018
【図１７】
2010219845.tif 000019
【図１８】
2010219845.tif 000020
【図１９】
2010219845.tif 000021
【図２０】
2010219845.tif 000022
【図２１】
2010219845.tif 000023
【図２２】
2010219845.tif 000024
【図２３】
2010219845.tif 000025
【図２４】
2010219845.tif 000026
【図２５】
2010219845.tif 000027
【図２６】
2010219845.tif 000028