説明

中継プログラム、中継装置および中継方法

【課題】変更後のサーバでサービスをシームレスに継続する。
【解決手段】中継プログラムは、コンピュータに、アクセス対象のデータの情報を含むリクエストデータを受信し、社内記憶装置6に格納されるデータごとにデータの公開に係る公開ポリシーを記憶する記憶部11に記憶された公開ポリシーを参照し、リクエストデータに含まれるデータの公開に制限があるか否かを判定し、公開に制限がない場合に、受信したリクエストデータを変更前ウェブサーバ2に送信し記憶部11に当該リクエストデータを記憶し、公開に制限がある場合に、記憶部11に記憶されたリクエストデータのうち、受信したリクエストデータに関連するリクエストデータを取得し、取得したリクエストデータに含まれる変更前ウェブサーバ2の識別情報を変更先ウェブサーバ3の識別情報に変更し、変更後のリクエストデータを変更先ウェブサーバ3へ送信する処理を実行させる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、中継プログラム、中継装置および中継方法に関する。
【背景技術】
【0002】
ウェブサーバは、ウェブブラウザでの操作のもと、当該ウェブブラウザとの間でHTTP(Hyper Text Transfer Protocol)でデータのやりとりをして、該当するサービスを提供する。この際、ウェブサーバとウェブブラウザとの間に、データを中継する中継装置が設置される場合もある。
【0003】
ウェブブラウザでの操作を再現する方法として、中継装置が通信メッセージの履歴を記録し、レスポンスデータにForm要素等の要素があり要素内に次回のリクエストデータで用いられるパラメータがあれば、該パラメータを利用して再現リクエストデータを設定する技術がある。
【0004】
また、通常のリクエストデータに対するレスポンスデータのタグ構造と、通常のリクエストデータのパラメータを改変して得られた不正なリクエストデータに対するレスポンスデータのタグ構造を比較し、タグ構造の比較結果を基に診断対象ウェブサーバで動作するウェブアプリケーションの脆弱性を検出する技術がある。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2006−190033号公報
【特許文献2】特開2006−338246号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
近年、クラウドコンピューティング(以下、「クラウド」と略記する。)の浸透に伴い、必要な機能をサービスとして提供されるSaaS(Software as a Service)と呼ばれる形態が普及しつつある。企業等では、クラウドのリソースを積極的に活用したい反面、クラウドで使用されることとなるデータが例えば機密情報であるような場合には、当該データを社外に出せない。そこで、データが秘匿を要しない場合には、クラウド環境のサービスを活用し、データが秘匿を要する場合には、自社管理化にある設備にソフトウェアを配備し運用する形態であるオンプレミス環境でサービスを活用するというハイブリッドな手法が求められている。
【0007】
ところで、データの秘匿の要否によってサービスを活用する環境を変更する場合、変更前の環境にあるサーバでサービスを利用しているユーザは、変更先の環境にあるサーバに対して変更前の環境にあるサーバで途中まで実行した操作と同じ操作を再度繰り返す必要がある。
【0008】
しかしながら、データが秘匿を要するか否かに応じてサービスを提供するサーバを変更した場合に、変更先のサーバで当該サービスをシームレスに継続することができないという問題があった。すなわち、上述の中継装置は、サーバに対する操作を記録しておき、このサーバに対して記録した操作を再実行するというものであり、データが秘匿を要する場合に変更先の環境にあるサーバに対し、利用者が同じ操作を繰り返さずにすむようにするものではない。
【0009】
また、レスポンスデータのタグ構造を比較する従来技術も同じサーバに対する変更前後各々のリクエストデータに対するレスポンスデータのタグ構造を比較するというものであり、上述の通信メッセージの履歴を記録しておく従来技術と組み合わせても、中継装置は、変更先のサーバへのリクエストデータを適切に設定することができないのは同様である。
【0010】
このように、中継装置は、変更前の環境にあるサーバで利用者が利用していたサービスを変更先の環境にあるサーバでシームレスに継続させることはできなかった。
【0011】
そこで、1つの側面では、データが秘匿を要するか否かに応じてサービスを提供するサーバを変更した場合に、変更先のサーバで当該サービスをシームレスに継続できるようにすることを目的とする。
【課題を解決するための手段】
【0012】
第1の案では、中継プログラムは、インターネットを介して自装置に接続される第1のウェブサーバおよび自装置を介して前記インターネットに接続される第2のウェブサーバとウェブクライアントとの間でデータを中継し、且つ、データ記憶装置に接続されるコンピュータに、前記ウェブクライアントからアクセス対象のデータの情報を含むリクエストデータを受信し、前記データ記憶装置に格納されるデータごとにデータの公開に係る公開ポリシーを記憶する記憶部に記憶された前記公開ポリシーを参照して、前記リクエストデータに含まれるアクセス対象のデータの公開に制限があるか否かを判定し、前記受信したリクエストデータに含まれるアクセス対象のデータの公開に制限がないと判定した場合に、前記受信したリクエストデータを前記第1のウェブサーバに送信して、記憶部に前記第1のウェブサーバに送信した前記リクエストデータを記憶し、前記受信したリクエストデータに含まれるアクセス対象のデータの公開に制限があると判定した場合に、前記記憶部に記憶された前記第1のウェブサーバに送信した前記リクエストデータのうち、前記受信したリクエストデータに関連するリクエストデータを取得し、前記取得したリクエストデータに含まれる前記第1のウェブサーバの識別情報を前記第2のウェブサーバの識別情報に変更し、前記変更後のリクエストデータを前記第2のウェブサーバへ送信する処理を実行させる。
【発明の効果】
【0013】
開示のプログラムは、データが秘匿を要するか否かに応じてサービスを提供するサーバを変更した場合に、変更先のサーバでサービスをシームレスに継続することができる。
【図面の簡単な説明】
【0014】
【図1】図1は、実施例1に係る情報処理システムの構成を示す機能ブロック図である。
【図2】図2は、実施例2に係る中継装置の構成を示す機能ブロック図である。
【図3】図3は、リクエストテーブルのデータ構造の一例を示す図である。
【図4】図4は、レスポンステーブルのデータ構造の一例を示す図である。
【図5】図5は、レスポンス相違テーブルのデータ構造の一例を示す図である。
【図6】図6は、再現リクエストテーブルのデータ構造の一例を示す図である。
【図7】図7は、ウェブサーバの変更前の中継処理の具体例を説明する図である。
【図8】図8は、レスポンス比較処理の具体例を説明する図である。
【図9】図9は、再現リクエスト生成処理の具体例を説明する図である。
【図10】図10は、実施例2に係る中継処理の手順を示すフローチャートである。
【図11】図11は、再現リクエスト生成処理の手順を示すフローチャートである。
【図12】図12は、レスポンス比較処理の手順を示すフローチャートである。
【図13】図13は、中継プログラムを実行するコンピュータを示す図である。
【図14】図14は、データ管理テーブルのデータ構造の一例を示す図である。
【発明を実施するための形態】
【0015】
以下に、本願の開示する中継プログラム、中継装置および中継方法の実施例を図面に基づいて詳細に説明する。なお、実施例によりこの発明が限定されるものではない。
【実施例1】
【0016】
[実施例1に係る情報処理システムの構成]
図1は、実施例1に係る情報処理システム9の構成を示す機能ブロック図である。図1に示すように、情報処理システム9は、情報処理装置1と、変更前ウェブサーバ2と、変更先ウェブサーバ3と、社内記憶装置6とを有する。情報処理装置1は、インターネット5を介して変更前ウェブサーバ2と接続する。また、情報処理装置1は、インターネットを介さずに変更先ウェブサーバ3および社内記憶装置6と接続する。変更前ウェブサーバ2は、社外秘データが指定されたリクエストデータを受け付けるまでサービスの処理を実行することとなるウェブサーバを示す。例えば、変更前ウェブサーバ2は、SaaS(Software as a Service)を取り入れたウェブサーバであったり、クラウド環境下のウェブサーバであったりする。変更先ウェブサーバ3は、社外秘データが指定されたリクエストデータを受け付けた後に変更前ウェブサーバ2のサービスの処理を継続して実行することとなる変更先のウェブサーバを示す。例えば、変更先ウェブサーバ3は、変更前ウェブサーバ2のウェブアプリケーションをダウンロードしてサービスを実施するオンプレミス環境下のウェブサーバである。情報処理装置1が変更先ウェブサーバ3および社内記憶装置6とインターネット5を介さないで接続する形態は、例えば社内LAN(Local Area Network)であったり、社内におけるイントラネットであったりする。社内記憶装置6は、公開に制限があるデータや公開に制限がないデータを記憶する。例えば変更先ウェブサーバ3には公開できるが変更前ウェブサーバ2には公開できない社外秘のデータおよび公開に制限がなく変更前ウェブサーバ2に公開できるデータを記憶する。
【0017】
情報処理装置1は、記憶部11、レスポンス比較部12、リクエスト生成部13、送信部14およびウェブブラウザ19を有する。ウェブブラウザ19は、ユーザ操作に基づき変更前ウェブサーバ2または変更先ウェブサーバ3へのリクエストデータを生成し、当該リクエストデータに対応する変更前ウェブサーバ2または変更先ウェブサーバ3からのレスポンスデータを図示しない表示部に表示する。記憶部11は、変更前ウェブサーバ2へのリクエストデータおよび当該リクエストデータに対応する変更前ウェブサーバ2からのレスポンスデータを処理順序の識別情報と関連付けて時系列に記憶する。リクエストデータには、変更前ウェブサーバ2の識別情報であるホスト名とリクエストパラメータが含まれる。なお、処理順序の識別情報と関連付けて記憶部11に時系列に記憶されるこの変更前ウェブサーバ2へのリクエストデータおよび当該リクエストデータに対応する変更前ウェブサーバ2からのレスポンスデータについては、所定の時間、例えば最新のレスポンスデータの受信から、この変更前ウェブサーバ2のサービスのセッションのタイムアウトまでの時間が経過するまでにこの変更前ウェブサーバ2に対する新たなリクエストデータが記憶されない場合に、記憶部11から削除するようにしても良い。このように削除を行うことで、後述するリクエスト生成部13による変更の対象とするリクエストデータを適正な範囲に留めることができる。
【0018】
また、記憶部11は、社内記憶装置6に記憶されたデータの公開に係る公開ポリシーを記憶する。例えば、記憶部11は、公開に制限がある旨のポリシーや公開に制限がない旨のポリシーを、データごとに記憶する。
【0019】
レスポンス比較部12は、公開に制限があるデータが指定されたリクエストデータを受け付けた後、変更先ウェブサーバ3からレスポンスデータの受信に基づき、このレスポンスデータと、記憶部11に記憶された変更前ウェブサーバ2からのレスポンスデータのうち、処理順序の識別情報が、社外秘データが指定されたリクエストデータを受け付けた後この変更先ウェブサーバ3からレスポンスデータを受信した回数に対応するレスポンスデータとを比較し、値が異なる部分がある場合に、変更先ウェブサーバ3からのレスポンスデータおよび変更前ウェブサーバ2からのレスポンスデータから、この値が異なる部分の値をそれぞれ抽出する。
【0020】
リクエスト生成部13は、ウェブブラウザ19により生成されたリクエストデータを受け付け、このリクエストデータに含まれるアクセス対象のデータについて記憶部11に記憶された公開ポリシーを参照する。そして、リクエスト生成部13は、当該アクセス対象のデータの公開に制限がない場合にはリクエストデータに含まれるホスト名を変更せずに送信部14に渡す。一方、当該アクセス対象のデータの公開に制限がある場合には、このリクエストデータに含まれるホスト名を変更先ウェブサーバ3のホスト名に変更し、図示しない一時記憶部に記憶する。また、リクエスト生成部13は、前記記憶部11に記憶されたリクエストデータのうち、受け付けたリクエストデータに関連する最初のリクエストデータを特定する。例えば、受け付けたリクエストデータにセッションを特定するセッション識別情報が含まれる場合には、このセッション識別情報の発行の契機となったリクエストデータを最初のリクエストデータとして特定する。例えば、このセッション識別情報を最初に利用したリクエストデータの1つ前のリクエストデータをセッション識別情報の発行の契機となるリクエストデータと判定し、このリクエストデータを受け付けたリクエストデータに関連する最初のリクエストデータとして特定する。なお、受け付けたリクエストデータにセッションとは別の、一連の処理を特定可能な処理識別情報が含まれる場合には、この処理識別情報を含む最初のリクエストデータを特定するものとしても良い。
【0021】
リクエスト生成部13は、この特定したリクエストデータに含まれるホスト名を変更先ウェブサーバのホスト名に変更した新たなリクエストデータを作成して送信部14に渡す。なお、リクエスト生成部13は、記憶部11に記憶された処理順序の識別情報で識別される処理順序がこの最初のリクエストデータ以降のリクエストデータについては、送信部14に渡す前に、1つ前に送信部14から送信されたリクエストデータに対する変更先ウェブサーバ3からのレスポンスデータの受信に基づきレスポンス比較部12によって変更前ウェブサーバ2からのレスポンスデータから抽出された値が、当該リクエストデータのパラメータに含まれるか否かを判定する。そして、リクエスト生成部13は、該判定の結果、含まれると判定した場合に、含まれると判定したリクエストデータのパラメータに、レスポンス比較部12によって変更先ウェブサーバ3のレスポンスデータから抽出された値を設定してから、このリクエストデータを送信部14に渡す。一方、リクエスト生成部13は、判定の結果、含まれないと判定した場合には、リクエストデータのパラメータを変更せずに、このリクエストデータを送信部14に渡す。そして、記憶部11に記憶された最新のリクエストデータまで送信部14に渡し終えたら、一時記憶部に記憶したリクエストデータについて、1つ前に送信部14から送信されたリクエストデータに対する変更先ウェブサーバ3からのレスポンスデータの受信に基づきレスポンス比較部12によって変更前ウェブサーバ2からのレスポンスデータから抽出された値が、当該リクエストデータのパラメータに含まれるか否かを判定する。そして、リクエスト生成部13は、該判定の結果、含まれると判定した場合に、含まれると判定したリクエストデータのパラメータに、レスポンス比較部12によって変更先ウェブサーバ3からのレスポンスデータから抽出された値を設定して、このリクエストデータを送信部に渡す。
【0022】
送信部14は、リクエスト生成部13から渡されたリクエストデータをこのリクエストデータに含まれるホスト名のウェブサーバに送信する。
【0023】
このようにして、情報処理装置1は、公開に制限があるデータをアクセス対象とするリクエストデータを受け付けた後、変更前後の値が異なるレスポンスデータの直後のリクエストデータのパラメータに変更前の値が含まれる場合には、当該リクエストデータのパラメータに変更後の値を設定することとした。このため、情報処理装置1は、ウェブサーバを変更した場合であっても、動的に変化するパラメータを自動的に設定することができる。この結果、情報処理装置1は、変更先のウェブサーバでサービスを正常に動作させることができ、当該サービスをシームレスに継続させることができる。
【0024】
ところで、実施例1に係る情報処理装置1では、ウェブブラウザ19を内部に含む場合について説明した。しかしながら、情報処理装置1は、これに限定されるものではなく、ウェブブラウザ19を内部に含まない場合であっても良い。そこで、実施例2では、情報処理装置1が、ウェブブラウザ19を内部に含まない場合について説明する。
【実施例2】
【0025】
[実施例2に係る中継装置の構成]
図2は、実施例2に係る中継装置の構成を示す機能ブロック図である。この中継装置は、実施例1の情報処理装置1の一例である。図2に示すように、中継装置1Aは、ウェブブラウザ1B、変更前ウェブサーバ2Aおよび変更先ウェブサーバ3Aと接続する。ウェブブラウザ1Bは、例えばウェブサービスを利用するパーソナルコンピュータを示す。変更前ウェブサーバ2Aは、ウェブサーバの変更までサービスの処理を実行することとなるウェブサーバを示す。例えば、変更前ウェブサーバ2Aは、SaaS(Software as a Service)を取り入れたウェブサーバであったり、クラウド環境下のウェブサーバであったりする。変更先ウェブサーバ3Aは、ウェブサーバの変更後に変更前ウェブサーバ2Aのサービスの処理を継続して実行することとなる変更先のウェブサーバを示す。例えば、変更先ウェブサーバ3Aは、変更前ウェブサーバ2Aのウェブアプリケーションをダウンロードして実施できるオンプレミス環境下のウェブサーバである。したがって、変更先ウェブサーバ3Aおよびウェブブラウザ1Bの接続形態は、例えば社内LAN(Local Area Network)であったり、社内におけるイントラネットであったりする。なお、ウェブブラウザ1Bは、実施例1のウェブブラウザ19の一例である。変更前ウェブサーバ2Aは、実施例1の変更前ウェブサーバ2の一例である。変更先ウェブサーバ3Aは、実施例1の変更先ウェブサーバ3の一例である。
【0026】
中継装置1Aは、制御部20および記憶部30を有する。制御部20は、リクエスト記録部21、リクエスト送信部22、レスポンス送信部23、レスポンス記録部24、アプリ移動部25、再現レスポンス記録部26、レスポンス比較部27、再現リクエスト生成部28および再現リクエスト送信部29を有する。なお、レスポンス比較部27は、実施例1のレスポンス比較部12の一例であり、再現リクエスト生成部28は、実施例1のリクエスト生成部13の一例であり、再現リクエスト送信部29は、実施例1の送信部14の一例である。また、制御部20は、例えば、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)等の集積回路またはCPU(Central Processing Unit)やMPU(Micro Processing Unit)等の電子回路である。
【0027】
記憶部30は、リクエストテーブル31、レスポンステーブル32、再現リクエストテーブル33、レスポンス相違テーブル34、再現レスポンステーブル35およびデータ管理テーブル36を有する。リクエストテーブル31は、変更前ウェブサーバ2Aへのリクエストを処理順序の識別情報と関連付けて記憶する。レスポンステーブル32は、変更前ウェブサーバ2Aからのレスポンスを処理順序の識別情報と関連付けて記憶する。再現リクエストテーブル33は、変更先ウェブサーバ3Aへのリクエストを処理順序の識別情報と関連付けて記憶する。レスポンス相違テーブル34は、変更前後のレスポンスの相違を記憶する。再現レスポンステーブル35は、変更先ウェブサーバ3Aからのレスポンスを処理順序の識別情報と関連付けて記憶する。なお、リクエストテーブル31、レスポンステーブル32およびデータ管理テーブル36は、実施例1の記憶部11の一例である。記憶部30は、例えば、RAM(Random Access Memory)、フラッシュメモリ(flash memory)等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置である。
【0028】
リクエスト記録部21は、所定のサービスの一連の処理毎にウェブブラウザ1Bから送信されたリクエストデータを順次リクエストテーブル31に記録する。ここで、所定のサービスとは、例えば、在庫検索に関するサービスであったり、後述する予定時刻からページ表示時刻との差を表示するサービスであったりするが、繰り返し実行することが可能なサービスであれば良い。例えば、図示しないが、受け付けたリクエストデータに含まれるサービスの一連の処理の識別情報、例えば、セッションを特定するセッション識別情報の発行の契機となったリクエストデータを最初のリクエストデータとして以降同じ識別情報を含むリクエストデータを一連の処理として順次リクエストテーブル31に記憶するようにしても良い。また、後述する、変更前ウェブサーバ2Aからウェブアプリケーション毎に通知される、特定のURLに合致するリクエストを最初のリクエストデータとして、以降のリクエストデータを一連の処理として順次リクエストテーブルに記憶するようにしても良い。リクエスト送信部22は、リクエスト記録部21からリクエストデータを取得し、取得したリクエストデータを変更前ウェブサーバ2Aに送信する。
【0029】
レスポンス記録部24は、変更前ウェブサーバ2Aから送信された、リクエストデータに対応するレスポンスデータをレスポンステーブル32に記録する。レスポンス送信部23は、変更前ウェブサーバ2Aから送信された、リクエストデータに対応するレスポンスデータをウェブブラウザ1Bに送信する。
【0030】
ここで、リクエストテーブル31、レスポンステーブル32およびデータ管理テーブル36のデータ構造について、それぞれ図3、図4および図14を参照しながら説明する。図3は、リクエストテーブル31のデータ構造の一例を示す図である。図3に示すように、リクエストテーブル31は、リクエスト番号31a毎に、リクエストデータ31bを対応付けて記憶する。リクエスト番号31aは、サービスに対応する処理順序の識別情報を示す。例えば、リクエスト番号31aには、最も早い処理順序の場合には「1」が設定され、処理順序が遅くなるにつれて昇順の値が設定される。すなわち、リクエスト番号31aには、同じサービスが繰り返し実行される場合、インクリメントされた値が設定される。リクエストデータ31bは、リクエストデータの内容を示す。なお、ユーザ毎に、リクエスト番号31aが記録されるものとしても良い。すなわち、リクエストテーブル31は、ユーザ識別子およびリクエスト番号31a毎に、リクエストデータ31bを対応付けて記憶する。
【0031】
図4は、レスポンステーブル32のデータ構造の一例を示す図である。図4に示すように、レスポンステーブル32は、レスポンス番号32a毎に、レスポンスデータ32bを対応付けて記憶する。レスポンス番号32aは、サービスに対応する処理順序の識別情報を示す。すなわち、レスポンス番号32aは、同じサービスが繰り返し実行される場合、インクリメントされた値が設定される。また、レスポンス番号32aは、レスポンスをすることとなる元のリクエストのリクエスト番号31aと同じ番号となる。レスポンスデータ32bは、レスポンスデータの内容を示す。なお、リクエストテーブル31と同様に、ユーザ毎に、レスポンス番号32aが制御されるものとしても良い。すなわち、レスポンステーブル32は、ユーザ識別子およびレスポンス番号32a毎に、レスポンスデータ32bを対応付けて記憶する。
【0032】
図14は、データ管理テーブル36のデータ構造の一例を示す図である。図14に示すように、データ管理テーブル36は、データID36aおよび社外秘データURL36bを対応付けて記憶する。データID36aは、データの識別番号を示す。社外秘データURL36bは、ウェブアプリケーションからのアクセスを許可するデータのうち社外秘データのURLを示す。すなわち、社外秘データURL36bは、社外での公開に制限があるデータのURLを示している。なお、データ管理テーブル36は、中継処理が行われる前にあらかじめ作成されるものとする。
【0033】
図2に戻って、アプリ移動部25は、変更前ウェブサーバ2Aによるサービスの実行中に、社外秘データが指定されたリクエストデータを受け付けると、リクエストデータの送信先とするウェブサーバを変更前ウェブサーバ2Aから変更先ウェブサーバ3Aに変更する。例えば、アプリ移動部25は、ウェブブラウザ1Bからデータ管理テーブル36に記憶される社外秘データが指定されたリクエストデータを取得する。そして、アプリ移動部25は、サービスを実行中の変更前ウェブサーバ2Aに、当該サービスを実行するウェブアプリケーションの転送要求を送信する。また、アプリ移動部25は、変更前ウェブサーバ2Aから転送要求に対応したウェブアプリケーションを取得し、取得したウェブアプリケーションを変更先ウェブサーバ3Aで利用可能な状態にする。すなわち、アプリ移動部25は、クラウド上で実行されていたサービスをオンプレミス環境で実行させるべく、当該サービスが社外秘データを取り扱うタイミングで、ウェブサーバを変更前ウェブサーバ2Aから変更先ウェブサーバ3Aに変更するのである。なお、ウェブアプリケーションを利用可能な状態にすることを、以降「デプロイする」という。なお、変更前ウェブサーバ2Aからウェブアプリケーションを取得する際に、再現開始点として特定のURLを通知するよう構成しても良い。
【0034】
再現レスポンス記録部26は、変更前ウェブサーバ2Aから変更先ウェブサーバ3Aにサービスが移動した後、変更先ウェブサーバ3Aから送信されたレスポンスデータを取得する。そして、再現レスポンス記録部26は、取得したレスポンスデータを再現レスポンステーブル35に記録する。変更先ウェブサーバ3Aから送信されたレスポンスデータを、以降、「再現レスポンスデータ」というものとする。同様に、変更先ウェブサーバ3Aに送信するリクエストデータを、以降、「再現リクエストデータ」というものとする。なお、再現レスポンステーブル35のデータ構造は、レスポンステーブル32と同様であるので、説明を省略する。
【0035】
レスポンス比較部27は、再現レスポンスデータと、レスポンステーブル32に記憶された、同一のレスポンス番号を持つレスポンスデータとを比較し、値が相違する部分がある場合に、再現レスポンスデータ、および、レスポンステーブル32に記憶された、同一のレスポンス番号を持つレスポンスデータから、値が相違する部分の値をそれぞれ抽出する。具体的には、レスポンス比較部27は、再現レスポンスデータを取得する。また、レスポンス比較部27は、取得した再現レスポンスデータと同一のレスポンス番号を持つレスポンスデータをレスポンステーブル32から取得する。また、変更前ウェブサーバ2Aからウェブアプリケーションを取得する際に再現開始点として特定のURLを通知された場合には、この特定のURLに合致する最新のリクエストデータに対応するレスポンスデータのレスポンス番号からのレスポンス番号の相対値が、取得した再現レスポンスデータと同一の値となるレスポンスデータをレスポンステーブル32から取得する。そして、レスポンス比較部27は、取得した再現レスポンスデータおよびレスポンスデータのDOM(Document Object Model)をそれぞれ作成する。そして、レスポンス比較部27は、作成した双方のDOMを比較し、相違する値および当該値の位置を示すXPathを抽出する。そして、レスポンス比較部27は、抽出した相違する値およびXPathをレスポンス相違テーブル34に記録する。
【0036】
ここで、レスポンス相違テーブル34のデータ構造について、図5を参照しながら説明する。図5は、レスポンス相違テーブルのデータ構造の一例を示す図である。図5に示すように、レスポンス相違テーブル34は、レスポンス番号34a毎に、XPath34b、変更前値34cおよび変更後値34dを対応付けて記憶する。XPath34bは、相違する値のあったXPathを示す。変更前値34cは、再現レスポンスデータと同一のレスポンス番号を持つレスポンスデータ内のXPathが示す値である。変更後値34dは、再現レスポンスデータ内のXPathが示す値である。例えば、レスポンス相違テーブル34は、XPath34bとして「/HTML/BODY/DIV「1」」を記憶し、変更前値34cとして「201008191320」を記憶し、変更後値34dとして「201008191326」を記憶する。
【0037】
再現リクエスト生成部28は、変更前ウェブサーバ2Aから変更先ウェブサーバ3Aにサービスが移動した後、当該サービスを継続させるべく、当該サービスに関する再現リクエストデータを生成する。具体的には、再現リクエスト生成部28は、サービスが移動した後、当該サービスについて、リクエストテーブル31からサービス移動の契機となったリクエストデータと関連するリクエストデータであって処理順序が最も早いリクエストデータを取得する。また、変更前ウェブサーバ2Aからウェブアプリケーションを取得する際に再現開始点として特定のURLを通知された場合には、この特定のURLと合致するリクエストデータを取得する。そして、再現リクエスト生成部28は、取得したリクエストデータに含まれるホスト名を変更先ウェブサーバ3Aに置換して再現リクエストデータを生成し、生成した再現リクエストデータを再現リクエストテーブル33に記録する。
【0038】
また、再現リクエスト生成部28は、再現レスポンスデータのレスポンス番号に対応する相違する値をレスポンス相違テーブル34から取得する。そして、再現リクエスト生成部28は、当該レスポンス番号の後続する番号のリクエストデータをリクエストテーブル31から取得する。そして、再現リクエスト生成部28は、レスポンス相違テーブル34から取得した相違する値のうち変更前値34cがリクエストテーブル31から取得したリクエストデータのパラメータに含まれるか否かを判定する。すなわち、再現リクエスト生成部28は、相違する値のうち変更前のレスポンスデータに係る値がこのレスポンスに後続するリクエストデータに含まれていたか否かを判定する。そして、再現リクエスト生成部28は、判定の結果、含まれると判定した場合には、含まれると判定したリクエストデータのパラメータを、相違する値のうち変更後値34dに置換して再現リクエストデータを生成する。一方、再現リクエスト生成部28は、判定の結果、含まれないと判定した場合には、含まれないと判定したリクエストデータに含まれるホスト名を、変更先ウェブサーバ3Aのホスト名に置換して再現リクエストデータを生成する。そして、再現リクエスト生成部28は、生成した再現リクエストデータを再現リクエストテーブル33に記録する。
【0039】
ここで、再現リクエストテーブル33のデータ構造について、図6を参照しながら説明する。図6は、再現リクエストテーブルのデータ構造の一例を示す図である。図6に示すように、再現リクエストテーブル33は、リクエスト番号33a毎に、リクエストデータ33bを対応付けて記憶する。例えば、リクエスト番号33aには、サービスが移動した後、最も早い処理順序の場合には「1」が設定され、処理順序が遅くなるにつれて昇順の値が設定される。すなわち、リクエスト番号33aには、同じサービスが繰り返し実行される場合、インクリメントされた値が設定される。リクエストデータ33bは、再現リクエスト生成部28によって生成された再現リクエストを示す。なお、ユーザ毎に、リクエスト番号33aが記録されるものとしても良い。すなわち、再現リクエストテーブル33は、ユーザ識別子およびリクエスト番号33a毎に、リクエストデータ33bを対応付けて記憶するようにしても良い。
【0040】
図2に戻って、再現リクエスト送信部29は、再現リクエスト生成部28から再現リクエストデータを取得し、取得した再現リクエストデータを変更先ウェブサーバ3Aに送信する。
【0041】
ここで、例えば予定時刻とページ表示時刻との差を表示するサービスの場合における、中継処理の具体例について、図7〜図9を参照しながら説明する。図7は、ウェブサーバの変更前の中継処理の具体例を説明する図であり、図8および図9は、社外秘データが指定されたリクエストデータを受け付けた後の中継処理の具体例を説明する図である。図8では、レスポンス比較処理の具体例を示し、図9では、再現リクエスト生成処理の具体例を示す。なお、例示するサービスにおける予定時刻は、「2010年8月19日14時00分」であるものとする。
【0042】
図7(A)は、中継処理によってウェブブラウザ1Bに表される画面の遷移である。図7(B)は、社外秘データが指定されたリクエストデータを受け付ける前の、変更前ウェブサーバ2Aへのリクエストデータおよび当該リクエストに対応する変更前ウェブサーバ2Aからのレスポンスデータである。図7(A)に示すように、ウェブブラウザ1Bは、例えばウェブページの部分書き換え可能なAjax(Asynchronous Java(登録商標)Script +XML)を用いて通信するものとする。ウェブブラウザ1Bは、サービスにおけるウェブアプリケーションの起動要求f1を送信した後の画面D1を表示する。ここでは、図7(B)に示すように、起動要求f1について、ウェブブラウザ1Bから中継装置1Aを介して変更前ウェブサーバ2Aに送信されたリクエストデータR1が、リクエスト番号「1」に示されるデータとなる。また、リクエスト番号「1」のリクエストデータR1に対応するレスポンスデータP1が、レスポンス番号「1」に示されるデータとなる。そして、レスポンス番号「1」に示されるレスポンスデータP1のうちページ表示時刻である「201008191320」p1が画面D1に表示され(d1)、実行要求を促す「click」(p2)が画面D1に表示される(d2)。なお、リクエスト番号「1」のリクエストデータR1は、中継装置1Aのリクエスト記録部21によってリクエストテーブル31に記録される。また、レスポンス番号「1」のレスポンスデータP1は、中継装置1Aのレスポンス記録部24によってレスポンステーブル32に記録される。
【0043】
ユーザが画面D1から「click」を押下すると、ウェブブラウザ1Bは、実行要求(f2)を送信した後の画面D2を表示する。ここでは、図7(C)に示すように、実行要求f2について、ウェブブラウザ1Bから中継装置1Aを介して変更ウェブサーバ(外部)2Aに送信されたリクエストデータR2が、リクエスト番号「2」に示されるデータとなる。また、リクエスト番号「2」のリクエストデータR2に対応するレスポンスデータP2が、レスポンス番号「2」に示されるデータとなる。リクエスト番号「2」に示されるリクエストデータR2には、画面D1に表示されたページ表示時刻「201008191320」(d1)がレスポンス番号P1から引き継がれる(r1)。そして、レスポンス番号「2」に示されるレスポンスデータP2には、サービスの結果となる、予定時刻「2010年8月19日14時00分」とページ表示時刻との差を示す「予定時刻まで後40分です」p3が画面D2に表示される(d3)。なお、リクエスト番号「2」のリクエストデータR2は、中継装置1Aのリクエスト記録部21によってリクエストテーブル31に記録される。また、レスポンス番号「2」のレスポンスデータP2は、中継装置1Aのレスポンス記録部24によってレスポンステーブル32に記録される。
【0044】
同様に、ユーザが画面D2から「click」を押下すると、ウェブブラウザ1Bは、実行要求に関して、中継装置1Aを介して変更前ウェブサーバ2Aと通信し、通信結果(レスポンスデータ)に基づいてサービスの結果を画面に表示する。
【0045】
その後、ユーザが画面D2から社外秘データであるデータAを指定するものとする。すると、ウェブブラウザ1Bは、社外秘データが指定されたリクエストを中継装置1Aに送信する。そして、中継装置1Aのアプリ移動部25は、社外秘データが指定されたリクエストを取得し、ウェブサーバを変更前ウェブサーバ2Aから変更先ウェブサーバ3Aに変更する。
【0046】
ウェブサーバが変更された後、ユーザが画面D2から「click」を押下すると、ウェブブラウザ1Bは、実行要求(f3)に関して、中継装置1Aを介して変更先ウェブサーバ3Aと通信することとなる。そして、ウェブブラウザ1Bは、通信結果(レスポンスデータ)に基づいてサービスの結果を画面D3に表示する。ここでは、ウェブブラウザ1Bは、レスポンスデータに基づいて、予定時刻とページ表示時刻「201008191326」との差である「予定時刻まで後34分です」を表示する。ウェブサーバが変更された後の中継装置1Aと変更先ウェブサーバ3Aとの間の通信処理の具体例について、以下に説明する。
【0047】
まず、再現リクエスト生成部28は、リクエストテーブル31からリクエスト番号「1」のリクエストデータを取得し、取得したリクエストデータに含まれるホスト名を変更先ウェブサーバ3Aのホスト名に置換し、再現リクエストデータを生成する。そして、再現リクエスト生成部28は、再現リクエスト送信部29を介して変更先ウェブサーバ3Aに再現リクエストデータを送信する。そして、レスポンス比較部27は、変更先ウェブサーバ3Aから送信された再現レスポンスデータを、再現レスポンス記録部26を介して取得し、レスポンス比較処理を行う。ここでは、再現レスポンスデータのレスポンス番号は、リクエスト番号「1」のリクエストデータに対応するレスポンスであるので「1」となる。レスポンス比較処理では、ウェブサーバの変更前後のレスポンス番号「1」のレスポンスデータを比較することとなる。
【0048】
レスポンス比較処理について、図8を参照して説明する。図8に示すように、図8(A)は、変更前のレスポンス番号「1」のレスポンスデータのDOM(M1)を示し、図8(B)は、変更後のレスポンス番号「1」のレスポンスデータ(再現レスポンスデータ)のDOM(M2)を示す。
【0049】
レスポンス比較部27は、変更前後のレスポンスデータのDOM(M1、M2)を比較し、相違する値を抽出する。ここでは、「/HTML/body/DIV[1]」のXPath(x1)の値が相違する。すなわち、変更前のレスポンスデータでは、「201008191320」(p1)となり、変更後のレスポンスデータでは、「201008191326」(p4)となっている。そして、レスポンス比較部27は、レスポンス番号「1」、XPath「/HTML/body/DIV[1]」、変更前値「201008191320」および変更後値「201008191326」を対応付けてレスポンス相違テーブル34に記録する。そして、中継装置1Aの再現リクエスト生成部28では、レスポンス番号「1」の再現レスポンスデータに後続するリクエスト番号「2」の再現リクエストデータを生成することとなる。
【0050】
再現リクエスト生成処理について、図9を参照して説明する。図9に示すように、図9(A)は、リクエスト番号が「2」の(変更前の)リクエストデータを示し、図9(B)は、レスポンス番号が「1」の相違データを示し、図9(C)は、リクエスト番号が「2」の(変更後の)再現リクエストデータを示す。なお、(変更前の)リクエストデータはリクエストテーブル31に記憶され、相違データはレスポンス相違テーブル34に記憶されている。
【0051】
再現リクエスト生成部28は、リクエストテーブル31からリクエスト番号が「2」のリクエストデータを取得する。図9(A)に示すように、リクエスト番号が「2」のリクエストデータには、パラメータとして「201008191320」r1が設定されている。
【0052】
再現リクエスト生成部28は、レスポンス相違テーブル34からレスポンス番号が「1」のレスポンスデータを取得する。図9(B)に示すように、レスポンス番号が「1」のレスポンスデータには、変更前値として「201008191320」p1が設定され、変更後値として「201008191326」p4が設定されている。
【0053】
再現リクエスト生成部28は、レスポンス相違テーブル34から取得した相違する値のうち変更前値が後続する(変更前の)リクエストデータのパラメータに含まれているか否かを判定する。すなわち、再現リクエスト生成部28は、相違する値のうち変更前のレスポンスデータに係る値がこのレスポンスに後続するリクエストデータに含まれていたか否かを判定する。ここでは、再現リクエスト生成部28は、レスポンス番号「1」の相違する値のうち変更前の値である「201008191320」p1が後続するリクエスト番号「2」のリクエストデータのパラメータr1に含まれていると判定する。そして、再現リクエスト生成部28は、リクエスト番号が「2」のリクエストデータのパラメータを、相違する値のうち変更後のレスポンスデータに係る値p4に置換する。図9(C)に示すように、再現リクエスト生成部28は、リクエスト番号が「2」のリクエストデータのパラメータを、レスポンス番号が「1」の変更後の値p4に置換したリクエストデータを生成する。この結果、生成されたリクエストデータのパラメータは、「201008191326」r2となる。
【0054】
そして、再現リクエスト生成部28は、生成されたリクエストデータに含まれるホスト名を変更先ウェブサーバ3Aのホスト名に置換し、再現リクエストデータを生成して、再現リクエスト送信部29を介して変更先ウェブサーバ3Aに送信する。そして、中継装置1Aは、再現リクエストデータに対する再現レスポンスデータを変更先ウェブサーバ3Aから受信し、受信した再現レスポンスデータがサービスに関して最終である場合、当該再現レスポンスデータをウェブブラウザ1Bに送信する。ウェブブラウザ1Bでは、レスポンスデータに基づいてサービスの結果を画面D3(図7)に表示することになる。
【0055】
[実施例2に係る中継処理の手順]
次に、実施例2に係る中継処理の手順を、図10を参照して説明する。図10は、実施例2に係る中継処理の手順を示すフローチャートである。
【0056】
まず、リクエスト記録部21は、ウェブブラウザ1Bからサービスに関わるウェブアプリケーションの起動要求があったか否かを判定する(ステップS11)。そして、ウェブアプリケーションの起動要求がなかったと判定された場合には(ステップS11;No)、リクエスト記録部21は、当該起動要求を待つべく、ステップS11に移行する。一方、ウェブアプリケーションの起動要求があったと判定された場合には(ステップS11;Yes)、リクエスト記録部21は、ウェブブラウザ1Bからの要求に関するリクエストデータをリクエストテーブル31に記録する(ステップS12)。そして、リクエスト送信部22は、ウェブブラウザ1Bからの要求に関するリクエストデータを変更前ウェブサーバ2Aに送信する(ステップS13)。
【0057】
引き続き、レスポンス記録部24は、変更前ウェブサーバ2Aから送信された、リクエストデータに対応するレスポンスデータをレスポンステーブル32に記録する(ステップS14)。そして、レスポンス送信部23は、変更前ウェブサーバ2Aから送信されたリクエストデータをウェブブラウザ1Bに送信する(ステップS15)。
【0058】
引き続き、リクエスト記録部21は、ウェブブラウザ1Bから社外秘データが指定されたか否かを判定する(ステップS16)。社外秘データが指定されていないと判定された場合には(ステップS16;No)、リクエスト記録部21は、ステップS12に移行する。
【0059】
一方、社外秘データが指定されたと判定された場合には(ステップS16;Yes)、アプリ移動部25は、サービスを実行中の変更前ウェブサーバ2Aから変更先ウェブサーバ3Aに、サービスを実行するウェブサーバを変更する(ステップS17)。例えば、アプリ移動部25は、サービスを実行中の変更前ウェブサーバ2Aに、当該サービスを実行するウェブアプリケーションの転送要求を送信する。そして、アプリ移動部25は、変更前ウェブサーバ2Aから転送要求に対応したウェブアプリケーションを取得し、取得したウェブアプリケーションを変更先ウェブサーバ3Aにデプロイする。
【0060】
引き続き、再現リクエスト生成部28は、サービスを継続させるべく、当該サービスに関する再現リクエスト生成処理を行う(ステップS18)。そして、再現リクエスト送信部29は、再現リクエスト生成部28によって生成された再現リクエストデータを変更先ウェブサーバ3Aに送信する(ステップS19)。そして、再現レスポンス記録部26は、変更先ウェブサーバ3Aから送信された再現レスポンスデータを受信する(ステップS20)。
【0061】
そして、再現レスポンス記録部26は、受信した再現レスポンスデータがサービスに関して最終であるか否かを判定する(ステップS21)。例えば、予めサービスに関する最終のレスポンス番号を記憶部30に記録しておき、再現レスポンス記録部26は、受信した再現レスポンスデータのレスポンス番号が予め記憶部30に記録された最終のレスポンス番号と一致するか否かを判定するようにしても良い。
【0062】
再現レスポンスデータがサービスに関して最終でないと判定された場合には(ステップS21;No)、レスポンス比較部27は、当該再現レスポンスデータと、変更前のレスポンスデータとを比較するレスポンス比較処理を行う(ステップS22)。そして、レスポンス比較部27は、レスポンス比較処理の完了通知を再現リクエスト生成部28に出力し、ステップS18に移行する。
【0063】
一方、再現レスポンスデータがサービスに関して最終であると判定された場合には(ステップS21;Yes)、再現レスポンス記録部26は、受信した再現レスポンスデータをウェブブラウザ1Bに送信して、中継処理を終了する。
【0064】
[再現リクエスト生成処理の手順]
次に、再現リクエスト生成処理の手順を、図11を参照して説明する。図11は、再現リクエスト生成処理の手順を示すフローチャートである。
【0065】
再現リクエスト生成部28は、アプリ移動部25によるウェブサーバの変更通知またはレスポンス比較部27によるレスポンス比較処理の完了通知を取得すると、リクエストテーブル31から該当リクエストデータを取得する(ステップS31)。具体的には、再現リクエスト生成部28は、アプリ起動部25によるウェブサーバの変更通知を取得すると、リクエストテーブル31から処理順序が最も早いリクエストデータを取得する。また、再現リクエスト生成部28は、レスポンス比較部27によるレスポンス比較処理の完了通知を取得すると、レスポンス比較処理の対象となったレスポンス番号の後続する番号となるリクエストデータをリクエストテーブル31から取得する。
【0066】
そして、再現リクエスト生成部28は、取得したリクエストデータのリクエスト番号が最も早い処理順序を示す「1」であるか否かを判定する(ステップS32)。リクエスト番号が「1」であると判定された場合には(ステップS32;Yes)、再現リクエスト生成部28は、ステップS36に移行する。
【0067】
一方、リクエスト番号が「1」でないと判定された場合には(ステップS32;No)、再現リクエスト生成部28は、レスポンス相違テーブル34から、リクエスト番号―1の番号を持つレスポンスの相違データを取得する(ステップS33)。そして、再現リクエスト生成部28は、取得した相違データのうち変更前の値が変更前のリクエストデータのパラメータに含まれるか否かを判定する(ステップS34)。変更前の値が変更前のリクエストデータのパラメータに含まれると判定された場合には(ステップS34;Yes)、再現リクエスト生成部28は、変更前のリクエストデータのパラメータを変更後の相違データに置換する(ステップS35)。そして、再現リクエスト生成部28は、ステップS36に移行する。一方、変更前の値が変更前のリクエストデータのパラメータに含まれないと判定された場合には(ステップS34;No)、再現リクエスト生成部28は、ステップS36に移行する。
【0068】
引き続き、再現リクエスト生成部28は、リクエストデータに含まれるホスト名を変更先ウェブサーバ3Aのホスト名に置換し、再現リクエストデータを生成する(ステップS36)。そして、再現リクエスト生成部28は、再現リクエストデータを再現リクエストテーブル33に記録する(ステップS37)。
【0069】
[レスポンス比較処理の手順]
次に、レスポンス比較処理の手順を、図12を参照して説明する。図12は、レスポンス比較処理の手順を示すフローチャートである。
【0070】
レスポンス比較部27は、再現レスポンス記録部26から再現レスポンスデータのレスポンス番号を取得すると、レスポンステーブル32と再現レスポンステーブル35から、当該レスポンス番号が同じレスポンスデータを取得する(ステップS41)。そして、レスポンス比較部27は、取得した両方のレスポンスデータのDOMを作成する(ステップS42)。
【0071】
引き続き、レスポンス比較部27は、作成した両方のレスポンスデータのDOMを比較し、値が異なるXPathを抽出する(ステップS43)。そして、レスポンス比較部27は、レスポンス相違テーブル34に、レスポンス番号、XPath、レスポンスデータの相違値および再現レスポンスデータの相違値を記録する(ステップS44)。
【0072】
そして、レスポンス比較部27は、抽出したXPathの数だけ繰り返したか否かを判定する(ステップS45)。抽出したXPathの数だけ繰り返していないと判定された場合には(ステップS45;No)、レスポンス比較部27は、抽出したXPathの中から未だ選択していないXPathを選択し、ステップS44に移行する。一方、抽出したXPathの数だけ繰り返したと判定された場合には(ステップS45;Yes)、レスポンス比較部27は、レスポンス比較処理を終了する。
【0073】
[実施例2の効果]
上記実施例2によれば、リクエストテーブル31は、変更前ウェブサーバ2Aへのリクエストを処理順序の識別情報と関連付けて記憶する。レスポンステーブル32は、リクエストに対応する変更前ウェブサーバ2Aからのレスポンスを処理順序の識別情報と関連付けて記憶する。中継装置1Aは、社外秘データが指定されたリクエストデータを受け付け、リクエストテーブル31を参照し、識別情報で識別される処理順序に応じてリクエストを取得する。そして、中継装置1Aは、該取得したリクエストに含まれるホスト名を変更先ウェブサーバ3Aのホスト名に変更して送信する。さらに、中継装置1Aは、該送信したリクエストに基づくレスポンスを受信する。そして、中継装置1Aは、該受信したレスポンスと、レスポンステーブル32に記憶されたレスポンスとを比較して、異なる値を抽出する。そして、中継装置1Aは、該抽出した値のうちレスポンステーブル32に記憶されたレスポンスに含まれる値が、識別情報で識別される処理順序が当該レスポンスの直後のリクエストのパラメータに含まれるか否かを判定する。そして、中継装置1Aは、該判定の結果、含まれると判定した場合に、含まれると判定したリクエストのパラメータに、抽出した値のうち該受信したレスポンスに含まれる値を設定してリクエストを生成する。そして、中継装置1Aは、該生成したリクエストに含まれるホスト名を変更先ウェブサーバ3Aのホスト名に変更して送信する。
【0074】
かかる構成によれば、中継装置1Aは、変更前ウェブサーバ2Aへのリクエストを処理順序と関連付けて記憶し、社外秘データが指定されたリクエストデータを受け付けた後、記憶したリクエストを処理順序に応じて変更先ウェブサーバ3Aに送信することとした。このため、中継装置1Aは、社外秘データが指定されたリクエストデータを受け付けた後であっても、ウェブブラウザ1Bから変更先の変更先ウェブサーバ3Aに対して、最初から入力し直すことなしに、シームレスに実行を継続することが可能となる。例えば、外部クラウド上でサービスを利用している際に、途中でオンプレミス環境下のウェブサーバへウェブサーバを変更した場合であっても、中継装置1Aは、シームレスに当該サービスを継続することができる。
【0075】
また、中継装置1Aは、社外秘データが指定されたリクエストデータを受け付けた後、変更前後の値が異なるレスポンスの直後のリクエストのパラメータに変更前の値が含まれる場合には、当該リクエストのパラメータに変更後の値を設定することとした。このため、中継装置1Aは、ウェブサーバを変更した場合であっても、動的に変化するパラメータを自動的に設定することが可能となる。例えば、中継装置1Aは、ウェブサーバを変更した場合であっても、Java(登録商標)Scriptで動的に生成されるパラメータを自動的に設定することができる。この結果、中継装置1Aは、変更先の変更先ウェブサーバ3Aでサービスを正常に動作させることができ、当該サービスをシームレスに継続させることができる。
【0076】
なお、変更前ウェブサーバ2Aは、例えばクラウド環境のウェブサーバを指すものとして説明した。しかしながら、変更前ウェブサーバ2Aは、ウェブサービスを提供可能なウェブサーバであればこれに限定されるものではない。
【0077】
また、ウェブブラウザ1Bと中継装置1Aと変更先ウェブサーバ3Aとの接続形態は、
例えば社内LANであったり、社内におけるイントラネットであったりするものとして説明した。しかしながら、この接続形態は、社内に限らず、HTTPプロトコルで通信するネットワークであればこれらに限定されるものではない。
【0078】
また、アプリ移動部25は、変更前ウェブサーバ2Aによるサービスの実行中に、社外秘データが指定されたリクエストデータを受け付け、ウェブサーバを変更前ウェブサーバ2Aから変更先ウェブサーバ3Aに変更するものとして説明した。しかしながら、アプリ移動部25は、社外秘データが指定されたリクエストデータに基づきサービスを実行するウェブサーバを変更する場合に限定されず、ホットスタンバイやコールドスタンバイ等のように事前に冗長構成を採っている装置を変更する場合にウェブサーバを変更前ウェブサーバ2Aから変更先ウェブサーバ3Aに変更しても良い。この場合、アプリ移動部25は、例えば変更前ウェブサーバ2Aの動作状況を監視し、予め定められた負荷分散条件に合致する動作状況となった場合に負荷分散の必要性を検出し、または、予め定められた異常検出条件に合致する動作状況となった場合に一方の装置の異常の発生を検出し、この検出に基づき、実行する装置を変更する。このとき、アプリ移動部25は、実行する装置によって実施されるアプリケーションをデプロイすれば良い。
【0079】
[プログラム等]
なお、中継装置1Aは、既知のパーソナルコンピュータ、ワークステーション等の情報処理装置に、上記したレスポンス比較部27および再現リクエスト生成部28等の各機能を搭載することによって実現することができる。
【0080】
また、図示した各装置の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的態様は図示のものに限られず、その全部または一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、リクエスト記録部21とリクエスト送信部22とを1個の部として統合しても良いし、レスポンス送信部23とレスポンス記録部24とを1個の部として統合しても良い。一方、再現リクエスト生成部28を、処理順序が最も早いリクエストデータを生成する第1のリクエスト生成部と処理順序がそれ以降のリクエストデータを生成する第2のリクエスト生成部とに分散しても良い。また、リクエストテーブル31やレスポンステーブル32等の記憶部を中継装置1Aの外部装置としてネットワーク経由で接続するようにしても良い。
【0081】
また、上記実施例で説明した各種の処理は、予め用意されたプログラムをパーソナルコンピュータやワークステーション等のコンピュータで実行することによって実現することができる。そこで、以下では、図13を用いて、図2に示した中継装置1Aの制御部20と同様の機能を有する中継プログラムを実行するコンピュータの一例を説明する。
【0082】
図13は、中継プログラムを実行するコンピュータを示す図である。図13に示すように、コンピュータ1000は、RAM1010と、ネットワークインタフェース装置1020と、HDD1030と、CPU1040、媒体読取装置1050およびバス1060とを有する。RAM1010、ネットワークインタフェース装置1020、HDD1030、CPU1040、媒体読取装置1050は、バス1060によって接続されている。
【0083】
そして、HDD1030には、図2に示した制御部20と同様の機能を有する中継プログラム1031が記憶される。また、HDD1030には、図2に示したリクエストテーブル31、レスポンステーブル32、再現リクエストテーブル33、レスポンス相違テーブル34および再現レスポンステーブル35に対応する中継処理関連情報1032が記憶される。
【0084】
そして、CPU1040が中継プログラム1031をHDD1030から読み出してRAM1010に展開することにより、中継プログラム1031は、中継プロセス1011として機能するようになる。そして、中継プロセス1011は、中継処理関連情報1032から読み出した情報等を適宜RAM1010上の自身に割り当てられた領域に展開し、この展開したデータ等に基づいて各種データ処理を実行する。
【0085】
媒体読取装置1050は、中継プログラム1031がHDD1030に記憶されていない場合であっても、中継プログラム1031を記憶する媒体等から中継プログラム1031を読み取る。媒体読取装置1050には、例えばCD−ROMや光ディスク装置がある。
【0086】
ネットワークインタフェース装置1020は、外部装置とネットワーク経由で接続する装置であり、有線に対応するものであっても、無線に対応するものであっても良い。
【0087】
なお、上記の中継プログラム1031は、公衆回線、インターネット、LAN、WAN(Wide Area Network)等を介してコンピュータ1000に接続される他のコンピュータ(またはサーバ)等に記憶されるようにしても良い。この場合には、コンピュータ1000がネットワークインタフェース装置1020を介して他のコンピュータ等から中継プログラム1031を読み出して実行する。
【符号の説明】
【0088】
1 情報処理装置
1A 中継装置
2、2A 変更前ウェブサーバ
3、3A 変更先ウェブサーバ
11 記憶部
12 レスポンス比較部
13 リクエスト生成部
14 送信部
19、1B ウェブブラウザ
20 制御部
21 リクエスト記録部
22 リクエスト送信部
23 レスポンス送信部
24 レスポンス記録部
25 アプリ移動部
26 再現レスポンス記録部
27 レスポンス比較部
28 再現リクエスト生成部
29 再現リクエスト送信部
30 記憶部
31 リクエストテーブル
32 レスポンステーブル
33 再現リクエストテーブル
34 レスポンス相違テーブル
35 再現レスポンステーブル

