2017-09-26 5 views
0

자바에서 재생 컨트롤러가 있습니다. 요청 크기는 15MB입니다. 이 요청은 스트리밍 방식으로 APIGEE에서 발생합니다. 컨트롤러에 원시 바디 파서 (raw body parser)를 사용하여 데이터를 파일에 기록했습니다. 그러나 나는 전체 요청 데이터를 한 번에 파일에 기록한다고 생각합니다. 즉, 전체 요청은 파일에 기록되기 전에 한 시점에서 한 시점까지 메모리에 있어야합니다. 재생 프레임 워크 (JAVA)에서 스트림 요청을 수신 할 수있는 방법이 있습니까?Playframework Java - 컨트롤러에서 청크 HTTP 요청을 수신하는 방법

답변

2

몸체 해석기는 몸 전체를 메모리에 버퍼링하지 않고 몸체를 한 점 (최대을 사용하여 구성되며 기본값은 100kb)까지 버퍼링하고 한 번 초과하면 몸체를 파일로 플러시하고 시작합니다 파일에 기록하지만 파일에 쓸 데이터의 양에는 한계가 있으며 이는 play.http.parser.maxDiskBuffer을 사용하여 구성되며 기본값은 10MB입니다. 귀하의 15MB 본체가 아마 그 한도를 초과하므로 play.http.parser.maxDiskBuffer을 적절히 늘려야합니다. 이 내용은 모두 the documentation에 설명되어 있습니다.

요청을 스트리밍하는 방법에 대한 실제 질문에 대답하기 위해, 자바 사용자 정의 신체 파서를 작성하기위한 문서가 여기에 있습니다 : 대부분의 일을 설명

https://www.playframework.com/documentation/2.6.x/JavaBodyParsers#Writing-a-custom-body-parser

당신이 몸 파서 작업 플레이 방법에 대해 알아야합니다 따라서 스트리밍 본문 파싱을 수행하는 방법,이 대답에서 해당 설명서를 복제 할 필요가 없습니다.