기술문서
온라인 기술문의 이전에 기존에 등록된 기술문서 검색 서비스로 답변을 기다릴 필요없이
해결방법을 참고하실 수 있습니다.
기술문서 목록
ㆍ기술문서 목록 |
|
|
|
|
기술문서 ID |
X_000054 |
HowTo |
Jeus에서 DEXTUploadX 사용 시 ResponseData프로퍼티 사용 방법 |
에러코드 |
|
태그 |
DEXTUploadJ
DEXTUploadX
문제해결
|
작성일 |
2010-05-13 |
문제 |
DEXTUploadX는 Content-Length Header 방식 사용합니다. 데이터를 요청하는 방식 중에 DEXTUploadX는 Content-Length Header 방식 사용하는데, Jeus는 Transfer-Encoding:chunked 방식을 사용함으로 인해 서버에서 Write되는 정보를 받아오지 못하는 문제 Jeus에서 DEXTUploadX 사용 시 ResponseData프로퍼티 값을 받아오지 못하는 문제 |
해결 |
Content-Length를 내려주기 위해서는 2가지 방법이 있습니다.
1. API를 이용하는 방법
response.setContentLength(Write데이터.getBytes().length);
2. 환경파일 수정(WEBMain.xml)
<webtob-listener>
...
<output-buffer-size>0</output-buffer-size>
...
</webtob-listener>
[주의] 2번의 경우는 fullbuffer 방식으로 시스템에 영향을 줄 수 있습니다. 예를 들어 100MByte 다운로드의 경우에는 100M 객체가 JAVAHeap에 생성되어 OOM등 메모리 이슈를 발생시킬 수 있습니다. 또한 메모리에 100M 파일이 로딩된 후 다운로드가 수행되어 응답시간이 지연됩니다. 따라서 2번은 권고하지 않습니다.
HTTP 1.1 기반으로 웹 서버에 파일 다운로드를 요청하는 방식에는 Content-Length Header 를 사용하는 방식과 Chunked-Encoding Header 를 사용하는 방식이 있으며 이 두 가지 방식은 아래와 같습니다.
1. Content-Length Header를 사용하는 방식
Content-Length 는 Body 부분의 길이를 나타내는데 클라이언트 측에서 서버로 해당 파일에 대해 다운로드 요청을 하면 서버에서는 Response Header를 보내면서 Content-Length:1*DIGIT (Body 길이) 정보를 표시합니다. 이에 클라이언트 측에서는 Body의 길이만큼 데이터를 받은 후 서버와 Close 작업을 진행하게 됩니다.
2. Chunked-Encoding Header를 사용하는 방식
클라이언트 측에서 서버로 다운로드 요청을 하면 서버 측에서는 클라이언트로 Response Header에 Transfer-Encoding:chunked를 표시합니다. 그러면 Body 부분에서는 청크사이즈1+CRLF+데이터1+CRLF+청크사이즈2+CRLF+데이터2+CRLF+청크사이즈3+...+0 형태로 데이터를 전송하며 클라이언트 측에서는 처음 청크 사이즈를 알아낸 후 해당 길이만큼 데이터를 분리하고 다시 다음 청크 사이즈를 확인, 다음 데이터를 분리하는 과정을 반복한 다음 분리된 데이터를 합치는 작업을 통해서 서버로부터 파일에 대해서 다운로드를 받아서 처리하는 방식을 말합니다.
|
|