(57)【特許請求の範囲】
【請求項１】
利用者が利用する利用者端末から送信されたファイルを他の利用者端末に転送するファイル転送サーバと、各利用者端末との間にアプリケーションサーバが介在し、当該アプリケーションサーバが、各利用者端末と当該ファイル転送サーバとの間で送受信されるファイルに対して当該ファイルの転送に必要な複数の処理を段階的に実行するファイル転送システムであって、
前記アプリケーションサーバは、
前段の処理の処理結果がバッファに出力され、バッファに出力された当該処理結果が次段の処理に入力されるように前記複数の処理各々を実行する処理手段各々と、
前記複数の処理を実行する前のファイルとして送信元の前記利用者端末もしくは前記ファイル転送サーバから送信されたファイルを、前記処理手段各々の内最も前段の処理を実行する処理手段に入力するファイル入力手段と、
前記処理手段各々の内最も後段の処理を実行する処理手段から出力された処理結果を、前記ファイル入力手段によって入力されたファイルが送信元の前記利用者端末から送信されたものである場合には前記ファイル転送サーバに送信し、前記ファイル入力手段によって入力されたファイルが前記ファイル転送サーバから送信されたものである場合には、当該ファイルの宛先の前記利用者端末に送信するファイル送信手段とを備え、
前記アプリケーションサーバは、前記複数の処理を実行する前のファイルとして送信元の前記利用者端末から送信されたファイルをファイル記憶手段に格納するものであって、
前記処理手段各々の内最も後段の処理を実行する処理手段から処理結果が出力されると、前記ファイル記憶手段に記憶されている前記ファイルを当該ファイル記憶手段から削除するファイル削除手段をさらに備えたことを特徴とするファイル転送システム。
【請求項２】
前記複数の処理各々は、送信元の前記利用者端末から送信されたファイルを圧縮する圧縮処理と、圧縮された当該ファイルを暗号化する暗号化処理とであって、
前記処理手段各々は、前記圧縮処理を実行する処理手段の処理結果がバッファに出力され、バッファに出力された当該処理結果が前記暗号化処理を実行する処理手段に入力されるように処理を実行し、
前記ファイル入力手段は、前記圧縮処理を実行する処理手段に前記ファイルを入力し、
前記ファイル送信手段は、前記暗号化処理を実行する処理手段から出力された処理結果をファイル転送サーバに送信することを特徴とする請求項１に記載のファイル転送システム。
【請求項３】
前記複数の処理各々は、前記ファイル転送サーバから送信されたファイルを復号する復号処理と、復号された当該ファイルの圧縮を解凍する解凍処理と、解凍された当該ファイルを再圧縮する再圧縮処理とであって、
前記処理手段各々は、前記復号処理を実行する処理手段の処理結果がバッファに出力され、バッファに出力された当該処理結果が前記解凍処理を実行する処理手段に入力され、当該解凍処理を実行する処理手段の処理結果がバッファに出力され、バッファに出力された当該処理結果が前記再圧縮処理を実行する処理手段に入力されるように処理を実行し、
前記ファイル入力手段は、前記復号処理を実行する処理手段に前記ファイルを入力し、
前記ファイル送信手段は、前記再圧縮処理を実行する処理手段から出力された処理結果を前記ファイルの宛先の利用者端末に送信することを特徴とする請求項１または２に記載のファイル転送システム。
【請求項４】
前記アプリケーションサーバは、
前記ファイル転送サーバに記憶されているファイルを受信することを要求するファイル受信要求を当該ファイルの宛先の前記利用者端末から受信すると、当該ファイル受信要求を当該ファイル転送サーバに転送するファイル受信要求転送手段をさらに備え、
前記ファイル転送サーバは、
前記ファイル受信要求転送手段によって転送されたファイル受信要求を受信すると、当該ファイル受信要求にて指定されるファイルを前記アプリケーションサーバに送信するファイル送信手段を備えたことを特徴とする請求項１〜３のいずれか一つに記載のファイル転送システム。
【請求項５】
利用者が利用する利用者端末から送信されたファイルを他の利用者端末に転送するファイル転送サーバ、各利用者端末との間にアプリケーションサーバが介在し、当該アプリケーションサーバが、各利用者端末と当該ファイル転送サーバとの間で送受信されるファイルに対して当該ファイルの転送に必要な複数の処理を段階的に実行するファイル転送方法であって、
前記アプリケーションサーバは、
前段の処理の処理結果がバッファに出力され、バッファに出力された当該処理結果が次段の処理に入力されるように前記複数の処理各々を実行する処理工程各々と、
前記複数の処理を実行する前のファイルとして送信元の前記利用者端末もしくは前記ファイル転送サーバから送信されたファイルを、前記処理工程各々の内最も前段の処理を実行する処理工程に入力するファイル入力工程と、
前記処理工程各々の内最も後段の処理を実行する処理工程から出力された処理結果を、前記ファイル入力工程によって入力されたファイルが送信元の前記利用者端末から送信されたものである場合には前記ファイル転送サーバに送信し、前記ファイル入力工程によって入力されたファイルが前記ファイル転送サーバから送信されたものである場合には、当該ファイルの宛先の前記利用者端末に送信するファイル送信工程とを含み、
前記アプリケーションサーバは、前記複数の処理を実行する前のファイルとして送信元の前記利用者端末から送信されたファイルをファイル記憶手段に格納する格納工程と、
前記処理工程各々の内最も後段の処理を実行する処理工程から処理結果が出力されると、前記ファイル記憶手段に記憶されている前記ファイルを当該ファイル記憶手段から削除するファイル削除工程とをさらに含んだことを特徴とするファイル転送方法。
【請求項６】
利用者が利用する利用者端末から送信されたファイルを他の利用者端末に転送するファイル転送サーバと、各利用者端末との間にアプリケーションサーバが介在し、当該アプリケーションサーバが、各利用者端末と当該ファイル転送サーバとの間で送受信されるファイルに対して当該ファイルの転送に必要な複数の処理を段階的に実行するファイル転送方法をコンピュータに実行させるファイル転送プログラムであって、
前段の処理の処理結果がバッファに出力され、バッファに出力された当該処理結果が次段の処理に入力されるように前記複数の処理各々を実行する処理手順各々と、
前記複数の処理を実行する前のファイルとして送信元の前記利用者端末もしくは前記ファイル転送サーバから送信されたファイルを、前記処理手順各々の内最も前段の処理を実行する処理手順に入力するファイル入力手順と、
前記処理手順各々の内最も後段の処理を実行する処理手順から出力された処理結果を、前記ファイル入力手順によって入力されたファイルが送信元の前記利用者端末から送信されたものである場合には前記ファイル転送サーバに送信し、前記ファイル入力手順によって入力されたファイルが前記ファイル転送サーバから送信されたものである場合には、当該ファイルの宛先の前記利用者端末に送信するファイル送信手順とを前記アプリケーションサーバとしてのコンピュータに実行させ、
前記アプリケーションサーバは、前記複数の処理を実行する前のファイルとして送信元の前記利用者端末から送信されたファイルをファイル記憶手段に格納する格納手順と、
前記処理手順各々の内最も後段の処理を実行する処理手順から処理結果が出力されると、前記ファイル記憶手段に記憶されている前記ファイルを当該ファイル記憶手段から削除するファイル削除手順とをさらに前記アプリケーションサーバとしてのコンピュータに実行させることを特徴とするファイル転送プログラム。
【請求項７】
利用者が利用する利用者端末から送信されたファイルを他の利用者端末に転送するファイル転送サーバと、各利用者端末との間にアプリケーションサーバが介在し、当該アプリケーションサーバが、各利用者端末と当該ファイル転送サーバとの間で送受信されるファイルに対して当該ファイルの転送に必要な複数の処理を段階的に実行するファイル転送システムにおける当該アプリケーションサーバであって、
前段の処理の処理結果がバッファに出力され、バッファに出力された当該処理結果が次段の処理に入力されるように前記複数の処理各々を実行する処理手段各々と、
前記複数の処理を実行する前のファイルとして送信元の前記利用者端末もしくは前記ファイル転送サーバから送信されたファイルを、前記処理手段各々の内最も前段の処理を実行する処理手段に入力するファイル入力手段と、
前記処理手段各々の内最も後段の処理を実行する処理手段から出力された処理結果を、前記ファイル入力手段によって入力されたファイルが送信元の前記利用者端末から送信されたものである場合には前記ファイル転送サーバに送信し、前記ファイル入力手段によって入力されたファイルが前記ファイル転送サーバから送信されたものである場合には、当該ファイルの宛先の前記利用者端末に送信するファイル送信手段とを備え、
前記アプリケーションサーバは、前記複数の処理を実行する前のファイルとして送信元の前記利用者端末から送信されたファイルをファイル記憶手段に格納するものであって、
前記処理手段各々の内最も後段の処理を実行する処理手段から処理結果が出力されると、前記ファイル記憶手段に記憶されている前記ファイルを当該ファイル記憶手段から削除するファイル削除手段をさらに備えたことを特徴とするアプリケーションサーバ。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ファイル転送システムおよびアプリケーションサーバに関する。
【背景技術】
【０００２】
従来より、ファイル転送サーバが、利用者端末から送信されたファイルを他の利用者端末に転送するファイル転送システムがある。例えば、非特許文献１には、大容量ファイルを安全、確実、高効率に転送する大規模セキュアファイル流通基盤システム（ＳＳＳ：Scalable  Secure  file  Sharing  system）が提案されている。
【０００３】
かかる基盤システムにおいては、利用者端末とファイル転送サーバとの間で送受信されるファイルに対して、当該ファイルの転送に必要な複数の処理を段階的に実行しなければならない。具体的に説明すると、利用者端末からファイル転送サーバに送信されるファイルに対しては、コンテナ化処理や暗号化処理などを実行しなければならない（なお、コンテナ化とは、送信するファイルを圧縮することである）。一方、ファイル転送サーバから利用者端末に送信されるファイルに対しては、復号処理やコンテナ解凍処理、あるいは再圧縮処理などを実行しなければならない。この時、利用者端末に専用のアプリケーションがインストールされている場合には、利用者端末がこれら複数の処理を実行することができるが、利用者端末に一般的なＷｅｂブラウザのみがインストールされている場合には、他の装置がこれら複数の処理を実行しなければならない。
【０００４】
このため、かかる基盤システムは、例えば、図１０に示すように、利用者端末とファイル転送サーバとの間にアプリケーションサーバ（ＡＰサーバ）が介在する構成を採り、当該アプリケーションサーバが、利用者端末に替わり、コンテナ化処理や暗号化処理などを実行する。同様に、例えば、図１１に示すように、当該アプリケーションサーバが、利用者端末に替わり、復号処理やコンテナ解凍処理、あるいは再圧縮処理などを実行する。
【０００５】
【非特許文献１】“大規模セキュアファイル流通基盤システム”、ＮＴＴ技術ジャーナル、２００６年８月号、Ｐ．３６〜３９
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ところで、上記した従来の技術では、全体の処理時間が増大してしまうという課題があった。すなわち、上記した従来技術では、アプリケーションサーバが各処理を実行する際、ハードディスクドライブ（ＨＤＤ）のような外部記憶装置にファイル（コンテナ、中間生成データを含む）を何回か保存していた。
【０００７】
例えば、図１０に示すように、アプリケーションサーバは、コンテナ化処理を実行すると、処理結果である中間生成データをＨＤＤにアクセスして保存し、保存した中間生成データをＨＤＤにアクセスして読み出し、暗号化処理を実行する。また、例えば、図１１に示すように、アプリケーションサーバは、復号処理を実行すると、処理結果である中間生成データをＨＤＤにアクセスして保存し、保存した中間生成データをＨＤＤにアクセスして読み出し、コンテナ解凍処理を実行する。また、コンテナ解凍処理を実行すると、処理結果である中間生成データをＨＤＤにアクセスして保存し、保存した中間生成データをＨＤＤにアクセスして読み出し、再圧縮処理を実行する。
【０００８】
このように、上記した従来技術では、ＨＤＤのような外部記憶装置にファイルを何回か保存することになるが、外部記憶装置にアクセスする処理は処理速度が遅いことから、結果として、全体の処理時間が増大してしまうという課題があった。
【０００９】
そこで、この発明は、上記した従来技術の課題を解決するためになされたものであり、全体の処理時間を短縮することが可能なファイル転送システムおよびアプリケーションサーバを提供することを目的とする。
【課題を解決するための手段】
【００１０】
上述した課題を解決し、目的を達成するため、請求項１に係る発明は、利用者が利用する利用者端末から送信されたファイルを他の利用者端末に転送するファイル転送サーバと、各利用者端末との間にアプリケーションサーバが介在し、当該アプリケーションサーバが、各利用者端末と当該ファイル転送サーバとの間で送受信されるファイルに対して当該ファイルの転送に必要な複数の処理を段階的に実行するファイル転送システムであって、前記アプリケーションサーバは、前段の処理の処理結果がバッファに出力され、バッファに出力された当該処理結果が次段の処理に入力されるように前記複数の処理各々を実行する処理手段各々と、前記複数の処理を実行する前のファイルとして送信元の前記利用者端末もしくは前記ファイル転送サーバから送信されたファイルを、前記処理手段各々の内最も前段の処理を実行する処理手段に入力するファイル入力手段と、前記処理手段各々の内最も後段の処理を実行する処理手段から出力された処理結果を、前記ファイル入力手段によって入力されたファイルが送信元の前記利用者端末から送信されたものである場合には前記ファイル転送サーバに送信し、前記ファイル入力手段によって入力されたファイルが前記ファイル転送サーバから送信されたものである場合には、当該ファイルの宛先の前記利用者端末に送信するファイル送信手段とを備え、前記アプリケーションサーバは、前記複数の処理を実行する前のファイルとして送信元の前記利用者端末から送信されたファイルをファイル記憶手段に格納するものであって、前記処理手段各々の内最も後段の処理を実行する処理手段から処理結果が出力されると、前記ファイル記憶手段に記憶されている前記ファイルを当該ファイル記憶手段から削除するファイル削除手段をさらに備えたことを特徴とする。
【００１２】
また、請求項２に係る発明は、上記の発明において、前記複数の処理各々は、送信元の前記利用者端末から送信されたファイルを圧縮する圧縮処理と、圧縮された当該ファイルを暗号化する暗号化処理とであって、前記処理手段各々は、前記圧縮処理を実行する処理手段の処理結果がバッファに出力され、バッファに出力された当該処理結果が前記暗号化処理を実行する処理手段に入力されるように処理を実行し、前記ファイル入力手段は、前記圧縮処理を実行する処理手段に前記ファイルを入力し、前記ファイル送信手段は、前記暗号化処理を実行する処理手段から出力された処理結果をファイル転送サーバに送信することを特徴とする。
【００１３】
また、請求項３に係る発明は、上記の発明において、前記複数の処理各々は、前記ファイル転送サーバから送信されたファイルを復号する復号処理と、復号された当該ファイルの圧縮を解凍する解凍処理と、解凍された当該ファイルを再圧縮する再圧縮処理とであって、前記処理手段各々は、前記復号処理を実行する処理手段の処理結果がバッファに出力され、バッファに出力された当該処理結果が前記解凍処理を実行する処理手段に入力され、当該解凍処理を実行する処理手段の処理結果がバッファに出力され、バッファに出力された当該処理結果が前記再圧縮処理を実行する処理手段に入力されるように処理を実行し、前記ファイル入力手段は、前記復号処理を実行する処理手段に前記ファイルを入力し、前記ファイル送信手段は、前記再圧縮処理を実行する処理手段から出力された処理結果を前記ファイルの宛先の利用者端末に送信することを特徴とする。
【００１４】
また、請求項４に係る発明は、上記の発明において、前記アプリケーションサーバは、前記ファイル転送サーバに記憶されているファイルを受信することを要求するファイル受信要求を当該ファイルの宛先の前記利用者端末から受信すると、当該ファイル受信要求を当該ファイル転送サーバに転送するファイル受信要求転送手段をさらに備え、前記ファイル転送サーバは、前記ファイル受信要求転送手段によって転送されたファイル受信要求を受信すると、当該ファイル受信要求にて指定されるファイルを前記アプリケーションサーバに送信するファイル送信手段を備えたことを特徴とする。
【００１５】
また、請求項５に係る発明は、利用者が利用する利用者端末から送信されたファイルを他の利用者端末に転送するファイル転送サーバと、各利用者端末との間にアプリケーションサーバが介在し、当該アプリケーションサーバが、各利用者端末と当該ファイル転送サーバとの間で送受信されるファイルに対して当該ファイルの転送に必要な複数の処理を段階的に実行するファイル転送方法であって、前記アプリケーションサーバは、前段の処理の処理結果がバッファに出力され、バッファに出力された当該処理結果が次段の処理に入力されるように前記複数の処理各々を実行する処理工程各々と、前記複数の処理を実行する前のファイルとして送信元の前記利用者端末もしくは前記ファイル転送サーバから送信されたファイルを、前記処理工程各々の内最も前段の処理を実行する処理工程に入力するファイル入力工程と、前記処理工程各々の内最も後段の処理を実行する処理工程から出力された処理結果を、前記ファイル入力工程によって入力されたファイルが送信元の前記利用者端末から送信されたものである場合には前記ファイル転送サーバに送信し、前記ファイル入力工程によって入力されたファイルが前記ファイル転送サーバから送信されたものである場合には、当該ファイルの宛先の前記利用者端末に送信するファイル送信工程とを含み、前記アプリケーションサーバは、前記複数の処理を実行する前のファイルとして送信元の前記利用者端末から送信されたファイルをファイル記憶手段に格納する格納工程と、前記処理工程各々の内最も後段の処理を実行する処理工程から処理結果が出力されると、前記ファイル記憶手段に記憶されている前記ファイルを当該ファイル記憶手段から削除するファイル削除工程とをさらにを含んだことを特徴とする。
【００１６】
また、請求項６に係る発明は、利用者が利用する利用者端末から送信されたファイルを他の利用者端末に転送するファイル転送サーバと、各利用者端末との間にアプリケーションサーバが介在し、当該アプリケーションサーバが、各利用者端末と当該ファイル転送サーバとの間で送受信されるファイルに対して当該ファイルの転送に必要な複数の処理を段階的に実行するファイル転送方法をコンピュータに実行させるファイル転送プログラムであって、前段の処理の処理結果がバッファに出力され、バッファに出力された当該処理結果が次段の処理に入力されるように前記複数の処理各々を実行する処理手順各々と、前記複数の処理を実行する前のファイルとして送信元の前記利用者端末もしくは前記ファイル転送サーバから送信されたファイルを、前記処理手順各々の内最も前段の処理を実行する処理手順に入力するファイル入力手順と、前記処理手順各々の内最も後段の処理を実行する処理手順から出力された処理結果を、前記ファイル入力手順によって入力されたファイルが送信元の前記利用者端末から送信されたものである場合には前記ファイル転送サーバに送信し、前記ファイル入力手順によって入力されたファイルが前記ファイル転送サーバから送信されたものである場合には、当該ファイルの宛先の前記利用者端末に送信するファイル送信手順とを前記アプリケーションサーバとしてのコンピュータに実行させ、前記アプリケーションサーバは、前記複数の処理を実行する前のファイルとして送信元の前記利用者端末から送信されたファイルをファイル記憶手段に格納する格納手順と、前記処理手順各々の内最も後段の処理を実行する処理手順から処理結果が出力されると、前記ファイル記憶手段に記憶されている前記ファイルを当該ファイル記憶手段から削除するファイル削除手順とをさらに前記アプリケーションサーバとしてのコンピュータに実行させることを特徴とする。
【００１７】
また、請求項７に係る発明は、利用者が利用する利用者端末から送信されたファイルを他の利用者端末に転送するファイル転送サーバと、各利用者端末との間にアプリケーションサーバが介在し、当該アプリケーションサーバが、各利用者端末と当該ファイル転送サーバとの間で送受信されるファイルに対して当該ファイルの転送に必要な複数の処理を段階的に実行するファイル転送システムにおける当該アプリケーションサーバであって、前段の処理の処理結果がバッファに出力され、バッファに出力された当該処理結果が次段の処理に入力されるように前記複数の処理各々を実行する処理手段各々と、前記複数の処理を実行する前のファイルとして送信元の前記利用者端末もしくは前記ファイル転送サーバから送信されたファイルを、前記処理手段各々の内最も前段の処理を実行する処理手段に入力するファイル入力手段と、前記処理手段各々の内最も後段の処理を実行する処理手段から出力された処理結果を、前記ファイル入力手段によって入力されたファイルが送信元の前記利用者端末から送信されたものである場合には前記ファイル転送サーバに送信し、前記ファイル入力手段によって入力されたファイルが前記ファイル転送サーバから送信されたものである場合には、当該ファイルの宛先の前記利用者端末に送信するファイル送信手段とを備え、前記アプリケーションサーバは、前記複数の処理を実行する前のファイルとして送信元の前記利用者端末から送信されたファイルをファイル記憶手段に格納するものであって、前記処理手段各々の内最も後段の処理を実行する処理手段から処理結果が出力されると、前記ファイル記憶手段に記憶されている前記ファイルを当該ファイル記憶手段から削除するファイル削除手段をさらに備えたことを特徴とする。
【発明の効果】
【００１８】
請求項１、５、６または７の発明によれば、各利用者端末とファイル転送サーバとの間にアプリケーションサーバが介在し、当該アプリケーションサーバが、各利用者端末と当該ファイル転送サーバとの間で送受信されるファイルに対して当該ファイルの転送に必要な複数の処理を段階的に実行するファイル転送システムであって、アプリケーションサーバは、前段の処理の処理結果がバッファに出力され、バッファに出力された当該処理結果が次段の処理に入力されるように複数の処理各々を実行する処理器各々を備え、複数の処理を実行する前のファイルとして送信元の利用者端末もしくはファイル転送サーバから送信されたファイルを、処理器各々の内最も前段の処理を実行する処理器に入力し、処理器各々の内最も後段の処理を実行する処理器から出力された処理結果を、ファイル転送サーバもしくは当該ファイルの宛先の利用者端末に送信するので、外部記憶装置にアクセスする回数が減少する結果、全体の処理時間を短縮することが可能になる。また、中間生成データが発生しなくなるので、外部記憶装置の使用量を節約することが可能になる。
【００１９】
また、請求項１、５、６または７の発明によれば、アプリケーションサーバは、複数の処理を実行する前のファイルとして送信元の利用者端末から送信されたファイルをファイル記憶部（外部記憶装置）に格納するものであって、処理器各々の内最も後段の処理を実行する処理器から処理結果が出力されると、ファイル記憶部に記憶されているファイルをファイル記憶部から削除するので、利用者端末から送信されたファイルが外部記憶装置に保存される期間が短縮される結果、セキュリティ面の堅牢性を高めることが可能になる。
【００２０】
また、請求項２の発明によれば、複数の処理各々は、送信元の利用者端末から送信されたファイルを圧縮する圧縮処理と、圧縮された当該ファイルを暗号化する暗号化処理とであって、処理器各々は、圧縮処理を実行する処理器の処理結果がバッファに出力され、バッファに出力された当該処理結果が暗号化処理を実行する処理器に入力されるように処理を実行し、圧縮処理を実行する処理器にファイルを入力し、暗号化処理を実行する処理器から出力された処理結果をファイル転送サーバに送信するので、外部記憶装置にアクセスする回数が減少する結果、ファイルアップロード時の処理時間を短縮することが可能になる。
【００２１】
また、請求項３の発明によれば、複数の処理各々は、ファイル転送サーバから送信されたファイルを復号する復号処理と、復号された当該ファイルの圧縮を解凍する解凍処理と、解凍された当該ファイルを再圧縮する再圧縮処理とであって、処理器各々は、復号処理を実行する処理器の処理結果がバッファに出力され、バッファに出力された当該処理結果が解凍処理を実行する処理器に入力され、当該解凍処理を実行する処理器の処理結果がバッファに出力され、バッファに出力された当該処理結果が再圧縮処理を実行する処理器に入力されるように処理を実行し、復号処理を実行する処理器にファイルを入力し、再圧縮処理を実行する処理器から出力された処理結果をファイルの宛先の利用者端末に送信するので、外部記憶装置にアクセスする回数が減少する結果、ファイルダウンロード時の処理時間を短縮することが可能になる。
【００２２】
また、請求項４の発明によれば、アプリケーションサーバは、ファイル転送サーバに記憶されているファイルを受信することを要求するファイル受信要求をファイルの宛先の利用者端末から受信すると、当該ファイル受信要求を当該ファイル転送サーバに転送し、ファイル転送サーバは、転送されたファイル受信要求を受信すると、当該ファイル受信要求にて指定されるファイルをアプリケーションサーバに送信するので、ファイル転送サーバからアプリケーションサーバまでのファイル受信については、バッチ処理を廃止してリアルタイム処理とすることで（もしくは、バッチ処理とリアルタイム処理とを並存させることで）、ファイル転送サーバにファイルが到着するとすぐに利用者端末がファイル受信することが可能になり、ユーザまでのファイル到達を迅速にすることが可能になる。                                                                  
【発明を実施するための最良の形態】
【００２３】
以下に添付図面を参照して、本発明に係るファイル転送システムおよびアプリケーションサーバの実施例を詳細に説明する。なお、以下では、実施例１に係るファイル転送システムの概要および特徴、実施例１に係るファイル転送システムの構成および処理の手順、実施例１の効果を順に説明し、次に、他の実施例について説明する。
【実施例１】
【００２４】
［実施例１に係るファイル転送システムの概要および特徴］
まず、図１および図２を用いて、実施例１に係るファイル転送システムの概要および特徴を説明する。図１は、実施例１に係るファイル転送システムの概要および特徴（ファイルアップロード）を説明するための図であり、図２は、ファイル転送システムの概要および特徴（ファイルダウンロード）を説明するための図である。
【００２５】
実施例１に係るファイル転送システムは、利用者端末とファイル転送サーバとの間に介在するアプリケーションサーバが、当該利用者端末と当該ファイル転送サーバとの間で送受信されるファイルに対して当該ファイルの転送に必要な複数の処理を段階的に実行することを概要とし、全体の処理時間を短縮することが可能な構成であることを主たる特徴とする。以下、ファイルアップロード、ファイルダウンロードを順に説明する。
【００２６】
［ファイルアップロード］
まず、図１を用いてファイルアップロードについて説明すると、まず、アプリケーションサーバは、利用者端末から送信されたファイルであって、ファイルのアップロードに必要な複数の処理を実行する前のファイル（以下、処理実行前ファイル）を、ファイル記憶部（ＨＤＤ）に格納する（図１の（１）を参照）。
【００２７】
この時、実施例１におけるアプリケーションサーバは、ファイルのアップロードに必要な複数の処理各々を実行する処理器として、『コンテナ化処理』を実行する処理器と、『暗号化処理』を実行する処理器とを生成する。また、『コンテナ化処理』を実行する処理器と『暗号化処理』を実行する処理器とは、ストリーム化されている。具体的には、『コンテナ化処理』を実行する処理器の処理結果がバッファに出力され、バッファに出力された当該処理結果が『暗号化処理』を実行する処理器に入力されるように、『コンテナ化処理』を実行する処理器と『暗号化処理』を実行する処理器とがバッファで結合されている。
【００２８】
続いて、アプリケーションサーバは、ファイル記憶部（ＨＤＤ）に格納されたファイルを、処理器のうち最も前段の処理を実行する処理器に入力する（図１の（２）を参照）。例えば、アプリケーションサーバは、ファイル記憶部（ＨＤＤ）に格納されたファイルを、『コンテナ化処理』を実行する処理器に入力する。なお、実施例１に係るファイル転送システムにおいて、「コンテナ」とは、利用者端末から受信したファイルに対して圧縮処理を行ったものであり、送信対象となるファイルをひとまとめにしたものである。
【００２９】
すると、最も前段の処理を実行する処理器の処理結果がバッファに出力され、バッファに出力された当該処理結果が次段の処理を実行する処理器に入力される（図１の（３）を参照）。例えば、アプリケーションサーバにおいて、『コンテナ化処理』を実行する処理器の処理結果がバッファに出力され、バッファに出力された当該処理結果が『暗号化処理』を実行する処理器に入力される。
【００３０】
そして、アプリケーションサーバは、処理器の内最も後段の処理を実行する処理器から出力された処理結果を、ファイル記憶部（ＨＤＤ）に格納する（図１の（４）を参照）。例えば、アプリケーションサーバは、『暗号化処理』を実行する処理器から出力された処理結果を、ファイル記憶部（ＨＤＤ）に格納する。なお、実施例１に係るファイル転送システムにおいては、ファイルのアップロードに必要な処理を実行した後のファイルを、処理実行後コンテナと呼ぶ。
【００３１】
その後、アプリケーションサーバは、ファイル記憶部（ＨＤＤ）に格納された処理結果（処理実行後コンテナ）を、ファイル転送サーバに送信する（図１の（５）を参照）。
【００３２】
このようなことから、実施例１に係るファイル転送システムにおいては、アプリケーションサーバの内部処理をバッファで結合してストリーム化することで、全体の処理時間を短縮することが可能になる。すなわち、実施例１に係るファイル転送システムにおいては、アプリケーションサーバが、『コンテナ化処理』を実行する処理器の処理結果がバッファに出力され、バッファに出力された処理結果が『暗号化処理』を実行する処理器に入力されるように、内部処理をバッファで結合してストリーム化する。このため、ＨＤＤのような外部記憶装置にアクセスする処理の回数が減少する結果、ファイルアップロードの処理時間を短縮することが可能になる。
【００３３】
［ファイルダウンロード］
次に、図２を用いてファイルダウンロードについて説明すると、まず、実施例１におけるアプリケーションサーバは、利用者からファイル受信要求（ファイル転送サーバに記憶されているファイルのダウンロードを要求）を受信すると、この時、ファイルのダウンロードに必要な複数の処理各々を実行する処理器として、『復号処理』を実行する処理器と、『コンテナ解凍処理』を実行する処理器と、『再圧縮処理』を実行する処理器とを生成する。
【００３４】
ここで、『復号処理』を実行する処理器と『コンテナ解凍処理』を実行する処理器とは、ストリーム化されている。具体的には、『復号処理』を実行する処理器の処理結果がバッファに出力され、バッファに出力された当該処理結果が『コンテナ解凍処理』を実行する処理器に入力されるように、『復号処理』を実行する処理器と『コンテナ解凍処理』を実行する処理器とがバッファで結合されている。さらに、『コンテナ解凍処理』を実行する処理器と『再圧縮処理』を実行する処理器とは、ストリーム化されている。具体的には、『コンテナ解凍処理』を実行する処理器の処理結果がバッファに出力され、バッファに出力された当該処理結果が『再圧縮処理』を実行する処理器に入力されるように、『コンテナ解凍処理』を実行する処理器と『再圧縮処理』を実行する処理器とがバッファで結合されている。
【００３５】
また、実施例１におけるアプリケーションサーバは、利用者から受信したファイル受信要求を、ファイル転送サーバに転送する。その後、アプリケーションサーバは、ファイルのダウンロードに必要な複数の処理を実行する前のコンテナ（以下、処理実行前コンテナ）をファイル転送サーバから受信し、当該処理実行前コンテナを、処理器のうち最も前段の処理を実行する処理器に入力する（図２の（１）を参照）。例えば、アプリケーションサーバは、処理実行前コンテナを、『復号処理』を実行する処理器に入力する。
【００３６】
すると、最も前段の処理を実行する処理器の処理結果がバッファに出力され、バッファに出力された当該処理結果が次段の処理を実行する処理器に入力される（図２の（２）を参照）。例えば、アプリケーションサーバにおいて、『復号処理』を実行する処理器の処理結果がバッファに出力され、バッファに出力された当該処理結果が『コンテナ解凍処理』を実行する処理器に入力される。続いて、『コンテナ解凍処理』を実行する処理器の処理結果がバッファに出力され、バッファに出力された当該処理結果が『再圧縮処理』を実行する処理器に入力される。
【００３７】
そして、アプリケーションサーバは、処理器の内最も後段の処理を実行する処理器から出力された処理結果（処理実行後ファイル）を、利用者端末に送信する（図２の（３）を参照）。
【００３８】
このようなことから、実施例１に係るファイル転送システムにおいては、アプリケーションサーバの内部処理をバッファで結合してストリーム化することで、全体の処理時間を短縮することが可能になる。すなわち、実施例１に係るファイル転送システムにおいては、アプリケーションサーバが、『復号処理』を実行する処理器の処理結果がバッファに出力され、バッファに出力された処理結果が『コンテナ解凍処理』を実行する処理器に入力されるように、続いて、『コンテナ解凍処理』を実行する処理器の処理結果がバッファに出力され、バッファに出力された処理結果が『再圧縮処理』を実行する処理器に入力されるように、内部処理をバッファで結合してストリーム化する。このため、ＨＤＤのような外部記憶装置にアクセスする処理の回数が減少する結果、ファイルダウンロードの処理時間を短縮することが可能になる。
【００３９】
なお、実施例１においては、上記してきたように、処理器各々がその都度生成される（ファイルアップロードについては、利用者端末から送信されたファイルをファイル記憶部（ＨＤＤ）に格納した際、ファイルダウンロードについては、利用者からファイル受信要求を受信した際、その都度生成される）ことを想定してきたが、本発明はこれに限られるものではない。いくつかの処理器各々が予め生成されてストックされており、その都度ストックから処理器を割り当てて、処理終了後に処理器をストックに戻す手法でもよい。例えば、ファイルアップロードについては、利用者端末から送信されたファイルをファイル記憶部（ＨＤＤ）に格納した際、ストックから処理器を割り当ててもよい。また、ファイルダウンロードについては、利用者からファイル受信要求を受信した際、ストックから処理器を割り当ててもよい。
【００４０】
また、実施例１においては、ファイルアップロードに必要な処理として、コンテナ化処理と暗号化処理とがこの順で行われることを想定し、ファイルダウンロードに必要な処理として、復号処理とコンテナ解凍処理と再圧縮処理とがこの順で行われることを想定したが、本発明はこれに限られるものではない。これらの処理の順番も任意であるし、ファイルアップロードやファイルダウンロードに必要な処理として異なる処理が追加されてもよく、また、一部の処理が削除されてもよい。
【００４１】
［実施例１に係るファイル転送システムの構成］
次に、図３〜図７を用いて、実施例１に係るファイル転送システムの構成を説明する。図３および図４は、実施例１におけるアプリケーションサーバの構成を示すブロック図であり、図５は、実施例１に係るファイル転送システムにおけるＨＤＤアクセス（ファイルアップロード）について説明するための図であり、図６は、実施例１に係るファイル転送システムにおけるＨＤＤアクセス（ファイルダウンロード）について説明するための図であり、図７は、実施例１におけるファイル転送サーバの構成を示すブロック図である。以下、アプリケーションサーバ、ファイル転送サーバを順に説明する。
【００４２】
［アプリケーションサーバ］
図３に示すように、実施例１におけるアプリケーションサーバ１００は、通信部１１０と、記憶部１２０と、制御部１３０とから主に構成される。
【００４３】
通信部１１０は、ＩＰ（Internet  Protocol）通信用の一般的なインタフェースおよびライブラリを備え、利用者端末やファイル転送サーバ２００との間でファイル（コンテナを含む）を送受信するなどする。
【００４４】
記憶部１２０は、制御部１３０による各種処理に用いるデータを記憶する手段であり、特に本発明に密接に関連するものとしては、図３に示すように、ファイル記憶部１２１を備える。
【００４５】
ファイル記憶部１２１は、ファイルを記憶するハードディスクドライブ（ＨＤＤ）のような外部記憶装置である。ファイル記憶部１２１は、後述するファイル／コンテナ受信部１３１によって受信されたファイル（利用者端末から送信されたファイル）を当該ファイル／コンテナ受信部１３１によって格納されることで記憶する。また、ファイル記憶部１２１は、後述するファイルアップロード処理部１４０によって複数の処理を段階的に実行された処理実行後のファイルを記憶する。また、ファイル記憶部１２１に記憶さているファイルは、後述するコンテナ／ファイル送信部１３３による処理に利用される。
【００４６】
制御部１３０は、アプリケーションサーバ１００を制御して各種処理を実行する手段であり、特に本発明に密接に関連するものとしては、図３に示すように、ファイル／コンテナ受信部１３１と、ファイル処理部１３２と、コンテナ／ファイル送信部１３３と、ファイル受信要求受信部１３４と、ファイル受信要求転送部１３５とを備える。また、ファイル処理部１３２は、ファイルアップロード処理部１４０と、ファイルダウンロード処理部１５０とを備える。
【００４７】
ファイル／コンテナ受信部１３１は、ファイルアップロード時、利用者端末から送信されたファイルを受信してファイル記憶部１２１に格納する。また、ファイル／コンテナ受信部１３１は、ファイルアップロード時、ファイル記憶部１２１に格納したファイルをファイル処理部１３２（ファイルアップロード処理部１４０）に入力する。ここで、ファイル／コンテナ受信部１３１は、ファイルアップロード処理部１４０が備える複数の処理器の内、最も前段の処理を実行する処理器（後述するコンテナ化処理部１４１）にファイルを入力する。
【００４８】
また、ファイル／コンテナ受信部１３１は、ファイルダウンロード時、ファイル転送サーバ２００から送信されたコンテナを受信してファイル処理部１３２（ファイルダウンロード処理部１５０）に入力する。ここで、ファイル／コンテナ受信部１３１は、ファイルダウンロード処理部１５０が備える複数の処理器の内、最も前段の処理を実行する処理器（後述する復号処理部１５１）にファイルを入力する。
【００４９】
ここで、実施例１におけるファイル／コンテナ受信部１３１は、ファイルダウンロード時、ファイル転送サーバ２００から送信されたコンテナが、分割されたコンテナ（コンテナデータおよびメタデータ（コンテナ全体を説明するデータ）のデータセットを分割したもの）である場合には、分割されたコンテナを１つずつストリーム状に受信し、受信した順に結合して、元のデータセットを再構築する。なお、「ストリーム状」とは、データとして不完全な状態ではあるが、到着した順に処理できる状態であることを意味する。
【００５０】
続いて、ファイル／コンテナ受信部１３１は、データセットをコンテナデータとメタデータとに分離する。その後、ファイル／コンテナ受信部１３１は、コンテナデータとメタデータとに分離されたファイルを、ストリーム状に復号処理部１５１に入力する。
【００５１】
ファイルアップロード処理部１４０は、ファイルアップロード時、ファイル／コンテナ受信部１３１が利用者端末から送信されたファイルをファイル記憶部１２１に格納した際、ファイルのアップロードに必要な複数の処理を段階的に実行する処理器各々を生成する。具体的には、ファイルアップロード処理部１４０は、図４に示すように、コンテナ化処理部１４１と、暗号化処理部１４２とを生成する。
【００５２】
ここで、実施例１におけるファイルアップロード処理部１４０は、これらの処理器各々を生成する際に、コンテナ化処理部１４１による処理と、暗号化処理部１４２による処理とを、バッファで結合してストリーム化している。具体的に説明すると、コンテナ化処理部１４１による処理結果がバッファに出力され、バッファに出力された当該処理結果が暗号化処理部１４２に入力されるように、コンテナ化処理部１４１による処理と暗号化処理部１４２による処理とをバッファで結合してストリーム化している。これを言い換えると、コンテナ化処理部１４１による処理結果として中間生成データが生成されることはなく、また、コンテナ化処理部１４１による処理結果がファイル記憶部１２１に格納されることもない。このため、コンテナ化処理部１４１は、ファイル記憶部１２１にアクセスすることなく、暗号化処理部１４２に処理結果を渡すことができ、一方、暗号化処理部１４２は、ファイル記憶部１２１にアクセスすることなく、バッファから入力された処理結果を用いて処理を実行することができる。なお、このようなストリーム化をＪａｖａ（登録商標）で実装する場合には、ストリームバッファで結合することになる。
【００５３】
コンテナ化処理部１４１は、ファイル記憶部１２１に記憶されているファイルに対してコンテナ化処理を実行し、処理結果をバッファに出力する。すなわち、コンテナ化処理部１４１は、ファイル記憶部１２１に記憶されているファイルに対して圧縮処理を行う。
【００５４】
暗号化処理部１４２は、バッファに出力された処理結果（コンテナ化処理部１４１による処理の処理結果）を入力として受け付けて暗号化処理を実行し、処理結果をファイル記憶部１２１に格納する。なお、実施例１における暗号化処理部１４２は、暗号化処理の他に、チェックサム計算を実行する。
【００５５】
ところで、ファイルアップロード処理部１４０による処理とＨＤＤアクセスとの関係について、図５を用いて説明する。なお、図５は、アプリケーションサーバ１００におけるファイルアップロード時の処理の流れを概念的に示すものであって、『ファイル受信』、『コンテナ化』、『暗号化』、『チェックサム計算』、および『コンテナ送信』は、アプリケーションサーバ１００を構成する各部に必ずしも対応するものではない。また、『ＨＤＤ』とは、ファイル記憶部１２１のことであり、『ＨＤＤ』が実線で表現されている場合は、ファイル記憶部１２１に対するアクセスが発生していることを示し、『ＨＤＤ』が点線で表現されている場合には、ファイル記憶部１２１に対するアクセスが発生していないことを示している。すなわち、『ＨＤＤ』に対して矢印の終端が示されている場合には、ファイル記憶部１２１に対する書き込みアクセスが発生していることを示し、『ＨＤＤ』に矢印の始点が示されている場合には、ファイル記憶部１２１からの読み出しアクセスが発生していることを示している。
【００５６】
すると、図５に示すように、実施例１におけるファイル転送システムにおいて、ファイルアップロード時には、利用者端末から送信されたファイルや中間生成データがファイル記憶部１２１に保存される回数が、３回から２回に減少していることがわかる。すなわち、コンテナ化処理部１４１による処理と暗号化処理部１４２による処理とがバッファで結合してストリーム化されていることで、『コンテナ化』と『暗号化』との間において、『ＨＤＤ』に対する書き込みアクセスや読み出しアクセスが発生しないのである。
【００５７】
図４に戻り、ファイルダウンロード処理部１５０は、ファイルダウンロード時、ファイル受信要求受信部１３４が利用者端末からファイル受信要求を受信した際、ファイルのダウンロードに必要な複数の処理を段階的に実行する処理器各々を生成する。具体的には、ファイルダウンロード処理部１５０は、図４に示すように、復号処理部１５１と、コンテナ解凍処理部１５２と、ＺＩＰ再圧縮処理部１５３とを生成する。
【００５８】
ここで、実施例１におけるファイルダウンロード処理部１５０は、これらの処理器各々を生成する際に、復号処理部１５１による処理と、コンテナ解凍処理部１５２による処理と、ＺＩＰ再圧縮処理部１５３による処理とを、バッファで結合してストリーム化している。具体的に説明すると、復号処理部１５１による処理結果がバッファに出力され、バッファに出力された当該処理結果がコンテナ解凍処理部１５２に入力されるように、復号処理部１５１による処理とコンテナ解凍処理部１５２による処理とをバッファで結合してストリーム化している。これを言い換えると、復号処理部１５１による処理結果として中間生成データが生成されることはなく、また、復号処理部１５１による処理結果がファイル記憶部１２１に格納されることもない。このため、復号処理部１５１は、ファイル記憶部１２１にアクセスすることなく、コンテナ解凍処理部１５２に処理結果を渡すことができ、一方、コンテナ解凍処理部１５２は、ファイル記憶部１２１にアクセスすることなく、バッファから入力された処理結果を用いて処理を実行することができる。
【００５９】
同様に、コンテナ解凍処理部１５２による処理結果がバッファに出力され、バッファに出力された当該処理結果がＺＩＰ再圧縮処理部１５３に入力されるように、コンテナ解凍処理部１５２による処理とＺＩＰ再圧縮処理部１５３による処理とをバッファで結合してストリーム化している。これを言い換えると、コンテナ解凍処理部１５２による処理結果として中間生成データが生成されることはなく、また、コンテナ解凍処理部１５２による処理結果がファイル記憶部１２１に格納されることもない。このため、コンテナ解凍処理部１５２は、ファイル記憶部１２１にアクセスすることなく、ＺＩＰ再圧縮処理部１５３に処理結果を渡すことができ、一方、ＺＩＰ再圧縮処理部１５３は、ファイル記憶部１２１にアクセスすることなく、バッファから入力された処理結果を用いて処理を実行することができる。なお、このようなストリーム化をＪａｖａ（登録商標）で実装する場合には、ストリームバッファで結合することになる。
【００６０】
復号処理部１５１は、ファイル／コンテナ受信部１３１からストリーム状に入力されたファイルに対して復号処理を実行し、処理結果をバッファに出力する。
【００６１】
コンテナ解凍処理部１５２は、バッファに出力された処理結果（復号処理部１５１による処理の処理結果）を入力として受け付けてコンテナ解凍処理を実行し、処理結果をバッファに出力する。
【００６２】
ＺＩＰ再圧縮処理部１５３は、バッファに出力された処理結果（コンテナ解凍処理部１５２による処理の処理結果）を入力として受け付けてＺＩＰ再圧縮処理を実行し、処理結果をストリーム状にコンテナ／ファイル送信部１３３に入力する。
【００６３】
ところで、ファイルダウンロード処理部１５０による処理とＨＤＤアクセスとの関係について、図６を用いて説明する。なお、図６は、アプリケーションサーバ１００におけるファイルダウンロード時の処理の流れを概念的に示すものであって、『コンテナ受信』、『復号』、『コンテナ解凍』、『ＺＩＰ再圧縮』、および『ファイル送信』は、アプリケーションサーバ１００を構成する各部に必ずしも対応するものではない。
【００６４】
すると、図６に示すように、実施例１におけるファイル転送システムにおいて、ファイルダウンロード時には、ファイル転送サーバから送信されたコンテナや中間生成データがファイル記憶部１２１に保存される回数が、４回から０回に減少していることがわかる。すなわち、復号処理部１５１による処理とコンテナ解凍処理部１５２による処理とＺＩＰ再圧縮処理部１５３による処理とがバッファで結合してストリーム化されていることで、『復号』と『コンテナ解凍』との間において、また、『コンテナ解凍』と『ＺＩＰ再圧縮』との間において、『ＨＤＤ』に対する書き込みアクセスや読み出しアクセスが発生しないのである。また、実施例１に係るファイル転送システムにおいては、ファイル転送サーバ２００とファイル／コンテナ受信部１３１との間のファイルの送受信や、ＺＩＰ再圧縮処理部１５３とコンテナ／ファイル送信部１３３との間のファイルの送受信、あるいは、コンテナ／ファイル送信部１３３と利用者端末との間のファイルの送受信も、全てストリーム状に行われることから、『ＨＤＤ』に対する書き込みアクセスや読み出しアクセスが全く発生しないのである。
【００６５】
図３に戻り、コンテナ／ファイル送信部１３３は、ファイルアップロード時、ファイル記憶部１２１に格納されたコンテナを、ファイル転送サーバ２００に送信する。また、コンテナ／ファイル送信部１３３は、ファイルダウンロード時、ＺＩＰ再圧縮処理部１５３から入力されたファイルを、ストリーム状に利用者端末に送信する。
【００６６】
なお、実施例１におけるコンテナ／ファイル送信部１３３は、ファイルアップロード時、ファイル転送サーバ２００に送信するコンテナ全体を説明するメタデータを作成し、コンテナデータに付与する。そして、コンテナ／ファイル送信部１３３は、コンテナデータおよびメタデータのデータセットを送信する。この時、ネットワーク環境やユーザ設定などに応じて、当該データセットを何回かに分割して送信することがある。コンテナ／ファイル送信部１３３は、分割送信の際には、データセットの先頭に近いものから順に送る。
【００６７】
ファイル受信要求受信部１３４は、ファイル受信要求（ファイル転送サーバ２００に記憶されているファイルのダウンロードを要求）を利用者端末から受信する。ファイル受信要求転送部１３５は、ファイル受信要求受信部１３４によって受信されたファイル受信要求を、ファイル転送サーバ２００に転送する。例えば、ファイル受信要求転送部１３５は、ＨＴＴＰクライアントとしての機能を備え、ＨＴＴＰサーバとしての機能を備えるファイル転送サーバ２００に対して『ＧＥＴリクエスト』コマンドを送信することなどで、ファイル受信要求を転送する。
【００６８】
［ファイル転送サーバ］
図７に示すように、実施例１におけるファイル転送サーバ２００は、通信部２１０と、記憶部２２０と、制御部２３０とから主に構成される。
【００６９】
通信部２１０は、ＩＰ通信用の一般的なインタフェースおよびライブラリを備え、アプリケーションサーバ１００との間でコンテナを送受信するなどする。
【００７０】
記憶部２２０は、制御部２３０による各種処理に用いるデータを記憶する手段であり、特に本発明に密接に関連するものとしては、図７に示すように、コンテナ記憶部２２１を備える。
【００７１】
コンテナ記憶部２２１は、コンテナを記憶する。コンテナ記憶部２２１は、後述するコンテナ受信部２３１によって受信されたコンテナ（アプリケーションサーバ１００から送信されたコンテナ）を当該コンテナ受信部２３１によって格納されることで記憶する。また、コンテナ記憶部２２１に記憶されているコンテナは、後述するコンテナ転送部２３３による処理に利用される。
【００７２】
制御部２３０は、ファイル転送サーバ２００を制御して各種処理を実行する手段であり、特に本発明に密接に関連するものとしては、図７に示すように、コンテナ受信部２３１と、ファイル受信要求受信部２３２と、コンテナ転送部２３３とを備える。
【００７３】
コンテナ受信部２３１は、ファイルアップロード時、アプリケーションサーバ１００から送信されたコンテナを受信してコンテナ記憶部２２１に格納する。
【００７４】
ファイル受信要求受信部２３２は、アプリケーションサーバ１００から転送されたファイル受信要求（利用者端末から送信された要求であって、ファイル転送サーバ２００に記憶されているファイルをダウンロードすることを要求する）を受信する。
【００７５】
コンテナ転送部２３３は、ファイル受信要求受信部２３２によって受信されたファイル受信要求にて指定されるファイル（なお、実施例１においては、コンテナとして圧縮されたもの）を、ストリーム状にアプリケーションサーバ１００に送信する。
【００７６】
ところで、実施例１に係るファイル転送システムにおいて、ファイル転送サーバ２００は、利用者端末からファイル受信要求を受信しなかったファイルについては、一定期間を経過することでコンテナ記憶部２２１から削除するという運用形態を想定している。もっとも、本発明はこれに限られるものではなく、利用者端末からファイル受信要求を受信しなかったファイルについては、バッチ処理でアプリケーションサーバ１００に送信するような運用形態としてもよい。
【００７７】
［実施例１に係るファイル転送システムによる処理の手順］
次に、図８および図９を用いて、実施例１に係るファイル転送システムによる処理の手順を説明する。図８は、実施例１に係るファイル転送システムによる処理の手順（ファイルアップロードシーケンス）を示すシーケンス図であり、図９は、実施例１に係るファイル転送システムによる処理の手順（ファイルダウンロードシーケンス）を示すシーケンス図である。以下、ファイルアップロード、ファイルダウンロードを順に説明する。なお、図８および図９において、実線で示す処理の手順は「呼び出し」を意味し、点線で示す処理の手順は「処理の戻り」を意味する。
【００７８】
［ファイルアップロード］
まず、図８に示す『サーブレット』、『コンテナ化／暗号化ストリーム』、『ファイルシステム』、および『コンテナ送信機能』について説明すると、これらは、いずれも、実施例１におけるアプリケーションサーバ１００が、各部の機能をＪａｖａ（登録商標）等を用いて実装した場合の一例を示すものである。
【００７９】
具体的には、『サーブレット』は、Ｗｅｂサーバ上で動作するＪａｖａ（登録商標）のプログラムのことである。すなわち、この場合、アプリケーションサーバ１００は、Ｗｅｂサーバとしての機能を備える。利用者端末にインストールされているＷｅｂブラウザが、アプリケーションサーバ１００に対してＨＴＴＰ（HyperText  Transfer  Protocol）リクエストでファイルを送信（アップロード）すると、アプリケーションサーバ１００が備えるサーブレットのプログラムが動作し、動作結果をＷｅｂブラウザに応答する。図３で示したファイル／コンテナ受信部１３１がこれに相当する。
【００８０】
また、『コンテナ化／暗号化ストリーム』は、ここでは、Ｊａｖａ（登録商標）を用いてストリーム化された『コンテナ化処理』を実行する処理器や『暗号化処理』を実行する処理器のことである。図４で示したコンテナ化処理部１４１や暗号化処理部１４２がこれに相当する。また、『ファイルシステム』は、一般的には、コンピュータの資源を操作するためのオペレーティングシステムの機能のことであるが、ここでは、アプリケーションサーバ１００のファイルシステムを経由して図４に示したファイル記憶部１２１にファイルが格納されることを示すものである。また、『コンテナ送信機能』は、図３で示したコンテナ／ファイル送信部１３３がこれに相当する。なお、本発明におけるアプリケーションサーバ１００は、このような実装に限られるものではなく、Ｊａｖａ（登録商標）以外の他の言語を用いて実装してもよく、具体的な実装方法は任意である。
【００８１】
次に、実施例１に係るファイル転送システムによるファイルアップロードのシーケンスを説明すると、まず、利用者端末にインストールされているＷｅｂブラウザが、アプリケーションサーバ１００（Ｗｅｂサーバ）に対してＨＴＴＰリクエストでファイル送信（アップロード）を開始する（ステップＳ１０１）。
【００８２】
そして、アプリケーションサーバ１００で動作する『サーブレット』は、利用者端末から受信した全てのユーザデータ（平文）を『ファイルシステム』に保存する（ステップＳ１０２）。なお、当該ファイルは、後に削除されるファイルであることから、一時的に保存されるファイルという意味で『一時ファイル』という。
【００８３】
ここで、実施例１におけるアプリケーションサーバ１００は、ファイルのアップロードに必要な複数の処理各々を実行する処理器として、『コンテナ化処理』を実行する処理器と、『暗号化処理』を実行する処理器とを生成する。また、『コンテナ化処理』を実行する処理器と『暗号化処理』を実行する処理器とは、ストリーム化されている。具体的には、『コンテナ化処理』を実行する処理器の処理結果がバッファに出力され、バッファに出力された当該処理結果が『暗号化処理』を実行する処理器に入力されるように、『コンテナ化処理』を実行する処理器と『暗号化処理』を実行する処理器とがバッファで結合されている。なお、実施例１においては、『コンテナ化処理』を実行する処理器の処理結果の一部（コンテナ化データの一部）をバッファに蓄積すると、コンテナ化データの全部を蓄積し終えなくても、『暗号化処理』を実行する処理器は、バッファに蓄積された処理結果の一部を入力として受け付けて処理を開始し、結果として、『コンテナ化処理』を実行する処理器・『暗号化処理』を実行する処理器の両方の処理が同時に実行されることになる。
【００８４】
続いて、アプリケーションサーバ１００の『サーブレット』は、『ファイルシステム』からファイル情報を取得する（ステップＳ１０３およびＳ１０４）。ここで、ファイル情報とは、例えば、一時ファイルのファイル名（ディレクトリパスを含む）のことである。後に『サーブレット』がコンテナ化／暗号化スレッドを起動するにあたり、当該コンテナ化／暗号化の対象とすべき一時ファイルを指定するためにファイル名が必要になることから、この事前処理として、ファイル情報の取得が行われる。
【００８５】
そして、『サーブレット』は、コンテナ化／暗号化スレッドを起動する（ステップＳ１０５）。具体的には、アプリケーションサーバ１００の『サーブレット』は、最も前段の処理器である『コンテナ化処理』を実行する処理器に、ファイルを入力する。なお、『サーブレット』は、アップロード完了画面を利用者端末にインストールされているＷｅｂブラウザに応答する（ステップＳ１０６）。
【００８６】
すると、『コンテナ化処理』を実行する処理器の処理結果がバッファに出力され、バッファに出力された当該処理結果が『暗号化処理』を実行する処理器に入力される（なお、『暗号化処理』を実行する処理器は、暗号化の他にチェックサム計算を行う）。そして、アプリケーションサーバ１００は、『暗号化処理』を実行する処理器の処理結果（コンテナ）を『ファイルシステム』に保存する（ステップＳ１０７およびＳ１０８）。
【００８７】
その後、アプリケーションサーバ１００は、『ファイルシステム』からコンテナを読み出し、コンテナ送信スレッドを起動して（ステップＳ１０９）、『ファイルシステム』に保存していた一時ファイルを削除する（ステップＳ１１０）。なお、一時ファイルを削除するか否かという点は、運用の形態等に合わせて任意に変更し得るものである。
【００８８】
その後、『コンテナ送信機能』は、メタデータの作成など、コンテナ送信準備処理や（ステップＳ１１１）、コンテナ送信要求を実行するなどして（ステップＳ１１２）、コンテナをファイル転送サーバ２００に送信する。
【００８９】
［ファイルダウンロード］
まず、図９に示す『サーブレット』、『復号／解凍／ＺＩＰストリーム』、および『ＨＴＴＰクライアント』について説明すると、これらは、いずれも、実施例１におけるアプリケーションサーバ１００が、各部の機能をＪａｖａ（登録商標）等を用いて実装した場合の一例を示すものである。
【００９０】
『サーブレット』は、図３で示したファイル受信要求受信部１３４やファイル受信要求転送部１３５がこれに相当する。また、『復号／解凍／ＺＩＰストリーム』は、ここでは、Ｊａｖａ（登録商標）を用いてストリーム化された『復号処理』を実行する処理器や『コンテナ解凍処理』を実行する処理器、あるいは『ＺＩＰ再圧縮処理』を実行する処理器のことである。図４で示した復号処理部１５１やコンテナ解凍処理部１５２、ＺＩＰ再圧縮処理部１５３がこれに相当する。また、『ＨＴＴＰクライアント』は、アプリケーションサーバ１００が、ＨＴＴＰクライアントとしての機能を備えていることを示す。図３で示したファイル／コンテナ受信部１３１やファイル受信要求転送部１３５がこれに相当する。なお、本発明におけるアプリケーションサーバ１００は、このような実装に限られるものではなく、Ｊａｖａ（登録商標）以外の他の言語を用いて実装してもよく、具体的な実装方法は任意である。
【００９１】
次に、実施例１に係るファイル転送システムによるファイルダウンロードのシーケンスを説明すると、まず、利用者が、自身宛のコンテナがファイル転送サーバ２００に到着したことを知った場合などに、利用者端末にインストールされているＷｅｂブラウザが、アプリケーションサーバ１００（Ｗｅｂサーバ）に対してＨＴＴＰリクエストでファイル受信要求（ファイルダウンロード要求）を送信する（ステップＳ２０１）。
【００９２】
そして、アプリケーションサーバ１００で動作する『サーブレット』は、ファイルのダウンロードに必要な複数の処理各々を実行する処理器として、『復号処理』を実行する処理器と、『コンテナ解凍処理』を実行する処理器と、『再圧縮処理』を実行する処理器とを生成するとともに、利用者端末から送信されたファイル受信要求を『ＨＴＴＰクライアント』に伝達し（ステップＳ２０２）、『ＨＴＴＰクライアント』が、ファイル転送サーバ２００に対してＧＥＴリクエストで当該ファイル受信要求を転送する（ステップＳ２０３）。
【００９３】
すると、ファイル転送サーバ２００は、転送されたファイル受信要求にて指定されるコンテナを、アプリケーションサーバ１００にストリーム状に送信する（ステップＳ２０４）。
【００９４】
一方、アプリケーションサーバ１００の『ＨＴＴＰクライアント』は、ファイル転送サーバ２００からストリーム状に受信したコンテナを、最も前段の処理器である『復号処理』を実行する処理器にストリーム状に入力する（ステップＳ２０５）。ここで、実施例１におけるアプリケーションサーバ１００において、『復号処理』を実行する処理器と『コンテナ解凍処理』を実行する処理器とは、ストリーム化されている。具体的には、『復号処理』を実行する処理器の処理結果がバッファに出力され、バッファに出力された当該処理結果が『コンテナ解凍処理』を実行する処理器に入力されるように、『復号処理』を実行する処理器と『コンテナ解凍処理』を実行する処理器とがバッファで結合されている。さらに、『コンテナ解凍処理』を実行する処理器と『再圧縮処理』を実行する処理器とは、ストリーム化されている。具体的には、『コンテナ解凍処理』を実行する処理器の処理結果がバッファに出力され、バッファに出力された当該処理結果が『再圧縮処理』を実行する処理器に入力されるように、『コンテナ解凍処理』を実行する処理器と『再圧縮処理』を実行する処理器とがバッファで結合されている。なお、実施例１においては、『復号処理』を実行する処理器の処理結果の一部（コンテナ化データの一部）をバッファに蓄積すると、コンテナ化データの全部を蓄積し終えなくても、『コンテナ解凍処理』を実行する処理器は、バッファに蓄積された処理結果の一部を入力として受け付けて処理を開始し、結果として、『復号処理』を実行する処理器・『コンテナ解凍処理』を実行する処理器の両方の処理が同時に実行されることになる。また、実施例１においては、『コンテナ解凍処理』を実行する処理器の処理結果の一部（ファイルの一部）をバッファに蓄積すると、ファイルの全部を蓄積し終えなくても、『再圧縮処理』を実行する処理器は、バッファに蓄積された処理結果の一部を入力として受け付けて処理を開始し、結果として、『コンテナ解凍処理』を実行する処理器・『再圧縮処理』を実行する処理器の両方の処理が同時に実行されることになる。
【００９５】
すると、『復号処理』を実行する処理器の処理結果がバッファに出力され、バッファに出力された当該処理結果が『コンテナ解凍処理』を実行する処理器に入力され、『コンテナ解凍処理』を実行する処理器の処理結果がバッファに出力され、バッファに出力された当該処理結果が『ＺＩＰ再圧縮処理』を実行する処理器に入力される（ステップＳ２０６）。そして、アプリケーションサーバ１００は、『ＺＩＰ再圧縮処理』を実行する処理器の処理結果（ＺＩＰファイル）を、『サーブレット』に対してストリーム状に出力し（ステップＳ２０７）、続いて、『サーブレット』は、処理結果（ＺＩＰファイル）を、利用者端末にインストールされているＷｅｂブラウザに対してストリーム状に送信する（ステップＳ２０８）。
【００９６】
［実施例１の効果］
上記してきたように、実施例１によれば、利用者端末とファイル転送サーバとの間にアプリケーションサーバが介在し、当該アプリケーションサーバが、当該利用者端末と当該ファイル転送サーバとの間で送受信されるファイルに対して当該ファイルの転送に必要な複数の処理を段階的に実行するファイル転送システムであって、アプリケーションサーバは、前段の処理の処理結果がバッファに出力され、バッファに出力された当該処理結果が次段の処理に入力されるように複数の処理各々を実行する処理器各々を備え、複数の処理を実行する前のファイルとして利用者端末もしくはファイル転送サーバから送信されたファイルを、処理器各々の内最も前段の処理を実行する処理器に入力し、処理器各々の内最も後段の処理を実行する処理器から出力された処理結果を、ファイル転送サーバもしくは利用者端末に送信するので、処理をストリーム化することでデータの受け渡しがメモリ上で行われるようになり、外部記憶装置にアクセスする回数が減少する結果、全体の処理時間を短縮することが可能になる。また、中間生成データ（例えば、圧縮済みデータや暗号化済みデータなど）が発生しなくなるので、外部記憶装置の使用量を節約することが可能になる。
【００９７】
また、実施例１によれば、前段の処理器が処理結果の一部（ファイルの一部）をバッファに蓄積すると、ファイルの全部を蓄積し終えなくても、次段の処理器は、バッファに蓄積された処理結果の一部を入力として受け付けて処理を開始することができるので、結果として、前段・次段両方の処理を同時に実行できるため、全体の処理時間をより短縮することが可能になる。
【００９８】
また、実施例１によれば、アプリケーションサーバは、複数の処理を実行する前のファイルとして利用者端末から送信されたファイルをファイル記憶部（外部記憶装置）に格納するものであって、最も後段の処理器から処理結果が出力されると、当該ファイルをファイル記憶部から削除するので、利用者端末から送信されたファイル（例えば、平文状態のフルセットのユーザデータなど）が外部記憶装置に保存される期間が短縮される結果、セキュリティ面の堅牢性を高めることが可能になる。
【００９９】
また、実施例１によれば、アプリケーションサーバは、ファイル転送サーバに記憶されているファイルを受信することを要求するファイル受信要求を利用者端末から受信すると、当該ファイル受信要求を当該ファイル転送サーバに転送し、ファイル転送サーバは、転送されたファイル受信要求を受信すると、当該ファイル受信要求にて指定されるファイルをアプリケーションサーバに送信するので、ファイル転送サーバからアプリケーションサーバまでのファイル受信については、バッチ処理を廃止してリアルタイム処理（インタラクティブ処理）とすることで（もしくは、バッチ処理とリアルタイム処理とを並存させることで）、ファイル転送サーバにファイルが到着するとすぐに利用者端末がファイル受信することが可能になり、ユーザまでのファイル到達を迅速にすることが可能になる。
【０１００】
すなわち、従来の手法では、ファイル転送サーバからアプリケーションサーバまでのファイル受信についてはバッチ処理によって行われていた。このようなバッチ処理では、ユーザがダウンロードしたいと要求するファイルがファイル転送サーバに到着していても、当該ファイルがアプリケーションサーバに到着していない限り、ユーザは、ファイルをダウンロードすることができなかった。この点、実施例１によれば、ユーザがダウンロードしたいと要求するファイルがファイル転送サーバに到着してさえいれば、ユーザは、適宜、ファイルのダウンロード要求をアプリケーションサーバに送信することで、直ちにファイルのダウンロードを行うことができる。
【実施例２】
【０１０１】
［他の実施例］
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。
【０１０２】
［システム構成等］
本実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともでき、あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【０１０３】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示（図３、４、７）の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【０１０４】
なお、本実施例で説明したファイル転送方法は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。このプログラムは、インターネットなどのネットワークを介して配布することができる。また、このプログラムは、ハードディスク、フレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行することもできる。
【産業上の利用可能性】
【０１０５】
以上のように、本発明に係るファイル転送システムおよびアプリケーションサーバは、利用者端末とファイル転送サーバとの間に介在するアプリケーションサーバが、当該利用者端末と当該ファイル転送サーバとの間で送受信されるファイルに対して当該ファイルの転送に必要な複数の処理を段階的に実行することに有用であり、特に、全体の処理時間を短縮することに適する。
【図面の簡単な説明】
【０１０６】
【図１】実施例１に係るファイル転送システムの概要および特徴（ファイルアップロード）を説明するための図である。
【図２】実施例１に係るファイル転送システムの概要および特徴（ファイルダウンロード）を説明するための図である。
【図３】実施例１におけるアプリケーションサーバの構成を示すブロック図である。
【図４】実施例１におけるアプリケーションサーバの構成を示すブロック図である。
【図５】実施例１に係るファイル転送システムにおけるＨＤＤアクセス（ファイルアップロード）について説明するための図である。
【図６】実施例１に係るファイル転送システムにおけるＨＤＤアクセス（ファイルダウンロード）について説明するための図である。
【図７】実施例１におけるファイル転送サーバの構成を示すブロック図である。
【図８】実施例１に係るファイル転送システムによる処理の手順（ファイルアップロードシーケンス）を示すシーケンス図である。
【図９】実施例１に係るファイル転送システムによる処理の手順（ファイルダウンロードシーケンス）を示すシーケンス図である。
【図１０】従来技術（ファイルアップロード）を説明するための図である。
【図１１】従来技術（ファイルダウンロード）を説明するための図である。
【符号の説明】
【０１０７】
１００  アプリケーションサーバ
１１０  通信部
１２０  記憶部
１２１  ファイル記憶部
１３０  制御部
１３１  ファイル／コンテナ受信部
１３２  ファイル処理部
１３３  コンテナ／ファイル送信部
１３４  ファイル受信要求受信部
１３５  ファイル受信要求転送部
１４０  ファイルアップロード処理部
１４１  コンテナ化処理部
１４２  暗号化処理部
１５０  ファイルダウンロード処理部
１５１  復号処理部
１５２  コンテナ解凍処理部
１５３  ＺＩＰ再圧縮処理部
２００  ファイル転送サーバ
２１０  通信部
２２０  記憶部
２２１  コンテナ記憶部
２３０  制御部
２３１  コンテナ受信部
２３２  ファイル受信要求受信部
２３３  コンテナ転送部
【図１】
0004648415.tif 000002
【図２】
0004648415.tif 000003
【図３】
0004648415.tif 000004
【図４】
0004648415.tif 000005
【図５】
0004648415.tif 000006
【図６】
0004648415.tif 000007
【図７】
0004648415.tif 000008
【図８】
0004648415.tif 000009
【図９】
0004648415.tif 000010
【図１０】
0004648415.tif 000011
【図１１】
0004648415.tif 000012