【特許請求の範囲】
【請求項1】
インターネットを介して自装置に接続される第1のウェブサーバおよび自装置を介して前記インターネットに接続される第2のウェブサーバとウェブクライアントとの間でデータを中継し、且つ、データ記憶装置に接続されるコンピュータに、
前記ウェブクライアントからアクセス対象のデータの情報を含むリクエストデータを受信し、
前記データ記憶装置に格納されるデータごとにデータの公開に係る公開ポリシーを記憶する記憶部に記憶された前記公開ポリシーを参照して、前記リクエストデータに含まれるアクセス対象のデータの公開に制限があるか否かを判定し、
前記受信したリクエストデータに含まれるアクセス対象のデータの公開に制限がないと判定した場合に、前記受信したリクエストデータを前記第1のウェブサーバに送信して、記憶部に前記第1のウェブサーバに送信した前記リクエストデータを記憶し、
前記受信したリクエストデータに含まれるアクセス対象のデータの公開に制限があると判定した場合に、前記記憶部に記憶された前記第1のウェブサーバに送信した前記リクエストデータのうち、前記受信したリクエストデータに関連するリクエストデータを取得し、前記取得したリクエストデータに含まれる前記第1のウェブサーバの識別情報を前記第2のウェブサーバの識別情報に変更し、前記変更後のリクエストデータを前記第2のウェブサーバへ送信する
処理を実行させる中継プログラム。
【請求項2】
前記コンピュータに、
前記第1のウェブサーバに送信した前記リクエストデータに対する前記第1のウェブサーバからの第1のレスポンスデータを受信し、
前記記憶部に記憶したリクエストデータに、前記第1のウェブサーバから受信した当該リクエストデータに対する第1のレスポンスデータを関連付けて記憶し、
前記第2のウェブサーバへ送信されたリクエストデータに基づき前記第2のウェブサーバから前記コンピュータに送信された第2のレスポンスデータを受信し、
前記記憶部に前記取得したリクエストデータに関連付けて記憶された第1のレスポンスデータと、前記受信した第2のレスポンスデータとを比較して、前記第1のレスポンスと前記第2のレスポンスとで値が異なる部分がある場合に、該第1のレスポンスデータおよび前記受信した第2のレスポンスデータから当該値が異なる部分の値を抽出し、
前記記憶部から、前記取得したリクエストデータの次に前記コンピュータから前記第1のウェブサーバへ送信されたリクエストデータを取得し、当該リクエストデータに、前記第1のレスポンスデータから抽出した値が含まれるか否かを判定し、
該判定の結果、含まれると判定した場合に、当該リクエストデータに含まれる前記第1のレスポンスデータから抽出した値を、前記第2のレスポンスデータから抽出した値に変更して当該変更したリクエストデータに含まれる前記第1のウェブサーバの識別情報を前記第2のウェブサーバの識別情報に変更し、
前記変更後のリクエストデータを前記第2のウェブサーバへ送信する
処理を更に実行させる請求項1記載の中継プログラム。
【請求項3】
インターネットを介して自装置に接続される第1のウェブサーバまたは自装置を介して前記インターネットに接続される第2のウェブサーバと、ウェブクライアントとの間でデータを中継し、且つ、データ記憶装置と接続される中継装置であって、
前記ウェブクライアントからアクセス対象のデータの情報を含むリクエストデータを受信する受信手段と、
前記データ記憶装置に格納されるデータごとにデータの公開に係る公開ポリシーと、前記第1のウェブサーバに送信した前記リクエストデータとを記憶する記憶手段と、
前記記憶手段に記憶された前記公開ポリシーを参照して、前記リクエストデータに含まれるアクセス対象のデータの公開に制限があるか否かを判定し、前記受信したリクエストデータに含まれるアクセス対象のデータの公開に制限がないと判定した場合に、前記受信したリクエストデータを前記第1のウェブサーバに送信し、前記受信したリクエストデータに含まれるアクセス対象のデータの公開に制限があると判定した場合に、前記記憶手段に記憶された前記第1のウェブサーバに送信した前記リクエストデータのうち、前記受信したリクエストデータに関連するリクエストデータを取得し、前記取得したリクエストデータに含まれる前記第1のウェブサーバの識別情報を前記第2のウェブサーバの識別情報に変更し、前記変更後のリクエストデータを前記第2のウェブサーバへ送信する送信手段と、
前記記憶部に前記第1のウェブサーバに送信した前記リクエストデータを記憶するリクエスト記憶手段と、
を備える中継装置。
【請求項4】
インターネットを介して自装置に接続される第1のウェブサーバおよび自装置を介して前記インターネットに接続される第2のウェブサーバとウェブクライアントとの間でデータを中継し、且つ、データ記憶装置に接続されるコンピュータにより実行される中継方法であって、
前記ウェブクライアントからアクセス対象のデータの情報を含むリクエストデータを受信し、
前記データ記憶装置に格納されるデータごとにデータの公開に係る公開ポリシーを記憶する記憶部に記憶された前記公開ポリシーを参照して、前記リクエストデータに含まれるアクセス対象のデータの公開に制限があるか否かを判定し、
前記受信したリクエストデータに含まれるアクセス対象のデータの公開に制限がないと判定した場合に、前記受信したリクエストデータを前記第1のウェブサーバに送信して、記憶部に前記第1のウェブサーバに送信した前記リクエストデータを記憶し、
前記受信したリクエストデータに含まれるアクセス対象のデータの公開に制限があると判定した場合に、前記記憶部に記憶された前記第1のウェブサーバに送信した前記リクエストデータのうち、前記受信したリクエストデータに関連するリクエストデータを取得し、前記取得したリクエストデータに含まれる前記第1のウェブサーバの識別情報を前記第2のウェブサーバの識別情報に変更し、前記変更後のリクエストデータを前記第2のウェブサーバへ送信する
中継方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate


【公開番号】特開2012−84091(P2012−84091A)
【公開日】平成24年4月26日(2012.4.26)
【国際特許分類】
【出願番号】特願2010−231996(P2010−231996)
【出願日】平成22年10月14日(2010.10.14)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】