2016-10-27 3 views
1

이전 게시물을 검토 한 결과 비슷한 질문을 받았지만 문제가 해결되지 않았습니다. 내 응용 프로그램 사용자에 는 파일을 다운로드 할 수 있습니다, 그래서 사용자가 다운로드를 클릭 할 때 우리의 응용 프로그램 서버는 내부적으로 다음과 같이 XML 응답에서 파일 데이터를 전송 웹 서비스와 인증 된 세션까지의 설정 :webservice에서 큰 파일을 다운로드하여 응용 프로그램 성능 문제가 발생합니다.

<FileSerial xmlns="http://my.example.com/webservices"> 
    <filedata>base64Binary</filedata> 
    <filesize>int</filesize> 
    <filetype>string</filetype> 
    <mime_type>string</mime_type> 
</FileSerial> 

그리고 여러 사용자가 우리의 애플리케이션 서버 JVM 메모리가 매우 높은 간다 다운로드를 명중하고 응용 프로그램 서버가 응답하고 다시 시작할 필요가 없습니다 후

GetDocResponse docResponse = (GetDocResponse) webServiceTemplate.marshalSendAndReceive(getDoc); 
FileSerial fileSerial = docResponse.getGetDocResult(); 
fileByte = fileSerial.getFiledata(); 

: 봄-WS 아래을 사용했다. 내 생각 엔 fileByte가 내 응용 프로그램 서버 메모리에 저장되어있어 문제의 원인입니다.

응용 프로그램 서버 메모리에 저장하지 않고 클라이언트 브라우저로 직접 스트리밍 할 수있는 방법이 있습니까?

모든 샘플 코드가 도움이 될 것입니다.

답변

1

힙에 전체 문서와 함께 base64 로의 변환을로드하고 있습니다. 참조로 사본을 사용하지 않으면 2 진 데이터에서 다른 오브젝트로 맵핑 할 때마다 힙에 다른 항목이 작성됩니다.

당신은 멀티 파트 요청을 사용하여 WS의 첨부 파일로 문서를 전송해야 MTOM example

요청
관련 문제