私は、人々がファイルをアップロードおよびダウンロードできるようにする小さなアプリケーションを作成しています。アップロード/ダウンロード機能を提供するために、このアプリケーションに Web サービスを追加しましたが、実装が大きなファイルにどれだけうまく対処できるかについてはよくわかりません。
現時点では、アップロードとダウンロードのメソッドの定義は次のようになっています (Apache CXF を使用して記述)。
boolean uploadFile(@WebParam(name = "username") String username,
@WebParam(name = "password") String password,
@WebParam(name = "filename") String filename,
@WebParam(name = "fileContents") byte[] fileContents)
throws UploadException, LoginException;
byte[] downloadFile(@WebParam(name = "username") String username,
@WebParam(name = "password") String password,
@WebParam(name = "filename") String filename) throws DownloadException,
LoginException;
したがって、ファイルはバイト配列としてアップロードおよびダウンロードされます。しかし、ばかげたサイズ (たとえば 1GB) のファイルがある場合、確実にすべての情報をメモリに格納しようとし、サービスをクラッシュさせます。
だから私の質問は - 代わりにある種のストリームを返すことは可能ですか? ただし、これはOSにまったく依存しないものではないと思います。Web サービスの背後にある理論は知っていますが、実際的な側面については、まだ少し情報を収集する必要があります。
どんな意見でも乾杯、リー