CXFサービスには、gzippedファイルをアップロードして処理するPOSTメソッドがあります。アップロードされたファイルが大きければ、サービスによって10分以上処理されます。問題は、クライアントが10分後に504(ゲートウェイタイムアウト)応答を受信することです。
重要なことは、データが高速にアップロードされるが、処理時間が長く、クライアントがデータが完全に処理されるまで待機しないことです。
マルチパートをストリーミングして接続が突然閉じないようにする方法はありますか?
添付ファイルからストリームを完全に読み取らないようにする方法がありますが、cnunkでそれを読み取る方法がありますか?
このタイムアウトを設定する方法がありますか?ファイル投稿するCXFでのマルチパートの長時間処理により、504(タイムアウト)が発生する
@POST
@Consumes("multipart/form-data")
@Produces("application/json")
@Path("/gzip")
UploadResult uploadGzip(
@Multipart("data") Attachment attachment,
@QueryParam("default-expiration-period") @Nullable String defaultExpirationPeriod
) throws NotAcceptableException, BadRequestException {
String filename = attachment.getContentDisposition().getParameter("filename"); //filename is important
InputStream inputStream = attachment.getDataHandler().getInputStream();
return readAndProcess(filename, inputStream);
}
とHTML形式::
サービス
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Dump factors</title>
</head>
<body>
<form method="POST" enctype="multipart/form-data"
action="https://myserver.com/api/data/gzip">
File to upload: <input type="file" name="data"><br/>
<br/>
<input type="submit" value="Press"> to upload the file!
</form>
</body>
</html>