(57)【特許請求の範囲】
【請求項１】
インターネットを介して自装置に接続される第１のウェブサーバおよび自装置を介して前記インターネットに接続される第２のウェブサーバとウェブクライアントとの間でデータを中継し、且つ、データ記憶装置に接続されるコンピュータに、
前記ウェブクライアントからアクセス対象のデータの情報を含むリクエストデータを受信し、
前記データ記憶装置に格納されるデータごとにデータの公開に係る公開ポリシーを記憶する記憶部に記憶された前記公開ポリシーを参照して、前記リクエストデータに含まれるアクセス対象のデータの公開に制限があるか否かを判定し、
前記受信したリクエストデータに含まれるアクセス対象のデータの公開に制限がないと判定した場合に、前記受信したリクエストデータを前記第１のウェブサーバに送信して、記憶部に前記第１のウェブサーバに送信した前記リクエストデータを記憶し、
前記受信したリクエストデータに含まれるアクセス対象のデータの公開に制限があると判定した場合に、前記記憶部に記憶された前記第１のウェブサーバに送信した前記リクエストデータのうち、前記受信したリクエストデータに関連するリクエストデータを取得し、前記取得したリクエストデータに含まれる前記第１のウェブサーバの識別情報を前記第２のウェブサーバの識別情報に変更し、前記変更後のリクエストデータを前記第２のウェブサーバへ送信する
処理を実行させる中継プログラム。
【請求項２】
前記コンピュータに、
前記第１のウェブサーバに送信した前記リクエストデータに対する前記第１のウェブサーバからの第１のレスポンスデータを受信し、
前記記憶部に記憶したリクエストデータに、前記第１のウェブサーバから受信した当該リクエストデータに対する第１のレスポンスデータを関連付けて記憶し、
前記第２のウェブサーバへ送信されたリクエストデータに基づき前記第２のウェブサーバから前記コンピュータに送信された第２のレスポンスデータを受信し、
前記記憶部に前記取得したリクエストデータに関連付けて記憶された第１のレスポンスデータと、前記受信した第２のレスポンスデータとを比較して、前記第１のレスポンスと前記第２のレスポンスとで値が異なる部分がある場合に、該第１のレスポンスデータおよび前記受信した第２のレスポンスデータから当該値が異なる部分の値を抽出し、
前記記憶部から、前記取得したリクエストデータの次に前記コンピュータから前記第１のウェブサーバへ送信されたリクエストデータを取得し、当該リクエストデータに、前記第１のレスポンスデータから抽出した値が含まれるか否かを判定し、
該判定の結果、含まれると判定した場合に、当該リクエストデータに含まれる前記第１のレスポンスデータから抽出した値を、前記第２のレスポンスデータから抽出した値に変更して当該変更したリクエストデータに含まれる前記第１のウェブサーバの識別情報を前記第２のウェブサーバの識別情報に変更し、
前記変更後のリクエストデータを前記第２のウェブサーバへ送信する
処理を更に実行させる請求項１記載の中継プログラム。
【請求項３】
インターネットを介して自装置に接続される第１のウェブサーバまたは自装置を介して前記インターネットに接続される第２のウェブサーバと、ウェブクライアントとの間でデータを中継し、且つ、データ記憶装置と接続される中継装置であって、
前記ウェブクライアントからアクセス対象のデータの情報を含むリクエストデータを受信する受信手段と、
前記データ記憶装置に格納されるデータごとにデータの公開に係る公開ポリシーと、前記第１のウェブサーバに送信した前記リクエストデータとを記憶する記憶手段と、
前記記憶手段に記憶された前記公開ポリシーを参照して、前記リクエストデータに含まれるアクセス対象のデータの公開に制限があるか否かを判定し、前記受信したリクエストデータに含まれるアクセス対象のデータの公開に制限がないと判定した場合に、前記受信したリクエストデータを前記第１のウェブサーバに送信し、前記受信したリクエストデータに含まれるアクセス対象のデータの公開に制限があると判定した場合に、前記記憶手段に記憶された前記第１のウェブサーバに送信した前記リクエストデータのうち、前記受信したリクエストデータに関連するリクエストデータを取得し、前記取得したリクエストデータに含まれる前記第１のウェブサーバの識別情報を前記第２のウェブサーバの識別情報に変更し、前記変更後のリクエストデータを前記第２のウェブサーバへ送信する送信手段と、
前記記憶部に前記第１のウェブサーバに送信した前記リクエストデータを記憶するリクエスト記憶手段と、
を備える中継装置。
【請求項４】
インターネットを介して自装置に接続される第１のウェブサーバおよび自装置を介して前記インターネットに接続される第２のウェブサーバとウェブクライアントとの間でデータを中継し、且つ、データ記憶装置に接続されるコンピュータにより実行される中継方法であって、
前記ウェブクライアントからアクセス対象のデータの情報を含むリクエストデータを受信し、
前記データ記憶装置に格納されるデータごとにデータの公開に係る公開ポリシーを記憶する記憶部に記憶された前記公開ポリシーを参照して、前記リクエストデータに含まれるアクセス対象のデータの公開に制限があるか否かを判定し、
前記受信したリクエストデータに含まれるアクセス対象のデータの公開に制限がないと判定した場合に、前記受信したリクエストデータを前記第１のウェブサーバに送信して、記憶部に前記第１のウェブサーバに送信した前記リクエストデータを記憶し、
前記受信したリクエストデータに含まれるアクセス対象のデータの公開に制限があると判定した場合に、前記記憶部に記憶された前記第１のウェブサーバに送信した前記リクエストデータのうち、前記受信したリクエストデータに関連するリクエストデータを取得し、前記取得したリクエストデータに含まれる前記第１のウェブサーバの識別情報を前記第２のウェブサーバの識別情報に変更し、前記変更後のリクエストデータを前記第２のウェブサーバへ送信する
中継方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、中継プログラム、中継装置および中継方法に関する。
【背景技術】
【０００２】
ウェブサーバは、ウェブブラウザでの操作のもと、当該ウェブブラウザとの間でＨＴＴＰ（Hyper  Text  Transfer  Protocol）でデータのやりとりをして、該当するサービスを提供する。この際、ウェブサーバとウェブブラウザとの間に、データを中継する中継装置が設置される場合もある。
【０００３】
ウェブブラウザでの操作を再現する方法として、中継装置が通信メッセージの履歴を記録し、レスポンスデータにＦｏｒｍ要素等の要素があり要素内に次回のリクエストデータで用いられるパラメータがあれば、該パラメータを利用して再現リクエストデータを設定する技術がある。
【０００４】
また、通常のリクエストデータに対するレスポンスデータのタグ構造と、通常のリクエストデータのパラメータを改変して得られた不正なリクエストデータに対するレスポンスデータのタグ構造を比較し、タグ構造の比較結果を基に診断対象ウェブサーバで動作するウェブアプリケーションの脆弱性を検出する技術がある。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００６−１９００３３号公報
【特許文献２】特開２００６−３３８２４６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
近年、クラウドコンピューティング（以下、「クラウド」と略記する。）の浸透に伴い、必要な機能をサービスとして提供されるＳａａＳ（Software  as  a  Service）と呼ばれる形態が普及しつつある。企業等では、クラウドのリソースを積極的に活用したい反面、クラウドで使用されることとなるデータが例えば機密情報であるような場合には、当該データを社外に出せない。そこで、データが秘匿を要しない場合には、クラウド環境のサービスを活用し、データが秘匿を要する場合には、自社管理化にある設備にソフトウェアを配備し運用する形態であるオンプレミス環境でサービスを活用するというハイブリッドな手法が求められている。
【０００７】
ところで、データの秘匿の要否によってサービスを活用する環境を変更する場合、変更前の環境にあるサーバでサービスを利用しているユーザは、変更先の環境にあるサーバに対して変更前の環境にあるサーバで途中まで実行した操作と同じ操作を再度繰り返す必要がある。
【０００８】
しかしながら、データが秘匿を要するか否かに応じてサービスを提供するサーバを変更した場合に、変更先のサーバで当該サービスをシームレスに継続することができないという問題があった。すなわち、上述の中継装置は、サーバに対する操作を記録しておき、このサーバに対して記録した操作を再実行するというものであり、データが秘匿を要する場合に変更先の環境にあるサーバに対し、利用者が同じ操作を繰り返さずにすむようにするものではない。
【０００９】
また、レスポンスデータのタグ構造を比較する従来技術も同じサーバに対する変更前後各々のリクエストデータに対するレスポンスデータのタグ構造を比較するというものであり、上述の通信メッセージの履歴を記録しておく従来技術と組み合わせても、中継装置は、変更先のサーバへのリクエストデータを適切に設定することができないのは同様である。
【００１０】
このように、中継装置は、変更前の環境にあるサーバで利用者が利用していたサービスを変更先の環境にあるサーバでシームレスに継続させることはできなかった。
【００１１】
そこで、１つの側面では、データが秘匿を要するか否かに応じてサービスを提供するサーバを変更した場合に、変更先のサーバで当該サービスをシームレスに継続できるようにすることを目的とする。
【課題を解決するための手段】
【００１２】
第１の案では、中継プログラムは、インターネットを介して自装置に接続される第１のウェブサーバおよび自装置を介して前記インターネットに接続される第２のウェブサーバとウェブクライアントとの間でデータを中継し、且つ、データ記憶装置に接続されるコンピュータに、前記ウェブクライアントからアクセス対象のデータの情報を含むリクエストデータを受信し、前記データ記憶装置に格納されるデータごとにデータの公開に係る公開ポリシーを記憶する記憶部に記憶された前記公開ポリシーを参照して、前記リクエストデータに含まれるアクセス対象のデータの公開に制限があるか否かを判定し、前記受信したリクエストデータに含まれるアクセス対象のデータの公開に制限がないと判定した場合に、前記受信したリクエストデータを前記第１のウェブサーバに送信して、記憶部に前記第１のウェブサーバに送信した前記リクエストデータを記憶し、前記受信したリクエストデータに含まれるアクセス対象のデータの公開に制限があると判定した場合に、前記記憶部に記憶された前記第１のウェブサーバに送信した前記リクエストデータのうち、前記受信したリクエストデータに関連するリクエストデータを取得し、前記取得したリクエストデータに含まれる前記第１のウェブサーバの識別情報を前記第２のウェブサーバの識別情報に変更し、前記変更後のリクエストデータを前記第２のウェブサーバへ送信する処理を実行させる。
【発明の効果】
【００１３】
開示のプログラムは、データが秘匿を要するか否かに応じてサービスを提供するサーバを変更した場合に、変更先のサーバでサービスをシームレスに継続することができる。
【図面の簡単な説明】
【００１４】
【図１】図１は、実施例１に係る情報処理システムの構成を示す機能ブロック図である。
【図２】図２は、実施例２に係る中継装置の構成を示す機能ブロック図である。
【図３】図３は、リクエストテーブルのデータ構造の一例を示す図である。
【図４】図４は、レスポンステーブルのデータ構造の一例を示す図である。
【図５】図５は、レスポンス相違テーブルのデータ構造の一例を示す図である。
【図６】図６は、再現リクエストテーブルのデータ構造の一例を示す図である。
【図７】図７は、ウェブサーバの変更前の中継処理の具体例を説明する図である。
【図８】図８は、レスポンス比較処理の具体例を説明する図である。
【図９】図９は、再現リクエスト生成処理の具体例を説明する図である。
【図１０】図１０は、実施例２に係る中継処理の手順を示すフローチャートである。
【図１１】図１１は、再現リクエスト生成処理の手順を示すフローチャートである。
【図１２】図１２は、レスポンス比較処理の手順を示すフローチャートである。
【図１３】図１３は、中継プログラムを実行するコンピュータを示す図である。
【図１４】図１４は、データ管理テーブルのデータ構造の一例を示す図である。
【発明を実施するための形態】
【００１５】
以下に、本願の開示する中継プログラム、中継装置および中継方法の実施例を図面に基づいて詳細に説明する。なお、実施例によりこの発明が限定されるものではない。
【実施例１】
【００１６】
［実施例１に係る情報処理システムの構成］
図１は、実施例１に係る情報処理システム９の構成を示す機能ブロック図である。図１に示すように、情報処理システム９は、情報処理装置１と、変更前ウェブサーバ２と、変更先ウェブサーバ３と、社内記憶装置６とを有する。情報処理装置１は、インターネット５を介して変更前ウェブサーバ２と接続する。また、情報処理装置１は、インターネットを介さずに変更先ウェブサーバ３および社内記憶装置６と接続する。変更前ウェブサーバ２は、社外秘データが指定されたリクエストデータを受け付けるまでサービスの処理を実行することとなるウェブサーバを示す。例えば、変更前ウェブサーバ２は、ＳａａＳ（Software  as  a  Service）を取り入れたウェブサーバであったり、クラウド環境下のウェブサーバであったりする。変更先ウェブサーバ３は、社外秘データが指定されたリクエストデータを受け付けた後に変更前ウェブサーバ２のサービスの処理を継続して実行することとなる変更先のウェブサーバを示す。例えば、変更先ウェブサーバ３は、変更前ウェブサーバ２のウェブアプリケーションをダウンロードしてサービスを実施するオンプレミス環境下のウェブサーバである。情報処理装置１が変更先ウェブサーバ３および社内記憶装置６とインターネット５を介さないで接続する形態は、例えば社内ＬＡＮ（Local  Area  Network）であったり、社内におけるイントラネットであったりする。社内記憶装置６は、公開に制限があるデータや公開に制限がないデータを記憶する。例えば変更先ウェブサーバ３には公開できるが変更前ウェブサーバ２には公開できない社外秘のデータおよび公開に制限がなく変更前ウェブサーバ２に公開できるデータを記憶する。
【００１７】
情報処理装置１は、記憶部１１、レスポンス比較部１２、リクエスト生成部１３、送信部１４およびウェブブラウザ１９を有する。ウェブブラウザ１９は、ユーザ操作に基づき変更前ウェブサーバ２または変更先ウェブサーバ３へのリクエストデータを生成し、当該リクエストデータに対応する変更前ウェブサーバ２または変更先ウェブサーバ３からのレスポンスデータを図示しない表示部に表示する。記憶部１１は、変更前ウェブサーバ２へのリクエストデータおよび当該リクエストデータに対応する変更前ウェブサーバ２からのレスポンスデータを処理順序の識別情報と関連付けて時系列に記憶する。リクエストデータには、変更前ウェブサーバ２の識別情報であるホスト名とリクエストパラメータが含まれる。なお、処理順序の識別情報と関連付けて記憶部１１に時系列に記憶されるこの変更前ウェブサーバ２へのリクエストデータおよび当該リクエストデータに対応する変更前ウェブサーバ２からのレスポンスデータについては、所定の時間、例えば最新のレスポンスデータの受信から、この変更前ウェブサーバ２のサービスのセッションのタイムアウトまでの時間が経過するまでにこの変更前ウェブサーバ２に対する新たなリクエストデータが記憶されない場合に、記憶部１１から削除するようにしても良い。このように削除を行うことで、後述するリクエスト生成部１３による変更の対象とするリクエストデータを適正な範囲に留めることができる。
【００１８】
また、記憶部１１は、社内記憶装置６に記憶されたデータの公開に係る公開ポリシーを記憶する。例えば、記憶部１１は、公開に制限がある旨のポリシーや公開に制限がない旨のポリシーを、データごとに記憶する。
【００１９】
レスポンス比較部１２は、公開に制限があるデータが指定されたリクエストデータを受け付けた後、変更先ウェブサーバ３からレスポンスデータの受信に基づき、このレスポンスデータと、記憶部１１に記憶された変更前ウェブサーバ２からのレスポンスデータのうち、処理順序の識別情報が、社外秘データが指定されたリクエストデータを受け付けた後この変更先ウェブサーバ３からレスポンスデータを受信した回数に対応するレスポンスデータとを比較し、値が異なる部分がある場合に、変更先ウェブサーバ３からのレスポンスデータおよび変更前ウェブサーバ２からのレスポンスデータから、この値が異なる部分の値をそれぞれ抽出する。
【００２０】
リクエスト生成部１３は、ウェブブラウザ１９により生成されたリクエストデータを受け付け、このリクエストデータに含まれるアクセス対象のデータについて記憶部１１に記憶された公開ポリシーを参照する。そして、リクエスト生成部１３は、当該アクセス対象のデータの公開に制限がない場合にはリクエストデータに含まれるホスト名を変更せずに送信部１４に渡す。一方、当該アクセス対象のデータの公開に制限がある場合には、このリクエストデータに含まれるホスト名を変更先ウェブサーバ３のホスト名に変更し、図示しない一時記憶部に記憶する。また、リクエスト生成部１３は、前記記憶部１１に記憶されたリクエストデータのうち、受け付けたリクエストデータに関連する最初のリクエストデータを特定する。例えば、受け付けたリクエストデータにセッションを特定するセッション識別情報が含まれる場合には、このセッション識別情報の発行の契機となったリクエストデータを最初のリクエストデータとして特定する。例えば、このセッション識別情報を最初に利用したリクエストデータの１つ前のリクエストデータをセッション識別情報の発行の契機となるリクエストデータと判定し、このリクエストデータを受け付けたリクエストデータに関連する最初のリクエストデータとして特定する。なお、受け付けたリクエストデータにセッションとは別の、一連の処理を特定可能な処理識別情報が含まれる場合には、この処理識別情報を含む最初のリクエストデータを特定するものとしても良い。
【００２１】
リクエスト生成部１３は、この特定したリクエストデータに含まれるホスト名を変更先ウェブサーバのホスト名に変更した新たなリクエストデータを作成して送信部１４に渡す。なお、リクエスト生成部１３は、記憶部１１に記憶された処理順序の識別情報で識別される処理順序がこの最初のリクエストデータ以降のリクエストデータについては、送信部１４に渡す前に、１つ前に送信部１４から送信されたリクエストデータに対する変更先ウェブサーバ３からのレスポンスデータの受信に基づきレスポンス比較部１２によって変更前ウェブサーバ２からのレスポンスデータから抽出された値が、当該リクエストデータのパラメータに含まれるか否かを判定する。そして、リクエスト生成部１３は、該判定の結果、含まれると判定した場合に、含まれると判定したリクエストデータのパラメータに、レスポンス比較部１２によって変更先ウェブサーバ３のレスポンスデータから抽出された値を設定してから、このリクエストデータを送信部１４に渡す。一方、リクエスト生成部１３は、判定の結果、含まれないと判定した場合には、リクエストデータのパラメータを変更せずに、このリクエストデータを送信部１４に渡す。そして、記憶部１１に記憶された最新のリクエストデータまで送信部１４に渡し終えたら、一時記憶部に記憶したリクエストデータについて、１つ前に送信部１４から送信されたリクエストデータに対する変更先ウェブサーバ３からのレスポンスデータの受信に基づきレスポンス比較部１２によって変更前ウェブサーバ２からのレスポンスデータから抽出された値が、当該リクエストデータのパラメータに含まれるか否かを判定する。そして、リクエスト生成部１３は、該判定の結果、含まれると判定した場合に、含まれると判定したリクエストデータのパラメータに、レスポンス比較部１２によって変更先ウェブサーバ３からのレスポンスデータから抽出された値を設定して、このリクエストデータを送信部に渡す。
【００２２】
送信部１４は、リクエスト生成部１３から渡されたリクエストデータをこのリクエストデータに含まれるホスト名のウェブサーバに送信する。
【００２３】
このようにして、情報処理装置１は、公開に制限があるデータをアクセス対象とするリクエストデータを受け付けた後、変更前後の値が異なるレスポンスデータの直後のリクエストデータのパラメータに変更前の値が含まれる場合には、当該リクエストデータのパラメータに変更後の値を設定することとした。このため、情報処理装置１は、ウェブサーバを変更した場合であっても、動的に変化するパラメータを自動的に設定することができる。この結果、情報処理装置１は、変更先のウェブサーバでサービスを正常に動作させることができ、当該サービスをシームレスに継続させることができる。
【００２４】
ところで、実施例１に係る情報処理装置１では、ウェブブラウザ１９を内部に含む場合について説明した。しかしながら、情報処理装置１は、これに限定されるものではなく、ウェブブラウザ１９を内部に含まない場合であっても良い。そこで、実施例２では、情報処理装置１が、ウェブブラウザ１９を内部に含まない場合について説明する。
【実施例２】
【００２５】
［実施例２に係る中継装置の構成］
図２は、実施例２に係る中継装置の構成を示す機能ブロック図である。この中継装置は、実施例１の情報処理装置１の一例である。図２に示すように、中継装置１Ａは、ウェブブラウザ１Ｂ、変更前ウェブサーバ２Ａおよび変更先ウェブサーバ３Ａと接続する。ウェブブラウザ１Ｂは、例えばウェブサービスを利用するパーソナルコンピュータを示す。変更前ウェブサーバ２Ａは、ウェブサーバの変更までサービスの処理を実行することとなるウェブサーバを示す。例えば、変更前ウェブサーバ２Ａは、ＳａａＳ（Software  as  a  Service）を取り入れたウェブサーバであったり、クラウド環境下のウェブサーバであったりする。変更先ウェブサーバ３Ａは、ウェブサーバの変更後に変更前ウェブサーバ２Ａのサービスの処理を継続して実行することとなる変更先のウェブサーバを示す。例えば、変更先ウェブサーバ３Ａは、変更前ウェブサーバ２Ａのウェブアプリケーションをダウンロードして実施できるオンプレミス環境下のウェブサーバである。したがって、変更先ウェブサーバ３Ａおよびウェブブラウザ１Ｂの接続形態は、例えば社内ＬＡＮ（Local  Area  Network）であったり、社内におけるイントラネットであったりする。なお、ウェブブラウザ１Ｂは、実施例１のウェブブラウザ１９の一例である。変更前ウェブサーバ２Ａは、実施例１の変更前ウェブサーバ２の一例である。変更先ウェブサーバ３Ａは、実施例１の変更先ウェブサーバ３の一例である。
【００２６】
中継装置１Ａは、制御部２０および記憶部３０を有する。制御部２０は、リクエスト記録部２１、リクエスト送信部２２、レスポンス送信部２３、レスポンス記録部２４、アプリ移動部２５、再現レスポンス記録部２６、レスポンス比較部２７、再現リクエスト生成部２８および再現リクエスト送信部２９を有する。なお、レスポンス比較部２７は、実施例１のレスポンス比較部１２の一例であり、再現リクエスト生成部２８は、実施例１のリクエスト生成部１３の一例であり、再現リクエスト送信部２９は、実施例１の送信部１４の一例である。また、制御部２０は、例えば、ＡＳＩＣ（Application Specific Integrated Circuit）やＦＰＧＡ（Field Programmable Gate Array）等の集積回路またはＣＰＵ（Central Processing Unit）やＭＰＵ（Micro Processing Unit）等の電子回路である。
【００２７】
記憶部３０は、リクエストテーブル３１、レスポンステーブル３２、再現リクエストテーブル３３、レスポンス相違テーブル３４、再現レスポンステーブル３５およびデータ管理テーブル３６を有する。リクエストテーブル３１は、変更前ウェブサーバ２Ａへのリクエストを処理順序の識別情報と関連付けて記憶する。レスポンステーブル３２は、変更前ウェブサーバ２Ａからのレスポンスを処理順序の識別情報と関連付けて記憶する。再現リクエストテーブル３３は、変更先ウェブサーバ３Ａへのリクエストを処理順序の識別情報と関連付けて記憶する。レスポンス相違テーブル３４は、変更前後のレスポンスの相違を記憶する。再現レスポンステーブル３５は、変更先ウェブサーバ３Ａからのレスポンスを処理順序の識別情報と関連付けて記憶する。なお、リクエストテーブル３１、レスポンステーブル３２およびデータ管理テーブル３６は、実施例１の記憶部１１の一例である。記憶部３０は、例えば、ＲＡＭ（Random Access Memory）、フラッシュメモリ（flash memory）等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置である。
【００２８】
リクエスト記録部２１は、所定のサービスの一連の処理毎にウェブブラウザ１Ｂから送信されたリクエストデータを順次リクエストテーブル３１に記録する。ここで、所定のサービスとは、例えば、在庫検索に関するサービスであったり、後述する予定時刻からページ表示時刻との差を表示するサービスであったりするが、繰り返し実行することが可能なサービスであれば良い。例えば、図示しないが、受け付けたリクエストデータに含まれるサービスの一連の処理の識別情報、例えば、セッションを特定するセッション識別情報の発行の契機となったリクエストデータを最初のリクエストデータとして以降同じ識別情報を含むリクエストデータを一連の処理として順次リクエストテーブル３１に記憶するようにしても良い。また、後述する、変更前ウェブサーバ２Ａからウェブアプリケーション毎に通知される、特定のＵＲＬに合致するリクエストを最初のリクエストデータとして、以降のリクエストデータを一連の処理として順次リクエストテーブルに記憶するようにしても良い。リクエスト送信部２２は、リクエスト記録部２１からリクエストデータを取得し、取得したリクエストデータを変更前ウェブサーバ２Ａに送信する。
【００２９】
レスポンス記録部２４は、変更前ウェブサーバ２Ａから送信された、リクエストデータに対応するレスポンスデータをレスポンステーブル３２に記録する。レスポンス送信部２３は、変更前ウェブサーバ２Ａから送信された、リクエストデータに対応するレスポンスデータをウェブブラウザ１Ｂに送信する。
【００３０】
ここで、リクエストテーブル３１、レスポンステーブル３２およびデータ管理テーブル３６のデータ構造について、それぞれ図３、図４および図１４を参照しながら説明する。図３は、リクエストテーブル３１のデータ構造の一例を示す図である。図３に示すように、リクエストテーブル３１は、リクエスト番号３１ａ毎に、リクエストデータ３１ｂを対応付けて記憶する。リクエスト番号３１ａは、サービスに対応する処理順序の識別情報を示す。例えば、リクエスト番号３１ａには、最も早い処理順序の場合には「１」が設定され、処理順序が遅くなるにつれて昇順の値が設定される。すなわち、リクエスト番号３１ａには、同じサービスが繰り返し実行される場合、インクリメントされた値が設定される。リクエストデータ３１ｂは、リクエストデータの内容を示す。なお、ユーザ毎に、リクエスト番号３１ａが記録されるものとしても良い。すなわち、リクエストテーブル３１は、ユーザ識別子およびリクエスト番号３１ａ毎に、リクエストデータ３１ｂを対応付けて記憶する。
【００３１】
図４は、レスポンステーブル３２のデータ構造の一例を示す図である。図４に示すように、レスポンステーブル３２は、レスポンス番号３２ａ毎に、レスポンスデータ３２ｂを対応付けて記憶する。レスポンス番号３２ａは、サービスに対応する処理順序の識別情報を示す。すなわち、レスポンス番号３２ａは、同じサービスが繰り返し実行される場合、インクリメントされた値が設定される。また、レスポンス番号３２ａは、レスポンスをすることとなる元のリクエストのリクエスト番号３１ａと同じ番号となる。レスポンスデータ３２ｂは、レスポンスデータの内容を示す。なお、リクエストテーブル３１と同様に、ユーザ毎に、レスポンス番号３２ａが制御されるものとしても良い。すなわち、レスポンステーブル３２は、ユーザ識別子およびレスポンス番号３２ａ毎に、レスポンスデータ３２ｂを対応付けて記憶する。
【００３２】
図１４は、データ管理テーブル３６のデータ構造の一例を示す図である。図１４に示すように、データ管理テーブル３６は、データＩＤ３６ａおよび社外秘データＵＲＬ３６ｂを対応付けて記憶する。データＩＤ３６ａは、データの識別番号を示す。社外秘データＵＲＬ３６ｂは、ウェブアプリケーションからのアクセスを許可するデータのうち社外秘データのＵＲＬを示す。すなわち、社外秘データＵＲＬ３６ｂは、社外での公開に制限があるデータのＵＲＬを示している。なお、データ管理テーブル３６は、中継処理が行われる前にあらかじめ作成されるものとする。
【００３３】
図２に戻って、アプリ移動部２５は、変更前ウェブサーバ２Ａによるサービスの実行中に、社外秘データが指定されたリクエストデータを受け付けると、リクエストデータの送信先とするウェブサーバを変更前ウェブサーバ２Ａから変更先ウェブサーバ３Ａに変更する。例えば、アプリ移動部２５は、ウェブブラウザ１Ｂからデータ管理テーブル３６に記憶される社外秘データが指定されたリクエストデータを取得する。そして、アプリ移動部２５は、サービスを実行中の変更前ウェブサーバ２Ａに、当該サービスを実行するウェブアプリケーションの転送要求を送信する。また、アプリ移動部２５は、変更前ウェブサーバ２Ａから転送要求に対応したウェブアプリケーションを取得し、取得したウェブアプリケーションを変更先ウェブサーバ３Ａで利用可能な状態にする。すなわち、アプリ移動部２５は、クラウド上で実行されていたサービスをオンプレミス環境で実行させるべく、当該サービスが社外秘データを取り扱うタイミングで、ウェブサーバを変更前ウェブサーバ２Ａから変更先ウェブサーバ３Ａに変更するのである。なお、ウェブアプリケーションを利用可能な状態にすることを、以降「デプロイする」という。なお、変更前ウェブサーバ２Ａからウェブアプリケーションを取得する際に、再現開始点として特定のＵＲＬを通知するよう構成しても良い。
【００３４】
再現レスポンス記録部２６は、変更前ウェブサーバ２Ａから変更先ウェブサーバ３Ａにサービスが移動した後、変更先ウェブサーバ３Ａから送信されたレスポンスデータを取得する。そして、再現レスポンス記録部２６は、取得したレスポンスデータを再現レスポンステーブル３５に記録する。変更先ウェブサーバ３Ａから送信されたレスポンスデータを、以降、「再現レスポンスデータ」というものとする。同様に、変更先ウェブサーバ３Ａに送信するリクエストデータを、以降、「再現リクエストデータ」というものとする。なお、再現レスポンステーブル３５のデータ構造は、レスポンステーブル３２と同様であるので、説明を省略する。
【００３５】
レスポンス比較部２７は、再現レスポンスデータと、レスポンステーブル３２に記憶された、同一のレスポンス番号を持つレスポンスデータとを比較し、値が相違する部分がある場合に、再現レスポンスデータ、および、レスポンステーブル３２に記憶された、同一のレスポンス番号を持つレスポンスデータから、値が相違する部分の値をそれぞれ抽出する。具体的には、レスポンス比較部２７は、再現レスポンスデータを取得する。また、レスポンス比較部２７は、取得した再現レスポンスデータと同一のレスポンス番号を持つレスポンスデータをレスポンステーブル３２から取得する。また、変更前ウェブサーバ２Ａからウェブアプリケーションを取得する際に再現開始点として特定のＵＲＬを通知された場合には、この特定のＵＲＬに合致する最新のリクエストデータに対応するレスポンスデータのレスポンス番号からのレスポンス番号の相対値が、取得した再現レスポンスデータと同一の値となるレスポンスデータをレスポンステーブル３２から取得する。そして、レスポンス比較部２７は、取得した再現レスポンスデータおよびレスポンスデータのＤＯＭ（Document  Object  Model）をそれぞれ作成する。そして、レスポンス比較部２７は、作成した双方のＤＯＭを比較し、相違する値および当該値の位置を示すＸＰａｔｈを抽出する。そして、レスポンス比較部２７は、抽出した相違する値およびＸＰａｔｈをレスポンス相違テーブル３４に記録する。
【００３６】
ここで、レスポンス相違テーブル３４のデータ構造について、図５を参照しながら説明する。図５は、レスポンス相違テーブルのデータ構造の一例を示す図である。図５に示すように、レスポンス相違テーブル３４は、レスポンス番号３４ａ毎に、ＸＰａｔｈ３４ｂ、変更前値３４ｃおよび変更後値３４ｄを対応付けて記憶する。ＸＰａｔｈ３４ｂは、相違する値のあったＸＰａｔｈを示す。変更前値３４ｃは、再現レスポンスデータと同一のレスポンス番号を持つレスポンスデータ内のＸＰａｔｈが示す値である。変更後値３４ｄは、再現レスポンスデータ内のＸＰａｔｈが示す値である。例えば、レスポンス相違テーブル３４は、ＸＰａｔｈ３４ｂとして「／ＨＴＭＬ／ＢＯＤＹ／ＤＩＶ「１」」を記憶し、変更前値３４ｃとして「２０１００８１９１３２０」を記憶し、変更後値３４ｄとして「２０１００８１９１３２６」を記憶する。
【００３７】
再現リクエスト生成部２８は、変更前ウェブサーバ２Ａから変更先ウェブサーバ３Ａにサービスが移動した後、当該サービスを継続させるべく、当該サービスに関する再現リクエストデータを生成する。具体的には、再現リクエスト生成部２８は、サービスが移動した後、当該サービスについて、リクエストテーブル３１からサービス移動の契機となったリクエストデータと関連するリクエストデータであって処理順序が最も早いリクエストデータを取得する。また、変更前ウェブサーバ２Ａからウェブアプリケーションを取得する際に再現開始点として特定のＵＲＬを通知された場合には、この特定のＵＲＬと合致するリクエストデータを取得する。そして、再現リクエスト生成部２８は、取得したリクエストデータに含まれるホスト名を変更先ウェブサーバ３Ａに置換して再現リクエストデータを生成し、生成した再現リクエストデータを再現リクエストテーブル３３に記録する。
【００３８】
また、再現リクエスト生成部２８は、再現レスポンスデータのレスポンス番号に対応する相違する値をレスポンス相違テーブル３４から取得する。そして、再現リクエスト生成部２８は、当該レスポンス番号の後続する番号のリクエストデータをリクエストテーブル３１から取得する。そして、再現リクエスト生成部２８は、レスポンス相違テーブル３４から取得した相違する値のうち変更前値３４ｃがリクエストテーブル３１から取得したリクエストデータのパラメータに含まれるか否かを判定する。すなわち、再現リクエスト生成部２８は、相違する値のうち変更前のレスポンスデータに係る値がこのレスポンスに後続するリクエストデータに含まれていたか否かを判定する。そして、再現リクエスト生成部２８は、判定の結果、含まれると判定した場合には、含まれると判定したリクエストデータのパラメータを、相違する値のうち変更後値３４ｄに置換して再現リクエストデータを生成する。一方、再現リクエスト生成部２８は、判定の結果、含まれないと判定した場合には、含まれないと判定したリクエストデータに含まれるホスト名を、変更先ウェブサーバ３Ａのホスト名に置換して再現リクエストデータを生成する。そして、再現リクエスト生成部２８は、生成した再現リクエストデータを再現リクエストテーブル３３に記録する。
【００３９】
ここで、再現リクエストテーブル３３のデータ構造について、図６を参照しながら説明する。図６は、再現リクエストテーブルのデータ構造の一例を示す図である。図６に示すように、再現リクエストテーブル３３は、リクエスト番号３３ａ毎に、リクエストデータ３３ｂを対応付けて記憶する。例えば、リクエスト番号３３ａには、サービスが移動した後、最も早い処理順序の場合には「１」が設定され、処理順序が遅くなるにつれて昇順の値が設定される。すなわち、リクエスト番号３３ａには、同じサービスが繰り返し実行される場合、インクリメントされた値が設定される。リクエストデータ３３ｂは、再現リクエスト生成部２８によって生成された再現リクエストを示す。なお、ユーザ毎に、リクエスト番号３３ａが記録されるものとしても良い。すなわち、再現リクエストテーブル３３は、ユーザ識別子およびリクエスト番号３３ａ毎に、リクエストデータ３３ｂを対応付けて記憶するようにしても良い。
【００４０】
図２に戻って、再現リクエスト送信部２９は、再現リクエスト生成部２８から再現リクエストデータを取得し、取得した再現リクエストデータを変更先ウェブサーバ３Ａに送信する。
【００４１】
ここで、例えば予定時刻とページ表示時刻との差を表示するサービスの場合における、中継処理の具体例について、図７〜図９を参照しながら説明する。図７は、ウェブサーバの変更前の中継処理の具体例を説明する図であり、図８および図９は、社外秘データが指定されたリクエストデータを受け付けた後の中継処理の具体例を説明する図である。図８では、レスポンス比較処理の具体例を示し、図９では、再現リクエスト生成処理の具体例を示す。なお、例示するサービスにおける予定時刻は、「２０１０年８月１９日１４時００分」であるものとする。
【００４２】
図７（Ａ）は、中継処理によってウェブブラウザ１Ｂに表される画面の遷移である。図７（Ｂ）は、社外秘データが指定されたリクエストデータを受け付ける前の、変更前ウェブサーバ２Ａへのリクエストデータおよび当該リクエストに対応する変更前ウェブサーバ２Ａからのレスポンスデータである。図７（Ａ）に示すように、ウェブブラウザ１Ｂは、例えばウェブページの部分書き換え可能なＡｊａｘ（Asynchronous  Java（登録商標）Script +XML）を用いて通信するものとする。ウェブブラウザ１Ｂは、サービスにおけるウェブアプリケーションの起動要求ｆ１を送信した後の画面Ｄ１を表示する。ここでは、図７（Ｂ）に示すように、起動要求ｆ１について、ウェブブラウザ１Ｂから中継装置１Ａを介して変更前ウェブサーバ２Ａに送信されたリクエストデータＲ１が、リクエスト番号「１」に示されるデータとなる。また、リクエスト番号「１」のリクエストデータＲ１に対応するレスポンスデータＰ１が、レスポンス番号「１」に示されるデータとなる。そして、レスポンス番号「１」に示されるレスポンスデータＰ１のうちページ表示時刻である「２０１００８１９１３２０」ｐ１が画面Ｄ１に表示され（ｄ１）、実行要求を促す「ｃｌｉｃｋ」（ｐ２）が画面Ｄ１に表示される（ｄ２）。なお、リクエスト番号「１」のリクエストデータＲ１は、中継装置１Ａのリクエスト記録部２１によってリクエストテーブル３１に記録される。また、レスポンス番号「１」のレスポンスデータＰ１は、中継装置１Ａのレスポンス記録部２４によってレスポンステーブル３２に記録される。
【００４３】
ユーザが画面Ｄ１から「ｃｌｉｃｋ」を押下すると、ウェブブラウザ１Ｂは、実行要求（ｆ２）を送信した後の画面Ｄ２を表示する。ここでは、図７（Ｃ）に示すように、実行要求ｆ２について、ウェブブラウザ１Ｂから中継装置１Ａを介して変更ウェブサーバ（外部）２Ａに送信されたリクエストデータＲ２が、リクエスト番号「２」に示されるデータとなる。また、リクエスト番号「２」のリクエストデータＲ２に対応するレスポンスデータＰ２が、レスポンス番号「２」に示されるデータとなる。リクエスト番号「２」に示されるリクエストデータＲ２には、画面Ｄ１に表示されたページ表示時刻「２０１００８１９１３２０」（ｄ１）がレスポンス番号Ｐ１から引き継がれる（ｒ１）。そして、レスポンス番号「２」に示されるレスポンスデータＰ２には、サービスの結果となる、予定時刻「２０１０年８月１９日１４時００分」とページ表示時刻との差を示す「予定時刻まで後４０分です」ｐ３が画面Ｄ２に表示される（ｄ３）。なお、リクエスト番号「２」のリクエストデータＲ２は、中継装置１Ａのリクエスト記録部２１によってリクエストテーブル３１に記録される。また、レスポンス番号「２」のレスポンスデータＰ２は、中継装置１Ａのレスポンス記録部２４によってレスポンステーブル３２に記録される。
【００４４】
同様に、ユーザが画面Ｄ２から「ｃｌｉｃｋ」を押下すると、ウェブブラウザ１Ｂは、実行要求に関して、中継装置１Ａを介して変更前ウェブサーバ２Ａと通信し、通信結果（レスポンスデータ）に基づいてサービスの結果を画面に表示する。
【００４５】
その後、ユーザが画面Ｄ２から社外秘データであるデータＡを指定するものとする。すると、ウェブブラウザ１Ｂは、社外秘データが指定されたリクエストを中継装置１Ａに送信する。そして、中継装置１Ａのアプリ移動部２５は、社外秘データが指定されたリクエストを取得し、ウェブサーバを変更前ウェブサーバ２Ａから変更先ウェブサーバ３Ａに変更する。
【００４６】
ウェブサーバが変更された後、ユーザが画面Ｄ２から「ｃｌｉｃｋ」を押下すると、ウェブブラウザ１Ｂは、実行要求（ｆ３）に関して、中継装置１Ａを介して変更先ウェブサーバ３Ａと通信することとなる。そして、ウェブブラウザ１Ｂは、通信結果（レスポンスデータ）に基づいてサービスの結果を画面Ｄ３に表示する。ここでは、ウェブブラウザ１Ｂは、レスポンスデータに基づいて、予定時刻とページ表示時刻「２０１００８１９１３２６」との差である「予定時刻まで後３４分です」を表示する。ウェブサーバが変更された後の中継装置１Ａと変更先ウェブサーバ３Ａとの間の通信処理の具体例について、以下に説明する。
【００４７】
まず、再現リクエスト生成部２８は、リクエストテーブル３１からリクエスト番号「１」のリクエストデータを取得し、取得したリクエストデータに含まれるホスト名を変更先ウェブサーバ３Ａのホスト名に置換し、再現リクエストデータを生成する。そして、再現リクエスト生成部２８は、再現リクエスト送信部２９を介して変更先ウェブサーバ３Ａに再現リクエストデータを送信する。そして、レスポンス比較部２７は、変更先ウェブサーバ３Ａから送信された再現レスポンスデータを、再現レスポンス記録部２６を介して取得し、レスポンス比較処理を行う。ここでは、再現レスポンスデータのレスポンス番号は、リクエスト番号「１」のリクエストデータに対応するレスポンスであるので「１」となる。レスポンス比較処理では、ウェブサーバの変更前後のレスポンス番号「１」のレスポンスデータを比較することとなる。
【００４８】
レスポンス比較処理について、図８を参照して説明する。図８に示すように、図８（Ａ）は、変更前のレスポンス番号「１」のレスポンスデータのＤＯＭ（Ｍ１）を示し、図８（Ｂ）は、変更後のレスポンス番号「１」のレスポンスデータ（再現レスポンスデータ）のＤＯＭ（Ｍ２）を示す。
【００４９】
レスポンス比較部２７は、変更前後のレスポンスデータのＤＯＭ（Ｍ１、Ｍ２）を比較し、相違する値を抽出する。ここでは、「／ＨＴＭＬ／ｂｏｄｙ／ＤＩＶ［１］」のＸＰａｔｈ（ｘ１）の値が相違する。すなわち、変更前のレスポンスデータでは、「２０１００８１９１３２０」（ｐ１）となり、変更後のレスポンスデータでは、「２０１００８１９１３２６」（ｐ４）となっている。そして、レスポンス比較部２７は、レスポンス番号「１」、ＸＰａｔｈ「／ＨＴＭＬ／ｂｏｄｙ／ＤＩＶ［１］」、変更前値「２０１００８１９１３２０」および変更後値「２０１００８１９１３２６」を対応付けてレスポンス相違テーブル３４に記録する。そして、中継装置１Ａの再現リクエスト生成部２８では、レスポンス番号「１」の再現レスポンスデータに後続するリクエスト番号「２」の再現リクエストデータを生成することとなる。
【００５０】
再現リクエスト生成処理について、図９を参照して説明する。図９に示すように、図９（Ａ）は、リクエスト番号が「２」の（変更前の）リクエストデータを示し、図９（Ｂ）は、レスポンス番号が「１」の相違データを示し、図９（Ｃ）は、リクエスト番号が「２」の（変更後の）再現リクエストデータを示す。なお、（変更前の）リクエストデータはリクエストテーブル３１に記憶され、相違データはレスポンス相違テーブル３４に記憶されている。
【００５１】
再現リクエスト生成部２８は、リクエストテーブル３１からリクエスト番号が「２」のリクエストデータを取得する。図９（Ａ）に示すように、リクエスト番号が「２」のリクエストデータには、パラメータとして「２０１００８１９１３２０」ｒ１が設定されている。
【００５２】
再現リクエスト生成部２８は、レスポンス相違テーブル３４からレスポンス番号が「１」のレスポンスデータを取得する。図９（Ｂ）に示すように、レスポンス番号が「１」のレスポンスデータには、変更前値として「２０１００８１９１３２０」ｐ１が設定され、変更後値として「２０１００８１９１３２６」ｐ４が設定されている。
【００５３】
再現リクエスト生成部２８は、レスポンス相違テーブル３４から取得した相違する値のうち変更前値が後続する（変更前の）リクエストデータのパラメータに含まれているか否かを判定する。すなわち、再現リクエスト生成部２８は、相違する値のうち変更前のレスポンスデータに係る値がこのレスポンスに後続するリクエストデータに含まれていたか否かを判定する。ここでは、再現リクエスト生成部２８は、レスポンス番号「１」の相違する値のうち変更前の値である「２０１００８１９１３２０」ｐ１が後続するリクエスト番号「２」のリクエストデータのパラメータｒ１に含まれていると判定する。そして、再現リクエスト生成部２８は、リクエスト番号が「２」のリクエストデータのパラメータを、相違する値のうち変更後のレスポンスデータに係る値ｐ４に置換する。図９（Ｃ）に示すように、再現リクエスト生成部２８は、リクエスト番号が「２」のリクエストデータのパラメータを、レスポンス番号が「１」の変更後の値ｐ４に置換したリクエストデータを生成する。この結果、生成されたリクエストデータのパラメータは、「２０１００８１９１３２６」ｒ２となる。
【００５４】
そして、再現リクエスト生成部２８は、生成されたリクエストデータに含まれるホスト名を変更先ウェブサーバ３Ａのホスト名に置換し、再現リクエストデータを生成して、再現リクエスト送信部２９を介して変更先ウェブサーバ３Ａに送信する。そして、中継装置１Ａは、再現リクエストデータに対する再現レスポンスデータを変更先ウェブサーバ３Ａから受信し、受信した再現レスポンスデータがサービスに関して最終である場合、当該再現レスポンスデータをウェブブラウザ１Ｂに送信する。ウェブブラウザ１Ｂでは、レスポンスデータに基づいてサービスの結果を画面Ｄ３（図７）に表示することになる。
【００５５】
［実施例２に係る中継処理の手順］
次に、実施例２に係る中継処理の手順を、図１０を参照して説明する。図１０は、実施例２に係る中継処理の手順を示すフローチャートである。
【００５６】
まず、リクエスト記録部２１は、ウェブブラウザ１Ｂからサービスに関わるウェブアプリケーションの起動要求があったか否かを判定する（ステップＳ１１）。そして、ウェブアプリケーションの起動要求がなかったと判定された場合には（ステップＳ１１；Ｎｏ）、リクエスト記録部２１は、当該起動要求を待つべく、ステップＳ１１に移行する。一方、ウェブアプリケーションの起動要求があったと判定された場合には（ステップＳ１１；Ｙｅｓ）、リクエスト記録部２１は、ウェブブラウザ１Ｂからの要求に関するリクエストデータをリクエストテーブル３１に記録する（ステップＳ１２）。そして、リクエスト送信部２２は、ウェブブラウザ１Ｂからの要求に関するリクエストデータを変更前ウェブサーバ２Ａに送信する（ステップＳ１３）。
【００５７】
引き続き、レスポンス記録部２４は、変更前ウェブサーバ２Ａから送信された、リクエストデータに対応するレスポンスデータをレスポンステーブル３２に記録する（ステップＳ１４）。そして、レスポンス送信部２３は、変更前ウェブサーバ２Ａから送信されたリクエストデータをウェブブラウザ１Ｂに送信する（ステップＳ１５）。
【００５８】
引き続き、リクエスト記録部２１は、ウェブブラウザ１Ｂから社外秘データが指定されたか否かを判定する（ステップＳ１６）。社外秘データが指定されていないと判定された場合には（ステップＳ１６；Ｎｏ）、リクエスト記録部２１は、ステップＳ１２に移行する。
【００５９】
一方、社外秘データが指定されたと判定された場合には（ステップＳ１６；Ｙｅｓ）、アプリ移動部２５は、サービスを実行中の変更前ウェブサーバ２Ａから変更先ウェブサーバ３Ａに、サービスを実行するウェブサーバを変更する（ステップＳ１７）。例えば、アプリ移動部２５は、サービスを実行中の変更前ウェブサーバ２Ａに、当該サービスを実行するウェブアプリケーションの転送要求を送信する。そして、アプリ移動部２５は、変更前ウェブサーバ２Ａから転送要求に対応したウェブアプリケーションを取得し、取得したウェブアプリケーションを変更先ウェブサーバ３Ａにデプロイする。
【００６０】
引き続き、再現リクエスト生成部２８は、サービスを継続させるべく、当該サービスに関する再現リクエスト生成処理を行う（ステップＳ１８）。そして、再現リクエスト送信部２９は、再現リクエスト生成部２８によって生成された再現リクエストデータを変更先ウェブサーバ３Ａに送信する（ステップＳ１９）。そして、再現レスポンス記録部２６は、変更先ウェブサーバ３Ａから送信された再現レスポンスデータを受信する（ステップＳ２０）。
【００６１】
そして、再現レスポンス記録部２６は、受信した再現レスポンスデータがサービスに関して最終であるか否かを判定する（ステップＳ２１）。例えば、予めサービスに関する最終のレスポンス番号を記憶部３０に記録しておき、再現レスポンス記録部２６は、受信した再現レスポンスデータのレスポンス番号が予め記憶部３０に記録された最終のレスポンス番号と一致するか否かを判定するようにしても良い。
【００６２】
再現レスポンスデータがサービスに関して最終でないと判定された場合には（ステップＳ２１；Ｎｏ）、レスポンス比較部２７は、当該再現レスポンスデータと、変更前のレスポンスデータとを比較するレスポンス比較処理を行う（ステップＳ２２）。そして、レスポンス比較部２７は、レスポンス比較処理の完了通知を再現リクエスト生成部２８に出力し、ステップＳ１８に移行する。
【００６３】
一方、再現レスポンスデータがサービスに関して最終であると判定された場合には（ステップＳ２１；Ｙｅｓ）、再現レスポンス記録部２６は、受信した再現レスポンスデータをウェブブラウザ１Ｂに送信して、中継処理を終了する。
【００６４】
［再現リクエスト生成処理の手順］
次に、再現リクエスト生成処理の手順を、図１１を参照して説明する。図１１は、再現リクエスト生成処理の手順を示すフローチャートである。
【００６５】
再現リクエスト生成部２８は、アプリ移動部２５によるウェブサーバの変更通知またはレスポンス比較部２７によるレスポンス比較処理の完了通知を取得すると、リクエストテーブル３１から該当リクエストデータを取得する（ステップＳ３１）。具体的には、再現リクエスト生成部２８は、アプリ起動部２５によるウェブサーバの変更通知を取得すると、リクエストテーブル３１から処理順序が最も早いリクエストデータを取得する。また、再現リクエスト生成部２８は、レスポンス比較部２７によるレスポンス比較処理の完了通知を取得すると、レスポンス比較処理の対象となったレスポンス番号の後続する番号となるリクエストデータをリクエストテーブル３１から取得する。
【００６６】
そして、再現リクエスト生成部２８は、取得したリクエストデータのリクエスト番号が最も早い処理順序を示す「１」であるか否かを判定する（ステップＳ３２）。リクエスト番号が「１」であると判定された場合には（ステップＳ３２；Ｙｅｓ）、再現リクエスト生成部２８は、ステップＳ３６に移行する。
【００６７】
一方、リクエスト番号が「１」でないと判定された場合には（ステップＳ３２；Ｎｏ）、再現リクエスト生成部２８は、レスポンス相違テーブル３４から、リクエスト番号―１の番号を持つレスポンスの相違データを取得する（ステップＳ３３）。そして、再現リクエスト生成部２８は、取得した相違データのうち変更前の値が変更前のリクエストデータのパラメータに含まれるか否かを判定する（ステップＳ３４）。変更前の値が変更前のリクエストデータのパラメータに含まれると判定された場合には（ステップＳ３４；Ｙｅｓ）、再現リクエスト生成部２８は、変更前のリクエストデータのパラメータを変更後の相違データに置換する（ステップＳ３５）。そして、再現リクエスト生成部２８は、ステップＳ３６に移行する。一方、変更前の値が変更前のリクエストデータのパラメータに含まれないと判定された場合には（ステップＳ３４；Ｎｏ）、再現リクエスト生成部２８は、ステップＳ３６に移行する。
【００６８】
引き続き、再現リクエスト生成部２８は、リクエストデータに含まれるホスト名を変更先ウェブサーバ３Ａのホスト名に置換し、再現リクエストデータを生成する（ステップＳ３６）。そして、再現リクエスト生成部２８は、再現リクエストデータを再現リクエストテーブル３３に記録する（ステップＳ３７）。
【００６９】
［レスポンス比較処理の手順］
次に、レスポンス比較処理の手順を、図１２を参照して説明する。図１２は、レスポンス比較処理の手順を示すフローチャートである。
【００７０】
レスポンス比較部２７は、再現レスポンス記録部２６から再現レスポンスデータのレスポンス番号を取得すると、レスポンステーブル３２と再現レスポンステーブル３５から、当該レスポンス番号が同じレスポンスデータを取得する（ステップＳ４１）。そして、レスポンス比較部２７は、取得した両方のレスポンスデータのＤＯＭを作成する（ステップＳ４２）。
【００７１】
引き続き、レスポンス比較部２７は、作成した両方のレスポンスデータのＤＯＭを比較し、値が異なるＸＰａｔｈを抽出する（ステップＳ４３）。そして、レスポンス比較部２７は、レスポンス相違テーブル３４に、レスポンス番号、ＸＰａｔｈ、レスポンスデータの相違値および再現レスポンスデータの相違値を記録する（ステップＳ４４）。
【００７２】
そして、レスポンス比較部２７は、抽出したＸＰａｔｈの数だけ繰り返したか否かを判定する（ステップＳ４５）。抽出したＸＰａｔｈの数だけ繰り返していないと判定された場合には（ステップＳ４５；Ｎｏ）、レスポンス比較部２７は、抽出したＸＰａｔｈの中から未だ選択していないＸＰａｔｈを選択し、ステップＳ４４に移行する。一方、抽出したＸＰａｔｈの数だけ繰り返したと判定された場合には（ステップＳ４５；Ｙｅｓ）、レスポンス比較部２７は、レスポンス比較処理を終了する。
【００７３】
［実施例２の効果］
上記実施例２によれば、リクエストテーブル３１は、変更前ウェブサーバ２Ａへのリクエストを処理順序の識別情報と関連付けて記憶する。レスポンステーブル３２は、リクエストに対応する変更前ウェブサーバ２Ａからのレスポンスを処理順序の識別情報と関連付けて記憶する。中継装置１Ａは、社外秘データが指定されたリクエストデータを受け付け、リクエストテーブル３１を参照し、識別情報で識別される処理順序に応じてリクエストを取得する。そして、中継装置１Ａは、該取得したリクエストに含まれるホスト名を変更先ウェブサーバ３Ａのホスト名に変更して送信する。さらに、中継装置１Ａは、該送信したリクエストに基づくレスポンスを受信する。そして、中継装置１Ａは、該受信したレスポンスと、レスポンステーブル３２に記憶されたレスポンスとを比較して、異なる値を抽出する。そして、中継装置１Ａは、該抽出した値のうちレスポンステーブル３２に記憶されたレスポンスに含まれる値が、識別情報で識別される処理順序が当該レスポンスの直後のリクエストのパラメータに含まれるか否かを判定する。そして、中継装置１Ａは、該判定の結果、含まれると判定した場合に、含まれると判定したリクエストのパラメータに、抽出した値のうち該受信したレスポンスに含まれる値を設定してリクエストを生成する。そして、中継装置１Ａは、該生成したリクエストに含まれるホスト名を変更先ウェブサーバ３Ａのホスト名に変更して送信する。
【００７４】
かかる構成によれば、中継装置１Ａは、変更前ウェブサーバ２Ａへのリクエストを処理順序と関連付けて記憶し、社外秘データが指定されたリクエストデータを受け付けた後、記憶したリクエストを処理順序に応じて変更先ウェブサーバ３Ａに送信することとした。このため、中継装置１Ａは、社外秘データが指定されたリクエストデータを受け付けた後であっても、ウェブブラウザ１Ｂから変更先の変更先ウェブサーバ３Ａに対して、最初から入力し直すことなしに、シームレスに実行を継続することが可能となる。例えば、外部クラウド上でサービスを利用している際に、途中でオンプレミス環境下のウェブサーバへウェブサーバを変更した場合であっても、中継装置１Ａは、シームレスに当該サービスを継続することができる。
【００７５】
また、中継装置１Ａは、社外秘データが指定されたリクエストデータを受け付けた後、変更前後の値が異なるレスポンスの直後のリクエストのパラメータに変更前の値が含まれる場合には、当該リクエストのパラメータに変更後の値を設定することとした。このため、中継装置１Ａは、ウェブサーバを変更した場合であっても、動的に変化するパラメータを自動的に設定することが可能となる。例えば、中継装置１Ａは、ウェブサーバを変更した場合であっても、Java（登録商標）Scriptで動的に生成されるパラメータを自動的に設定することができる。この結果、中継装置１Ａは、変更先の変更先ウェブサーバ３Ａでサービスを正常に動作させることができ、当該サービスをシームレスに継続させることができる。
【００７６】
なお、変更前ウェブサーバ２Ａは、例えばクラウド環境のウェブサーバを指すものとして説明した。しかしながら、変更前ウェブサーバ２Ａは、ウェブサービスを提供可能なウェブサーバであればこれに限定されるものではない。
【００７７】
また、ウェブブラウザ１Ｂと中継装置１Ａと変更先ウェブサーバ３Ａとの接続形態は、
例えば社内ＬＡＮであったり、社内におけるイントラネットであったりするものとして説明した。しかしながら、この接続形態は、社内に限らず、ＨＴＴＰプロトコルで通信するネットワークであればこれらに限定されるものではない。
【００７８】
また、アプリ移動部２５は、変更前ウェブサーバ２Ａによるサービスの実行中に、社外秘データが指定されたリクエストデータを受け付け、ウェブサーバを変更前ウェブサーバ２Ａから変更先ウェブサーバ３Ａに変更するものとして説明した。しかしながら、アプリ移動部２５は、社外秘データが指定されたリクエストデータに基づきサービスを実行するウェブサーバを変更する場合に限定されず、ホットスタンバイやコールドスタンバイ等のように事前に冗長構成を採っている装置を変更する場合にウェブサーバを変更前ウェブサーバ２Ａから変更先ウェブサーバ３Ａに変更しても良い。この場合、アプリ移動部２５は、例えば変更前ウェブサーバ２Ａの動作状況を監視し、予め定められた負荷分散条件に合致する動作状況となった場合に負荷分散の必要性を検出し、または、予め定められた異常検出条件に合致する動作状況となった場合に一方の装置の異常の発生を検出し、この検出に基づき、実行する装置を変更する。このとき、アプリ移動部２５は、実行する装置によって実施されるアプリケーションをデプロイすれば良い。
【００７９】
［プログラム等］
なお、中継装置１Ａは、既知のパーソナルコンピュータ、ワークステーション等の情報処理装置に、上記したレスポンス比較部２７および再現リクエスト生成部２８等の各機能を搭載することによって実現することができる。
【００８０】
また、図示した各装置の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的態様は図示のものに限られず、その全部または一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、リクエスト記録部２１とリクエスト送信部２２とを１個の部として統合しても良いし、レスポンス送信部２３とレスポンス記録部２４とを１個の部として統合しても良い。一方、再現リクエスト生成部２８を、処理順序が最も早いリクエストデータを生成する第１のリクエスト生成部と処理順序がそれ以降のリクエストデータを生成する第２のリクエスト生成部とに分散しても良い。また、リクエストテーブル３１やレスポンステーブル３２等の記憶部を中継装置１Ａの外部装置としてネットワーク経由で接続するようにしても良い。
【００８１】
また、上記実施例で説明した各種の処理は、予め用意されたプログラムをパーソナルコンピュータやワークステーション等のコンピュータで実行することによって実現することができる。そこで、以下では、図１３を用いて、図２に示した中継装置１Ａの制御部２０と同様の機能を有する中継プログラムを実行するコンピュータの一例を説明する。
【００８２】
図１３は、中継プログラムを実行するコンピュータを示す図である。図１３に示すように、コンピュータ１０００は、ＲＡＭ１０１０と、ネットワークインタフェース装置１０２０と、ＨＤＤ１０３０と、ＣＰＵ１０４０、媒体読取装置１０５０およびバス１０６０とを有する。ＲＡＭ１０１０、ネットワークインタフェース装置１０２０、ＨＤＤ１０３０、ＣＰＵ１０４０、媒体読取装置１０５０は、バス１０６０によって接続されている。
【００８３】
そして、ＨＤＤ１０３０には、図２に示した制御部２０と同様の機能を有する中継プログラム１０３１が記憶される。また、ＨＤＤ１０３０には、図２に示したリクエストテーブル３１、レスポンステーブル３２、再現リクエストテーブル３３、レスポンス相違テーブル３４および再現レスポンステーブル３５に対応する中継処理関連情報１０３２が記憶される。
【００８４】
そして、ＣＰＵ１０４０が中継プログラム１０３１をＨＤＤ１０３０から読み出してＲＡＭ１０１０に展開することにより、中継プログラム１０３１は、中継プロセス１０１１として機能するようになる。そして、中継プロセス１０１１は、中継処理関連情報１０３２から読み出した情報等を適宜ＲＡＭ１０１０上の自身に割り当てられた領域に展開し、この展開したデータ等に基づいて各種データ処理を実行する。
【００８５】
媒体読取装置１０５０は、中継プログラム１０３１がＨＤＤ１０３０に記憶されていない場合であっても、中継プログラム１０３１を記憶する媒体等から中継プログラム１０３１を読み取る。媒体読取装置１０５０には、例えばＣＤ−ＲＯＭや光ディスク装置がある。
【００８６】
ネットワークインタフェース装置１０２０は、外部装置とネットワーク経由で接続する装置であり、有線に対応するものであっても、無線に対応するものであっても良い。
【００８７】
なお、上記の中継プログラム１０３１は、公衆回線、インターネット、ＬＡＮ、ＷＡＮ（Wide  Area  Network）等を介してコンピュータ１０００に接続される他のコンピュータ（またはサーバ）等に記憶されるようにしても良い。この場合には、コンピュータ１０００がネットワークインタフェース装置１０２０を介して他のコンピュータ等から中継プログラム１０３１を読み出して実行する。
【符号の説明】
【００８８】
１  情報処理装置
１Ａ  中継装置
２、２Ａ  変更前ウェブサーバ
３、３Ａ  変更先ウェブサーバ
１１  記憶部
１２  レスポンス比較部
１３  リクエスト生成部
１４  送信部
１９、１Ｂ  ウェブブラウザ
２０  制御部
２１  リクエスト記録部
２２  リクエスト送信部
２３  レスポンス送信部
２４  レスポンス記録部
２５  アプリ移動部
２６  再現レスポンス記録部
２７  レスポンス比較部
２８  再現リクエスト生成部
２９  再現リクエスト送信部
３０  記憶部
３１  リクエストテーブル
３２  レスポンステーブル
３３  再現リクエストテーブル
３４  レスポンス相違テーブル
３５  再現レスポンステーブル
【図１】
0005549522.tif 000002
【図２】
0005549522.tif 000003
【図３】
0005549522.tif 000004
【図４】
0005549522.tif 000005
【図５】
0005549522.tif 000006
【図６】
0005549522.tif 000007
【図７】
0005549522.tif 000008
【図８】
0005549522.tif 000009
【図９】
0005549522.tif 000010
【図１０】
0005549522.tif 000011
【図１１】
0005549522.tif 000012
【図１２】
0005549522.tif 000013
【図１３】
0005549522.tif 000014
【図１４】
0005549522.tif 000015