(57)【要約】【課題】ファイルデータのアップロード処理において、受信側であるＷｅｂサーバーを多ホスト化して負荷分散を行い、高速アップロード化を図ることができる分散Ｗｅｂアップロードシステムを提供する。【解決手段】分散Ｗｅｂアップロードシステムにおいて、親サーバー２に対して、分割ファイルを送付する子サーバー３の一覧を要求する子サーバー一覧要求処理部５、および子サーバー３の一覧に基づいて、ファイルを分割し、複数の子サーバー３に送付するファイル分割・子サーバー送付処理部６を有するブラウザ１と、子サーバー一覧要求処理部５からのリクエストに基づいて、ブラウザ１に子サーバー３の一覧をレスポンス返答し、複数の子サーバー３に対して、セッション開始を指示する子サーバー一覧返答処理部９を有する親サーバー２と、ブラウザ１から送付された分割ファイルを受信する分割ファイル受信処理部１５を有する子サーバー３とを備えた。【選択図】図１
2015090511.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータ上で動作するブラウザ、親サーバー、および複数の子サーバーを備え、前記ブラウザから前記複数の子サーバーに分散してファイルのアップロード処理を行う分散Ｗｅｂアップロードシステムであって、
前記ブラウザは、前記複数の子サーバーに対して、前記ファイルを分割した分割ファイルを送付し、
前記親サーバーは、前記ブラウザからのリクエストに応答し、前記複数の子サーバーのセッション開始を指示し、前記複数の子サーバーの前記分割ファイルの受信状態を管理し、
前記複数の子サーバーは、それぞれ、前記ブラウザからの前記分割ファイルに関するリクエストに応答し、前記分割ファイルを受信する、
分散Ｗｅｂアップロードシステム。
【請求項２】
請求項１に記載の分散Ｗｅｂアップロードシステムにおいて、
前記ブラウザは、前記親サーバーに対して、前記分割ファイルを送付する前記子サーバーの一覧を要求する子サーバー一覧要求処理部、および前記子サーバーの一覧に基づいて、前記ファイルを分割し、前記複数の子サーバーに送付するファイル分割・子サーバー送付処理部を有し、
前記親サーバーは、前記子サーバー一覧要求処理部からのリクエストに基づいて、前記ブラウザに前記子サーバーの一覧をレスポンス返答し、前記複数の子サーバーに対して、セッション開始を指示する子サーバー一覧返答処理部を有し、
前記子サーバーは、前記ブラウザから送付された前記分割ファイルを受信する分割ファイル受信処理部を有する、
分散Ｗｅｂアップロードシステム。
【請求項３】
請求項２に記載の分散Ｗｅｂアップロードシステムにおいて、
前記親サーバーは、前記複数の子サーバーの前記分割ファイル受信処理部からのファイル受信シグナルを受信し、前記ファイル受信シグナルに基づいて、全ての前記分割ファイルの受信が完了したと判断した場合に、前記複数の子サーバーに対して、ファイル受信完了シグナルを送付するファイル受信シグナル処理部を有する、
分散Ｗｅｂアップロードシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、Ｗｅｂシステム環境における分散Ｗｅｂアップロードシステムに関し、特に、ブラウザとＷｅｂサーバー間のＨＴＴＰプロトコル通信に関するものである。
【背景技術】
【０００２】
従来の技術では、Ｗｅｂシステム環境での高速化を図るため、主に特開２００２−２８８０３３号公報（特許文献１）に記載のような方法が用いられている。
【０００３】
特許文献１に記載のものは、ネットワーク経由でクライアントから要求されたデータの登録・更新・削除等の操作結果が反映されたＨＴＭＬページ等のＷｅｂページを、クライアントからの表示要求に対応して、Ｗｅｂサーバー側から効率的に送信するものである。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００２−２８８０３３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
一般的に、Ｗｅｂシステム環境での高速化を図ろうとした場合、サーバーの冗長化やネットワーク速度の向上などが解決策として挙げられる。他にもアプリケーション層での処理速度向上に着眼した特許文献１のような方法が考案されているが、次の問題点がある。
【０００６】
特許文献１に記載の方法では、Ｗｅｂサーバー側の動的ページ生成に関する処理時間の短縮を着眼点としているため、ブラウザからのファイルアップロード時の速度向上には寄与しない。
【０００７】
このように、従来技術による解決手段では、ブラウザからのファイルアップロード時に効果を発揮できないという課題があった。
【０００８】
本発明の目的は、ファイルデータのアップロード処理において、受信側であるＷｅｂサーバーを多ホスト化して負荷分散を行い、高速アップロード化を図ることができる分散Ｗｅｂアップロードシステムを提供することにある。
【０００９】
本発明の前記ならびにその他の目的と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１０】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、次の通りである。
【００１１】
すなわち、代表的なものの概要は、コンピュータ上で動作するブラウザ、親サーバー、および複数の子サーバーを備え、ブラウザから複数の子サーバーに分散してファイルのアップロード処理を行う分散Ｗｅｂアップロードシステムであって、ブラウザは、複数の子サーバーに対して、ファイルを分割した分割ファイルを送付し、親サーバーは、ブラウザからのリクエストに応答し、複数の子サーバーのセッション開始を指示し、複数の子サーバーの分割ファイルの受信状態を管理し、複数の子サーバーは、それぞれ、ブラウザからの分割ファイルに関するリクエストに応答し、分割ファイルを受信するものである。
【発明の効果】
【００１２】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば以下の通りである。
【００１３】
すなわち、Ｗｅｂ上でのアップロード処理の高速化を実現することができる。特に、Ｗｅｂサーバー側のネットワーク処理速度がボトルネックとなる環境において効果がある。
【図面の簡単な説明】
【００１４】
【図１】本発明の一実施の形態に係る分散Ｗｅｂアップロードシステムの構成を示す構成図である。
【図２】本発明の一実施の形態に係る分散Ｗｅｂアップロードシステムで使用される子サーバー送信状態一覧テーブルの構成を示す図である。
【図３】本発明の一実施の形態に係る分散Ｗｅｂアップロードシステムで使用される分割ファイル一覧テーブルの構成を示す図である。
【図４】本発明の一実施の形態に係る分散Ｗｅｂアップロードシステムで使用されるセッション一覧テーブル（親サーバー用）の構成を示す図である。
【図５】本発明の一実施の形態に係る分散Ｗｅｂアップロードシステムで使用される転送中一覧テーブルの構成を示す図である。
【図６】本発明の一実施の形態に係る分散Ｗｅｂアップロードシステムで使用されるセッション一覧テーブル（子サーバー用）の構成を示す図である。
【図７】本発明の一実施の形態に係る分散Ｗｅｂアップロードシステムの全体動作を説明するための説明図である。
【図８】本発明の一実施の形態に係る分散Ｗｅｂアップロードシステムの子サーバー一覧要求処理部の動作を示すフローチャートである。
【図９】本発明の一実施の形態に係る分散Ｗｅｂアップロードシステムの子サーバー一覧返答処理部の動作を示すフローチャート（その１）である。
【図１０】本発明の一実施の形態に係る分散Ｗｅｂアップロードシステムの子サーバー一覧返答処理部の動作を示すフローチャート（その２）である。
【図１１】本発明の一実施の形態に係る分散Ｗｅｂアップロードシステムのセッション開始処理部の動作を示すフローチャートである。
【図１２】本発明の一実施の形態に係る分散Ｗｅｂアップロードシステムのファイル分割・子サーバー送付処理部の動作を示すフローチャート（その１）である。
【図１３】本発明の一実施の形態に係る分散Ｗｅｂアップロードシステムのファイル分割・子サーバー送付処理部の動作を示すフローチャート（その２）である。
【図１４】本発明の一実施の形態に係る分散Ｗｅｂアップロードシステムのファイル分割・子サーバー送付処理部の動作を示すフローチャート（その３）である。
【図１５】本発明の一実施の形態に係る分散Ｗｅｂアップロードシステムのファイル分割・子サーバー送付処理部の動作を示すフローチャート（その４）である。
【図１６】本発明の一実施の形態に係る分散Ｗｅｂアップロードシステムの分割ファイル受信処理部の動作を示すフローチャートである。
【図１７】本発明の一実施の形態に係る分散Ｗｅｂアップロードシステムのファイル受信シグナル処理部の動作を示すフローチャート（その１）である。
【図１８】本発明の一実施の形態に係る分散Ｗｅｂアップロードシステムのファイル受信シグナル処理部の動作を示すフローチャート（その２）である。
【図１９】本発明の一実施の形態に係る分散Ｗｅｂアップロードシステムのファイル受信シグナル処理部の動作を示すフローチャート（その３）である。
【図２０】本発明の一実施の形態に係る分散Ｗｅｂアップロードシステムのファイル受信完了シグナル処理部の動作を示すフローチャートである。
【図２１】本発明の一実施の形態に係る分散ＷｅｂアップロードシステムのＷｅｂ応答・クローズ処理部の動作を示すフローチャートである。
【発明を実施するための形態】
【００１５】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一の部材には原則として同一の符号を付し、その繰り返しの説明は省略する。
【００１６】
＜分散Ｗｅｂアップロードシステムの構成＞
図１により、本発明の一実施の形態に係る分散Ｗｅｂアップロードシステムの構成について説明する。図１は本発明の一実施の形態に係る分散Ｗｅｂアップロードシステムの構成を示す構成図である。
【００１７】
図１において、分散Ｗｅｂアップロードシステムは、コンピュータ上で動作するブラウザ１、親サーバー２、およびＮ台の子サーバー３から構成され、ブラウザ１、親サーバー２、および子サーバー３はインターネット／イントラネット４を介して接続されている。子サーバー３は任意の台数で構成してよい。ブラウザ１、親サーバー２、およびＮ台の子サーバー３は、インターネット／イントラネット４を介して処理を行う。
【００１８】
親サーバー２と各子サーバー３は、一般的なＷｅｂサーバーの機能を提供するが、加えて、本実施の形態の分散Ｗｅｂアップロードシステムでは、親サーバー２はブラウザ１からのＨＴＴＰリクエストの統制機能を提供し、各子サーバー３は個々のＨＴＴＰリクエストを受信・応答する機能を提供する。
【００１９】
ブラウザ１は、子サーバー一覧要求処理部５、およびファイル分割・子サーバー送付処理部６を有し、子サーバー送信状態一覧テーブル７、および分割ファイル一覧テーブル８の２つのデータベーステーブルを有する。
【００２０】
親サーバー２は、子サーバー一覧返答処理部９、ファイル受信シグナル処理部１０、およびＷｅｂ応答・クローズ処理部１１を有し、セッション一覧テーブル（親サーバー用）１２、および転送中一覧テーブル１３の２つのデータベーステーブルを有する。
【００２１】
子サーバー３は、セッション開始処理部１４、分割ファイル受信処理部１５、およびファイル受信完了シグナル処理部１６を有し、セッション一覧テーブル（子サーバー用）１７の１つのデータベーステーブルを有する。Ｎ台の各子サーバー３は、全て同じ構成である。
【００２２】
＜データベーステーブルの構成＞
次に、図２〜図６により、本発明の一実施の形態に係る分散Ｗｅｂアップロードシステムで使用されるデータベーステーブルの構成について説明する。図２〜図５は本発明の一実施の形態に係る分散Ｗｅｂアップロードシステムで使用されるデータベーステーブルの構成を示す図であり、図２は子サーバー送信状態一覧テーブル７、図３は分割ファイル一覧テーブル８、図４はセッション一覧テーブル（親サーバー用）１２、図５は転送中一覧テーブル１３、図６はセッション一覧テーブル（子サーバー用）１７を示している。
【００２３】
子サーバー送信状態一覧テーブル７は、図２（ａ）に示すように、例えば、セッションキー、子サーバーホスト名、および状態の項目を有する。セッションキーは、セッションを特定するキー、子サーバーホスト名は、ＦＱＤＮ形式の子サーバーのホスト名、状態は、現在この子サーバーに送信しているかどうかの情報であり、未送信または送信中のいずれかの値をとる。
【００２４】
子サーバー送信状態一覧テーブル７のデータ例は、図２（ｂ）に示すように、例えば、セッションキーは「ＡＡＡＡＡＡＡＡ−ＡＡＡＡ−ＡＡＡＡ−０００００００００００００００１」、「ＡＡＡＡＡＡＡＡ−ＡＡＡＡ−ＡＡＡＡ−０００００００００００００００３」、子サーバーホスト名は「ｃｈｉｌｄｒｅｎ１．ｅｘａｍｐｌｅ．ｃｏｍ」、「ｃｈｉｌｄｒｅｎ２．ｅｘａｍｐｌｅ．ｃｏｍ」、「ｃｈｉｌｄｒｅｎ３．ｅｘａｍｐｌｅ．ｃｏｍ」、状態は「未送信」、「送信中」が格納される。
【００２５】
分割ファイル一覧テーブル８は、図３（ａ）に示すように、例えば、セッションキー、分割Ｎｏ．、および状態の項目を有する。セッションキーは、セッションを特定するキー、分割Ｎｏ．は、分割ファイルの先頭から付与するシーケンス番号、状態は、当該分割ファイルの送信完了有無の情報であり、未送信、送信中、または完了のいずれかの値をとる。
【００２６】
分割ファイル一覧テーブル８のデータ例は、図３（ｂ）に示すように、例えば、セッションキーは「ＡＡＡＡＡＡＡＡ−ＡＡＡＡ−ＡＡＡＡ−０００００００００００００００１」、「ＡＡＡＡＡＡＡＡ−ＡＡＡＡ−ＡＡＡＡ−０００００００００００００００３」、分割Ｎｏ．は「１」、「２」、「３」、状態は、「未送信」、「完了」が格納され、状態としては、その他「送信中」の値が格納される。
【００２７】
セッション一覧テーブル（親サーバー用）１２は、図４（ａ）に示すように、例えば、セッションキー、状態、および開始日時の項目を有する。セッションキーは、セッションを特定するキー、状態は、このセッションの状態であり、未完了、または完了のいずれかの値をとる。また、開始日時は、セッションが開始された日時である。
【００２８】
セッション一覧テーブル（親サーバー用）１２のデータ例は、図４（ｂ）に示すように、例えば、セッションキーは「ＡＡＡＡＡＡＡＡ−ＡＡＡＡ−ＡＡＡＡ−０００００００００００００００１」、「ＡＡＡＡＡＡＡＡ−ＡＡＡＡ−ＡＡＡＡ−０００００００００００００００２」、「ＡＡＡＡＡＡＡＡ−ＡＡＡＡ−ＡＡＡＡ−０００００００００００００００３」、状態は「未完了」、「完了」、開始日時は「２０１２／１／２０  １２：３０：４５」、「２０１２／１／１５  ０３：１０：２５」、「２０１２／１／２０  ２２：０５：１０」が格納される。
【００２９】
転送中一覧テーブル１３は、図５（ａ）に示すように、例えば、セッションキー、分割Ｎｏ．、および復元状態の項目を有する。セッションキーは、セッションを特定するキー、分割Ｎｏ．は、分割ファイルの先頭から付与するシーケンス番号、復元状態は、親サーバー上での復元処理の開始状況の情報であり、未処理、処理中、または完了のいずれかの値をとる。
【００３０】
転送中一覧テーブル１３のデータ例は、図５（ｂ）に示すように、例えば、セッションキーは「ＡＡＡＡＡＡＡＡ−ＡＡＡＡ−ＡＡＡＡ−０００００００００００００００１」、「ＡＡＡＡＡＡＡＡ−ＡＡＡＡ−ＡＡＡＡ−０００００００００００００００４」、分割Ｎｏ．は「１」、「１１」、「３４」、状態は、「未処理」、「完了」が格納され、状態としては、その他「処理中」の値が格納される。
【００３１】
セッション一覧テーブル（子サーバー用）１７は、図６（ａ）に示すように、例えば、セッションキー、状態、および開始日時の項目を有する。セッションキーは、セッションを特定するキー、状態は、このセッションの状態であり、未完了、または完了のいずれかの値をとる。また、開始日時は、セッションが開始された日時である。
【００３２】
セッション一覧テーブル（子サーバー用）１７のデータ例は、図６（ｂ）に示すように、例えば、セッションキーは「ＡＡＡＡＡＡＡＡ−ＡＡＡＡ−ＡＡＡＡ−０００００００００００００００１」、「ＡＡＡＡＡＡＡＡ−ＡＡＡＡ−ＡＡＡＡ−０００００００００００００００２」、「ＡＡＡＡＡＡＡＡ−ＡＡＡＡ−ＡＡＡＡ−０００００００００００００００３」、状態は「未完了」、「完了」、開始日時は「２０１２／１／２０  １２：３０：４５」、「２０１２／１／１５  ０３：１０：２５」、「２０１２／１／２０  ２２：０５：１０」が格納される。
【００３３】
＜分散Ｗｅｂアップロードシステムの全体動作＞
次に、図７により、本発明の一実施の形態に係る分散Ｗｅｂアップロードシステムの全体動作について説明する。図７は本発明の一実施の形態に係る分散Ｗｅｂアップロードシステムの全体動作を説明するための説明図であり、送受信データの入出力関係を示し、ブラウザ１、親サーバー２、および子サーバー３が入出力するデータと、行う処理の関連性および順序性を示している。
【００３４】
最初に、ブラウザ１上で、子サーバー一覧要求処理部５による子サーバー一覧の要求処理が実行されると、ＨＴＴＰリクエストデータ（子サーバー一覧要求）２０が、親サーバー２の子サーバー一覧返答処理部９に渡される（ステップＳ１００）。
【００３５】
そして、親サーバー２上で、子サーバー一覧返答処理部９による子サーバー一覧の返答処理が実行されると、ＨＴＴＰレスポンスデータ（子サーバー一覧）２１が、ブラウザ１のファイル分割・子サーバー送付処理部６に渡され（ステップＳ１０１）、同時に、セッション開始シグナル２２が、各子サーバー３のセッション開始処理部１４に渡される（ステップＳ１０２）。
【００３６】
そして、ブラウザ上でファイル分割・子サーバー送付処理部６によるファイル分割と子サーバーへの送付処理が実行されると、複数のスレッドによりＨＴＴＰリクエストデータ（分割ファイル）２３が各子サーバー３の分割ファイル受信処理部１５に渡される（ステップＳ１０３）。
【００３７】
また、各子サーバー３上で分割ファイル受信処理部１５による分割ファイル受信処理が実行されると、ＨＴＴＰレスポンスデータ（分割データ受信完了）２４が、ブラウザ１のファイル分割・子サーバー送付処理部６に渡され（ステップＳ１０４）、同時に、ファイル受信シグナル２５が親サーバー２のファイル受信シグナル処理部１０に渡される（ステップＳ１０５）。
【００３８】
そして、親サーバー２上でファイル受信シグナル処理部１０によるファイル受信シグナルの処理が実行され、全ての分割ファイルの受信が完了したと判断した場合、ファイル受信完了シグナル２６が、各子サーバー３のファイル受信完了シグナル処理部１６に渡される（ステップＳ１０６）。
【００３９】
また、ブラウザ１は、全ての分割ファイルの送信完了後、ファイル分割・子サーバー送付処理部６の判定により、ＨＴＴＰリクエストデータ（本来ＨＴＴＰリクエスト）２７を、Ｗｅｂ応答・クローズ処理部１１に渡す（ステップＳ１０７）。
【００４０】
そして、親サーバー２は、Ｗｅｂ応答・クローズ処理部１１によるＷｅｂ応答とクローズ処理を実行すると、ＨＴＴＰレスポンスデータ（画面描画）２８をブラウザ１に渡す（ステップＳ１０８）。
【００４１】
＜分散Ｗｅｂアップロードシステムの各処理部の動作＞
次に、図８〜図２１により、本発明の一実施の形態に係る分散Ｗｅｂアップロードシステムの各処理部の動作について説明する。図８〜図２１は本発明の一実施の形態に係る分散Ｗｅｂアップロードシステムの各処理部の動作を示すフローチャートであり、図８は子サーバー一覧要求処理部５、図９および図１０は子サーバー一覧返答処理部９、図１１はセッション開始処理部１４、図１２〜図１５はファイル分割・子サーバー送付処理部６、図１６は分割ファイル受信処理部１５、図１７〜図１９はファイル受信シグナル処理部１０、図２０はファイル受信完了シグナル処理部１６、図２１はＷｅｂ応答・クローズ処理部１１の動作を示している。
【００４２】
［子サーバー一覧要求処理部５の動作］
子サーバー一覧要求処理部５による子サーバー一覧の要求処理は、ブラウザ１上での処理である。図８に示すように、まず、ユーザーは、ブラウザ１上でアップロードフォーム画面の送信ボタンを押す（ステップＳ１１０）。そして、ステップＳ１１０でのボタン押下後、ブラウザ１の基本処理であるＨＴＴＰリクエスト解析処理が実行される（ステップＳ１１１）。
【００４３】
その後、送付データのＥｎｃｔｙｐｅが、”ｍｕｌｔｉｐａｒｔ／ｓｐｌｉｔ−ｆｏｒｍｄａｔａ”であるか否かを判定し（ステップＳ１１２）、ステップＳ１１２でＥｎｃｔｙｐｅが、”ｍｕｌｔｉｐａｒｔ／ｓｐｌｉｔ−ｆｏｒｍｄａｔａ”と判定された場合は、ＨＴＴＰリクエストヘッダに”ｐｏｓｔ−ｓｅｒｖｅｒ−ｌｉｓｔ：ｒｅｑｕｉｒｅ”行を追加する（ステップＳ１１３）。
【００４４】
ここで、”ｍｕｌｔｉｐａｒｔ／ｓｐｌｉｔ−ｆｏｒｍｄａｔａ”は、送信フォームが分割アップロード可能であることを示す、本実施の形態で拡張したＨＴＭＬ定義である。同様に、”ｐｏｓｔ−ｓｅｒｖｅｒ−ｌｉｓｔ：ｒｅｑｕｉｒｅ”は、送付するＨＴＴＰリクエストが子サーバーの一覧の返答を求めるものであることを示す、本実施の形態で拡張したヘッダである。
【００４５】
そして、ＨＴＴＰメソッドをＰＯＳＴからＧＥＴに書き換える（ステップＳ１１４）。ステップＳ１１４の処理完了後は、再びブラウザの基本処理であるＨＴＴＰリクエスト発行処理に戻る（ステップＳ１１５）。
【００４６】
また、ステップＳ１１２でＥｎｃｔｙｐｅが、”ｍｕｌｔｉｐａｒｔ／ｓｐｌｉｔ−ｆｏｒｍｄａｔａ”でないと判定された場合は、分割アップロードではないので、ステップＳ１１３およびステップＳ１１４の処理を行わずに、ステップＳ１１５に遷移する。
【００４７】
ステップＳ１１５では、では、ＨＴＴＰリクエストデータ（子サーバー一覧要求）２０を、子サーバー一覧返答処理部９に渡し、子サーバー一覧要求処理部５による子サーバー一覧の要求処理を完了する。
【００４８】
［子サーバー一覧返答処理部９の動作］
子サーバー一覧返答処理部９による子サーバー一覧の返答処理は、子サーバー一覧要求処理部５から受信した子サーバー一覧要求のＨＴＴＰリクエストデータ２０を判定する親サーバー２の処理である。
【００４９】
図９および図１０に示すように、親サーバー２は、まず、子サーバー一覧要求処理部５から受信した子サーバー一覧要求のＨＴＴＰリクエストデータ２０に対して、Ｗｅｂサーバーの基本処理であるＨＴＴＰリクエストデータ受信処理を行う（ステップＳ１２０）。
【００５０】
そして、ＨＴＴＰリクエストヘッダに”ｐｏｓｔ−ｓｅｒｖｅｒ−ｌｉｓｔ：ｒｅｑｕｉｒｅ”が含まれているか否かを判定し（ステップＳ１２１）、ステップＳ１２１で、ＨＴＴＰリクエストヘッダに”ｐｏｓｔ−ｓｅｒｖｅｒ−ｌｉｓｔ：ｒｅｑｕｉｒｅ”が含まれていると判定された場合、親サーバー２内に設定値として保存されている子サーバーホスト名一覧２９を取得する（ステップＳ１２３）。
【００５１】
この後の、ステップＳ１２４〜ステップＳ１２８の処理は、子サーバー３の一覧をブラウザ１に返答する一連の処理である。
【００５２】
まず、ＨＴＴＰレスポンスヘッダ：ｐｏｓｔ−ｓｅｒｖｅｒ−ｌｉｓｔを生成し、ステップＳ１２３で取得した子サーバー名をカンマ区切りで連結したものをその値とし（例：「ｃｈｉｌｄｒｅｎ１．ｅｘａｍｐｌｅ．ｃｏｍ，ｃｈｉｌｄｒｅｎ２．ｅｘａｍｐｌｅ．ｃｏｍ，ｃｈｉｌｄｒｅｎ３．ｅｘａｍｐｌｅ．ｃｏｍ」）、ＨＴＴＰレスポンス一時保持データ３０としてメモリ上に一時保存する。
【００５３】
そして、外部ライブラリであるＵＵＩＤ発番処理（ステップＳ１２５）を利用してＵＵＩＤ発番を行い、これをセッションキーとして定義する（ステップＳ１２６）。ここで、ＵＵＩＤ（Ｕｎｉｖｅｒｓａｌｌｙ  Ｕｎｉｑｕｅ  Ｉｄｅｎｔｉｆｉｅｒ）とは、一般に、一意に特定可能で重複や偶然の一致が起こりえないと確信して用いることができる識別子のことである。本実施の形態において、ＵＵＩＤをセッションキーとして採用している理由は、複数ユーザーからの同時利用において重複が発生しないことが条件であるためである。
【００５４】
そして、ＨＴＴＰレスポンスヘッダとしてｓｅｓｓｉｏｎｉｄを生成し、ステップＳ１２６で発番したセッションキーをその値とし、ＨＴＴＰレスポンス一時保持データ３０として一時保存する（ステップＳ１２７）。
【００５５】
そして、一時保存したＨＴＴＰレスポンス一時保持データ３０を読み込み、Ｗｅｂサーバーの基本処理であるのＨＴＴＰレスポンス処理を行い、ＨＴＴＰレスポンスデータ（子サーバー一覧）２１をブラウザ１に返答し（ステップＳ１２８）、ブラウザ１のファイル分割・子サーバー送付処理部６に引き継ぐ。
【００５６】
そして、ステップＳ１２８のＨＴＴＰレスポンス処理を実行した後、親サーバー２はステップＳ１２６で発番したセッションキーをセッション一覧テーブル（親サーバー用）１２に記録し（ステップＳ１２９）、各子サーバー３に、これからファイルアップロードが始まることを通知するため、発番したセッションキーと共に、セッション開始シグナル２２をセッション開始処理部１４に渡し（ステップＳ１３０）、子サーバー一覧返答処理部９の処理を完了する。
【００５７】
ここで、セッション開始シグナル２２は、これからアップロード処理が開始されることを親サーバーと各子サーバー間で同期を取るための処理開始の合図である。
【００５８】
また、ステップＳ１２１で、ＨＴＴＰリクエストヘッダに”ｐｏｓｔ−ｓｅｒｖｅｒ−ｌｉｓｔ：ｒｅｑｕｉｒｅ”が含まれていないと判定された場合、分割アップロードではないので、Ｗｅｂサーバーの基本処理に従って、ＨＴＴＰレスポンス処理を行うのみである（ステップＳ１２２）。
【００５９】
［セッション開始処理部１４の動作］
セッション開始処理部１４によるセッション開始処理は、子サーバー一覧返答処理部９から受信したセッション開始シグナル２２を処理する子サーバー３の処理である。
【００６０】
図１１に示すように、まず、子サーバー３は、セッション開始シグナル２２を受信すると（ステップＳ１３１）、シグナルに含まれるセッションキーの値をセッション一覧テーブル（子サーバー用）１７に記録して（ステップＳ１３２）、セッション開始処理部１４の処理を完了する。データ保存後は、分割ファイル受信まで待機状態になる。
【００６１】
［ファイル分割・子サーバー送付処理部６の動作］
ファイル分割・子サーバー送付処理部６によるファイル分割と子サーバーへの送付処理は、ファイル分割と子サーバーへの送信を行うブラウザ１の処理である。
【００６２】
図１２〜図１５に示すように、ブラウザ１は、子サーバー一覧返答処理部９からＨＴＴＰレスポンスデータ（子サーバー一覧）２１を受け取ると、セッションキーと共に、子サーバー送信状態一覧テーブル７に記録する（ステップＳ１４０）。このとき、状態は全て”未送信”に設定する。
【００６３】
そして、送付ファイル３１と、あらかじめ決められた分割サイズ（設定値）３２を取得し、送付ファイル３１を等分割し外部ディスク装置等の一時領域に、分割した複数の分割ファイル３３として保存する（ステップＳ１４１）。
【００６４】
そして、分割ファイル３３は先頭から順番に分割Ｎｏ．を付与し（ステップＳ１４２）、分割ファイル３３の全てに対し、状態を未送信に設定し、受け取ったセッションキーと共に、分割ファイル一覧テーブル８に記録する（ステップＳ１４３）。
【００６５】
そして、分割ファイル一覧テーブル８にて、未送信または送信中のファイルが存在するか否かを判定し（ステップＳ１４４）、ステップＳ１４４で未送信または送信中のファイルが存在すると判定された場合は、子サーバー送信状態一覧テーブル７にて、未送信の子サーバー３があるか否かを判定する（ステップＳ１４５）。
【００６６】
ステップＳ１４５で、未送信の子サーバー３があると判定された場合は、以下のステップＳ１５１〜ステップＳ１５９の子サーバーへの送信処理を、分割ファイル３３のそれぞれに対して、独立したスレッドとして開始する（ステップＳ１４６）。独立したスレッドを起動した後は、再びステップＳ１４４に戻る。ステップＳ１５１〜ステップＳ１５９までは、独立したスレッドの処理内容である。
【００６７】
また、ステップＳ１４５で、未送信の子サーバー３がないと判定された場合は、指定された全ての子サーバー３に対し各スレッドが送信中であるため、子サーバー３が空くまで新たなスレッドを立ち上げることができない。この場合、子サーバー３が空くまでステップＳ１４４を繰り返す。
【００６８】
また、ステップＳ１４４で未送信または送信中のファイルが存在しないと判定された場合は、全ての分割ファイルを送信完了したことになるので、子サーバー送信状態一覧テーブル７と分割ファイル一覧テーブル８において、現在のセッションキーに一致するデータレコードを全て削除する（ステップＳ１４７）。
【００６９】
そして、ＨＴＴＰリクエストヘッダを、以下のように組み立てる（ステップＳ１４８）。
ＰＯＳＴ  ［送信先ＵＲＬ］
Ｈｏｓｔ：親サーバー
ｓｅｓｓｉｏｎｉｄ：［発行されたセッションキー］
ｐｏｓｔ−ｆｉｌｅ：ｃｏｍｐｌｅｔｅｄ［ファイル以外のＰＯＳＴデータ］
ここで”ｐｏｓｔ−ｆｉｌｅ：ｃｏｍｐｌｅｔｅｄ”は、全ての分割ファイルの送信が完了したことを示す、本実施の形態で拡張したＨＴＴＰリクエストヘッダである。
【００７０】
ステップＳ１４８でＨＴＴＰリクエストヘッダを組み立てた後は、ブラウザの基本処理であるＨＴＴＰリクエスト発行処理（ＰＯＳＴ）を行い（ステップＳ１４９）、ＨＴＴＰリクエストデータ（本来ＨＴＴＰリクエスト）２７をＷｅｂ応答・クローズ処理部１１へ渡す。
【００７１】
Ｗｅｂ応答・クローズ処理部１１での処理の実施後、ブラウザ１はＨＴＴＰレスポンスデータ（画面描画）２８を受信し、ブラウザ１の基本処理であるＨＴＴＰレスポンス受信と画面描画処理を行い（ステップＳ１５０）、全ての分割ファイルのアップロードが完了する。
【００７２】
また、ステップＳ１４６により独立したスレッドとして開始した後、まず、その時点での子サーバー送信状態一覧テーブル７からの情報を取得し、未送信の子サーバー３を１つ選び、状態を送信中に変更して、再び子サーバー送信状態一覧テーブル７に格納する（ステップＳ１５１）。
【００７３】
次に、分割ファイル一覧テーブル８から情報を取得し、未送信の分割ファイルを１つ選び、状態を送信中に変更して、再び、分割ファイル一覧テーブル８に格納する（ステップＳ１５２）。
【００７４】
そして、選んだ分割ファイル３３と共にＨＴＴＰリクエストヘッダを以下のように組み立てる（ステップＳ１５３）。
ＰＯＳＴ  ［送信先ＵＲＬ］
Ｈｏｓｔ：［ステップＳ１５１で取得した子サーバーのホスト名］
ｓｅｓｓｉｏｎｉｄ：［発行されたセッションキー］
ｓｅｑｕｅｎｃｅ：［分割Ｎｏ．］
ｒａｎｇｅ：分割サイズとステップＳ１５２で取得した分割Ｎｏ．から、この分割ファイルのバイト位置を指定する
ｐｏｓｔ−ｆｉｌｅ：ｓｐｌｉｔ
ここで、”ｐｏｓｔ−ｆｉｌｅ：ｓｐｌｉｔ”は、ＨＴＴＰリクエストデータに分割ファイルが含まれることを示す、本実施の形態で拡張したＨＴＴＰリクエストヘッダである。
【００７５】
そして、分割ファイル一覧には未送信データが１つのみ残っているか否か、すなわち、ステップＳ１５２で取得した分割ファイルが最後の１つか否かを判定し（ステップＳ１５４）、ステップＳ１５４で、分割ファイル一覧には未送信データが１つのみ残っていると判定された場合は、ＨＴＴＰリクエストヘッダに”ｆｉｌｅ−ｅｎｄ：ｔｒｕｅ”を追加する。ここで”ｆｉｌｅ−ｅｎｄ：ｔｒｕｅ”は、ＨＴＴＰリクエストデータが最後の分割ファイルであることを示す、本実施の形態で拡張したＨＴＴＰリクエストヘッダである。
【００７６】
なお、ステップＳ１５４で、分割ファイル一覧には未送信データが１つのみ残っていないと判定された場合は、ステップＳ１５５の処理は行わない。
【００７７】
そして、ブラウザ１の基本処理であるＨＴＴＰリクエスト発行処理（ＰＯＳＴ）を行い（ステップＳ１５６）、ＨＴＴＰリクエストデータ（分割ファイル）２３を分割ファイル受信処理部１５へ渡す。
【００７８】
そして、分割ファイル受信処理部１５の処理の実施後、ブラウザ１はＨＴＴＰレスポンスデータ（分割データ受信完了）２４を受信し、ブラウザ１の基本処理であるＨＴＴＰレスポンス受信処理を行い（ステップＳ１５７）、対象の子サーバー送信状態一覧テーブル７の情報を未送信に変更し、子サーバー送信状態一覧テーブル７に保存する（ステップＳ１５８）。
【００７９】
そして、対象の分割ファイルの状態を完了に変更し、分割ファイル一覧テーブル８に格納することで（ステップＳ１５９）、本スレッドは処理を完了する。
【００８０】
［分割ファイル受信処理部１５の動作］
分割ファイル受信処理部１５による分割ファイル受信処理は、ファイル分割・子サーバー送付処理部６から分割ファイルを受信して保存する子サーバー３の処理である。
【００８１】
図１６に示すように、まず、子サーバー３は、ファイル分割・子サーバー送付処理部６からＨＴＴＰリクエストデータ（分割ファイル）２３を受信すると、子サーバー自身が記録しているセッション一覧テーブル（子サーバー用）１７内にＨＴＴＰリクエスト受信したセッションキーがあるか否か判定する（ステップＳ１６０）。
【００８２】
ステップＳ１６０で、ＨＴＴＰリクエスト受信したセッションキーがあると判定された場合は、一時領域に分割ファイルを保存し（ステップＳ１６１）、Ｗｅｂサーバーの基本処理であるＨＴＴＰレスポンス処理を行い（ステップＳ１６２）、ＨＴＴＰレスポンスデータ（分割ファイル受信完了）２４をファイル分割・子サーバー送付処理部６へ渡す。
【００８３】
また、ステップＳ１６０で、ＨＴＴＰリクエスト受信したセッションキーがないと判定された場合は、不正なリクエストであるため、ＨＴＴＰレスポンスとしてエラーコードを設定し（ステップＳ１６３）、Ｗｅｂサーバーの基本処理であるＨＴＴＰレスポンス処理を行い（ステップＳ１６４）、ＨＴＴＰレスポンスデータ（エラー）３５をブラウザ１にレスポンスする。
【００８４】
また、ステップＳ１６２での処理の後、ＨＴＴＰリクエストデータ（分割ファイル）２３内にｆｉｌｅ−ｅｎｄ：ｔｒｕｅヘッダがあるか否かを判定する（ステップＳ１６５）。
【００８５】
ステップＳ１６５で、ＨＴＴＰリクエストデータ（分割ファイル）２３内にｆｉｌｅ−ｅｎｄ：ｔｒｕｅヘッダがあると判定された場合は、受信した分割ファイルが最後のファイルであることを示しているので、ファイル受信完了のフラグ（ｆｌｇ＝ｔｒｕｅ）をシグナルに追加する（ステップＳ１６６）。
【００８６】
また、ステップＳ１６５で、ＨＴＴＰリクエストデータ（分割ファイル）２３内にｆｉｌｅ−ｅｎｄ：ｔｒｕｅヘッダがないと判定された場合は、まだ、分割ファイルが残っていることを示しているので、ファイル受信完了のフラグ（ｆｌｇ＝ｔｒｕｅ）はシグナルに追加しない。
【００８７】
そして、ＨＴＴＰリクエストデータをもととして、
（１）セッションキー
（２）ｒａｎｇｅ情報
（３）ｓｅｑｕｅｎｃｅ情報
（４）分割ファイル
のシグナルデータを生成し、親サーバー２へファイル受信シグナル２５を発行し（ステップＳ１６７）、ファイル受信シグナル処理部１０に渡して、分割ファイル受信処理部１５の処理を完了する。
【００８８】
［ファイル受信シグナル処理部１０の動作］
ファイル受信シグナル処理部１０によるファイル受信シグナルの処理は、分割ファイル受信処理部１５からファイル受信シグナル２５を受信して分割ファイル３３の復元を行う親サーバー２の処理である。
【００８９】
図１７〜図１９に示すように、まず、親サーバー２は、分割ファイル受信処理部１５からのファイル受信シグナル２５を受信すると（ステップＳ１７０）、同時に受信した分割ファイル３３を一時領域に保存する（ステップＳ１７１）。そして、ファイル受信シグナルの内容を転送中一覧テーブル１３に追加する（ステップＳ１７２）。
【００９０】
そして、次の条件に一致するデータレコードを転送中一覧テーブル１３から取得する（ステップＳ１７３）。
（１）現在のセッションキーに一致する
（２）復元状態が完了である最も小さい分割Ｎｏ．の値に対し、＋１の値である
（３）復元状態が未完了である
なお、ファイルの復元は、分割Ｎｏ．の小さい順に連結することで行う。
【００９１】
そして、ステップＳ１７３の条件に一致するデータレコードがあるか否かを判定する（ステップＳ１７４）。ステップＳ１７４で一致するデータレコードがないと判定された場合は、最小の分割ファイルの受信が完了しておらず復元を行うことができないため、条件に一致するデータレコードが生成されるまで、ステップＳ１７３に戻り、処理を繰り返す。
【００９２】
また、ステップＳ１７４で一致するデータレコードがあると判定された場合は、転送中一覧テーブル１３の当該分割ファイルの状態を処理中に変更する（ステップＳ１７５）。そして、取得した分割ファイル３３を復元途中ファイル３４の末尾に結合し、結合後の復元途中ファイル３４は一時保存し、次回の復元時に使用する（ステップＳ１７６）。そして、転送中一覧テーブル１３の当該分割ファイルの状態を完了に変更する（ステップＳ１７７）。
【００９３】
そして、ファイル受信シグナル２５に含まれるファイル受信完了のフラグが正（ｆｌｇ＝ｔｒｕｅ）か否かを判定する（ステップＳ１７８）。ステップＳ１７８でファイル受信完了のフラグが正（ｆｌｇ＝ｔｒｕｅ）でないと判定された場合は、最後の分割ファイルではないため、そのままファイル受信シグナル処理部１０の処理を完了する。
【００９４】
ステップＳ１７８でファイル受信完了のフラグが正（ｆｌｇ＝ｔｒｕｅ）であると判定された場合は、このセッションの状態を完了とし、セッション一覧テーブル（親サーバー用）１２に記録する（ステップＳ１７９）。
【００９５】
そして、転送中一覧テーブル１３内にある、このセッションのデータレコードを全て削除する（ステップＳ１８０）。そして、親サーバー２内に設定値として保存されている子サーバーホスト名一覧２９から子サーバーのホスト名を取得し、全ての子サーバーに対し、この通信のセッションキーを含めて、ファイル受信完了シグナル２６を送信する（ステップＳ１８１）。ファイル受信完了シグナル２６は、ファイル受信完了シグナル処理部１６に渡され、ファイル受信シグナル処理部１０の処理が完了する。
【００９６】
［ファイル受信完了シグナル処理部１６の動作］
ファイル受信完了シグナル処理部１６によるファイル受信完了シグナルの処理は、ファイル受信完了シグナル２６を処理する子サーバー３の処理である。
【００９７】
図２０に示すように、まず、ファイル受信シグナル処理部１０からファイル受信完了シグナル２６を受信すると（ステップＳ１９０）、セッション一覧テーブル（子サーバー用）１７からデータレコードを削除し（ステップＳ１９１）、ファイル受信完了シグナル処理部１６の処理を完了する。
【００９８】
［Ｗｅｂ応答・クローズ処理部１１の動作］
Ｗｅｂ応答・クローズ処理部１１によるＷｅｂ応答とクローズ処理は、ＨＴＴＰレスポンスとクローズ処理を行う親サーバー２の処理である。
【００９９】
図２１に示すように、まず、ファイル分割・子サーバー送付処理部６からＨＴＴＰリクエストデータ（本来ＨＴＴＰリクエスト）２７を受信すると、現在のセッションキーに一致するデータレコードをセッション一覧テーブル（親サーバー用）１２から取得する（ステップＳ２００）。
【０１００】
そして、ステップＳ２００で取得したデータレコードの状態が完了であるか否かを判定する（ステップＳ２０１）。ステップＳ２０１でデータレコードの状態が完了でないと判定された場合は、まだ、分割ファイル３３の復元が完了していないため、ステップＳ２００に戻り、復元が完了するまで、ステップＳ２００の処理を繰り返す。
【０１０１】
また、ステップＳ２０１でデータレコードの状態が完了であると判定された場合は、Ｗｅｂサーバーの基本処理であるＨＴＴＰレスポンス処理を行い（ステップＳ２０２）、ＨＴＴＰレスポンスデータ（画面描画）２８をファイル分割・子サーバー送付処理部６に渡す。そして、このセッションのデータレコードをセッション一覧テーブル（親サーバー用）１２から削除し（ステップＳ２０３）、Ｗｅｂ応答・クローズ処理部１１の処理を完了する。
【０１０２】
以上のように、本実施の形態では、受信側であるＷｅｂサーバーを親サーバーと複数のサーバーで構成し、多ホスト化して負荷分散を行い、親サーバーはＨＴＴＰリクエストの統制機能を提供し、各子サーバーは個々のＨＴＴＰリクエストを受信・応答する機能を提供することにより、Ｗｅｂ上でのアップロード処理の高速化を実現することができる。
【０１０３】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【符号の説明】
【０１０４】
１…ブラウザ、２…親サーバー、３…子サーバー、４…インターネット／イントラネット、５…子サーバー一覧要求処理部、６…ファイル分割・子サーバー送付処理部、７…子サーバー送信状態一覧テーブル、８…分割ファイル一覧テーブル、９…子サーバー一覧返答処理部、１０…ファイル受信シグナル処理部、１１…Ｗｅｂ応答・クローズ処理部、１２…セッション一覧テーブル（親サーバー用）、１３…転送中一覧テーブル、１４…セッション開始処理部、１５…分割ファイル受信処理部、１６…ファイル受信完了シグナル処理部、１７…セッション一覧テーブル（子サーバー用）、２０…ＨＴＴＰリクエストデータ（子サーバー一覧要求）、２１…ＨＴＴＰレスポンスデータ（子サーバー一覧）、２２…セッション開始シグナル、２３…ＨＴＴＰリクエストデータ（分割ファイル）、２４…ＨＴＴＰレスポンスデータ（分割データ受信完了）、２５…ファイル受信シグナル、２６…ファイル受信完了シグナル、２７…ＨＴＴＰリクエストデータ（本来ＨＴＴＰリクエスト）、２８…ＨＴＴＰレスポンスデータ（画面描画）、２９…子サーバーホスト名一覧、３０…ＨＴＴＰレスポンス一時保持データ、３１…送付ファイル、３２…分割サイズ（設定値）、３３…分割ファイル、３４…復元途中ファイル、３５…ＨＴＴＰレスポンスデータ（エラー）。
【図１】
2015090511.tif 000003
【図２】
2015090511.tif 000004
【図３】
2015090511.tif 000005
【図４】
2015090511.tif 000006
【図５】
2015090511.tif 000007
【図６】
2015090511.tif 000008
【図７】
2015090511.tif 000009
【図８】
2015090511.tif 000010
【図９】
2015090511.tif 000011
【図１０】
2015090511.tif 000012
【図１１】
2015090511.tif 000013
【図１２】
2015090511.tif 000014
【図１３】
2015090511.tif 000015
【図１４】
2015090511.tif 000016
【図１５】
2015090511.tif 000017
【図１６】
2015090511.tif 000018
【図１７】
2015090511.tif 000019
【図１８】
2015090511.tif 000020
【図１９】
2015090511.tif 000021
【図２０】
2015090511.tif 000022
【図２１】
2015090511.tif 000023